以下是使用 SetupAPI 所提供的 一般安裝函 式 (SetupXxx) 和 裝置安裝函 式 (SetupDiXxx) 的指導方針:
絕對不要假設安裝檔案內容沒有錯誤,或您提供的安裝檔案尚未遭到惡意修改。 因此,請一律驗證從 SetupAPI 函式接收的所有資訊。 確認字串長度有效、緩衝區大小有效,且索引值在有效範圍內。
在Microsoft Windows XP 和更新版本的系統上撰寫安裝應用程式時,您可以呼叫 SetupVerifyInfFile (如 Windows SDK 檔案中所述),以驗證數位簽署的 INF 檔案尚未修改。
一律測試每個 SetupAPI 函式的傳回值。 如果函式失敗,您的程式代碼應該呼叫 GetLastError ,以取得識別失敗的錯誤碼。 傳回的錯誤碼可以在 Winerror.h 或 Setupapi.h 中定義。 使用 FORMAT_MESSAGE_FROM_SYSTEM 呼叫 FormatMessage 以建立文字顯示之前,請一律使用 HRESULT_FROM_SETUPAPI 巨集 (定義於 Winerror.h) 將傳回值轉換為 HRESULT 值。 如果 SetupAPI 函式成功傳回,您的程式代碼不得呼叫 GetLastError。 ( GetLastError 和 FormatMessage 函式以及系統錯誤碼,如 Windows SDK 檔中所述。
如果 SetupAPI 函式傳回句柄,您的程式代碼必須檢查傳回值INVALID_HANDLE_VALUE。 這類函式不會傳回 NULL。
請注意 ,SetupDiXxx 和 SetupXxx 函式之間的下列差異,可讓呼叫端查詢所需的緩衝區大小:
如果 SetupDiXxx 函式的呼叫端進行這類查詢, GetLastError 一律會傳回ERROR_INSUFFICIENT_BUFFER。
如果 SetupXxx 函式的呼叫端進行這類查詢,如果未指定緩衝區長度, GetLastError 會傳回NO_ERROR,如果指定的緩衝區太小,則傳回ERROR_INSUFFICIENT_BUFFER。