Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Di seguito sono riportate le linee guida per l'uso delle funzioni Setup generali (SetupXxx) e delle funzioni di installazione dei dispositivi (SetupDiXxx) fornite da SetupAPI:
Non presupporre mai che il contenuto del file di installazione sia privo di errori o che un file di installazione che hai fornito non sia stato modificato in modo dannoso. Pertanto, convalidare sempre tutte le informazioni ricevute dalle funzioni SetupAPI. Verificare che le stringhe siano di lunghezza valida, che i buffer siano di dimensioni valide e che i valori di indice siano compresi in un intervallo valido.
Quando si scrivono applicazioni di installazione per installazioni in sistemi Microsoft Windows XP e versioni successive, è possibile chiamare SetupVerifyInfFile (descritto nella documentazione di Windows SDK), che verifica che un file INF con firma digitale non sia stato modificato.
Verificare sempre il valore restituito di ogni funzione SetupAPI. Se la funzione non riesce, il codice deve chiamare GetLastError per ottenere un codice di errore che identifica l'errore. I codici di errore restituiti possono essere definiti in Winerror.h o Setupapi.h. Prima di chiamare FormatMessage con FORMAT_MESSAGE_FROM_SYSTEM per creare una visualizzazione di testo, usare sempre la macro HRESULT_FROM_SETUPAPI (definita in Winerror.h) per convertire il valore restituito in un valore HRESULT. Se una funzione SetupAPI ha esito positivo, il codice non deve chiamare GetLastError. Le funzioni GetLastError e FormatMessage, insieme ai codici di errore di sistema, sono descritte nella documentazione di Windows SDK.
Se una funzione SetupAPI restituisce un handle, il codice deve verificare se il valore restituito è INVALID_HANDLE_VALUE. Tali funzioni non restituiscono NULL.
Tenere presente la differenza seguente tra le funzioni SetupDiXxx e SetupXxx che consentono a un chiamante di eseguire query sulle dimensioni necessarie di un buffer:
Se il chiamante di una funzione SetupDiXxx esegue tale query, GetLastError restituisce sempre ERROR_INSUFFICIENT_BUFFER.
Se il chiamante di una funzione SetupXxx esegue tale query, GetLastError restituisce NO_ERROR se non è stata specificata alcuna lunghezza del buffer o ERROR_INSUFFICIENT_BUFFER se è stato specificato un buffer troppo piccolo.