SetupDiCallClassInstaller 函式 (setupapi.h)
SetupDiCallClassInstaller 函式會呼叫適當的類別安裝程式,以及任何已註冊的共同安裝程式,以及指定的安裝要求 (DIF 程式代碼) 。
語法
WINSETUPAPI BOOL SetupDiCallClassInstaller(
[in] DI_FUNCTION InstallFunction,
[in] HDEVINFO DeviceInfoSet,
[in, optional] PSP_DEVINFO_DATA DeviceInfoData
);
參數
[in] InstallFunction
裝置安裝要求 (DIF 要求) 傳遞至共同安裝程式和類別安裝程式。 DIF 程式代碼的格式 為 DIF_XXX ,且定義於 Setupapi.h 中。 如需詳細資訊,請參閱 裝置安裝函式代碼 。
[in] DeviceInfoSet
本機電腦的 裝置資訊集 句柄。 此集合包含裝置安裝專案,表示執行指定安裝函式的裝置。
[in, optional] DeviceInfoData
SP_DEVINFO_DATA 結構的指標,指定 DeviceInfoSet 中的裝置資訊專案,代表要為其執行指定安裝函式的裝置。 此參數是選擇性的,而且可以設定為 NULL。 如果指定此參數, SetupDiCallClassInstaller 會在 DeviceInfoData 元素上執行指定的函式。 如果 DeviceInfoData 為 NULL,SetupDiCallClassInstaller 會呼叫與 DeviceInfoSet 相關聯之安裝程式類別的安裝程式。
傳回值
如果函式成功,函式會傳回 TRUE 。 否則,它會傳回 FALSE ,而且可以藉由呼叫 GetLastError 來擷取記錄的錯誤。
當 GetLastError 傳回 ERROR_IN_WOW64時,這表示呼叫的應用程式是嘗試在 64 位環境中執行的 32 位應用程式,但不允許。
備註
SetupDiCallClassInstaller 會呼叫類別安裝程式,以及針對裝置或 裝置安裝類別註冊的任何共同安裝程式。 如果尚未載入安裝程式,此函式會載入安裝程式。 如果有默認處理程式,而且安裝程式傳回狀態,表示應該呼叫默認處理程式,函式也會呼叫 DIF 要求的默認處理程式。
裝置安裝應用程式 會使用各種 裝置安裝函式代碼 呼叫此函式, (DIF 程式代碼) 。 函式可確保針對指定的 DIF 要求呼叫所有適當的安裝程式和預設處理程式。 如需詳細資訊,請參閱 處理 DIF 程式代碼。
SetupDiCallClassInstaller 傳回 TRUE 之後,裝置安裝應用程式必須呼叫 SetupDiGetDeviceInstallParams 以取得SP_DEVINSTALL_PARAMS結構。 如果已設定結構的 DI_NEEDREBOOT 或 DI_NEEDRESTART 旗標,呼叫端必須提示使用者重新啟動系統。 例如,呼叫端可以藉由呼叫 SetupPromptReboot 來執行此動作。
不過,請注意,裝置安裝應用程式應該最多要求系統重新啟動一次。 因此,任何建立 SetupDiCallClassInstaller 和 SetupDiGetDeviceInstallParams 呼叫的裝置安裝應用程式,都應該在每個呼叫之後儲存 DI_NEEDREBOOT 和 DI_NEEDRESTART 旗標。 不過,只有在最後一次呼叫傳回之後,才會提示使用者。
為了回應 SetupDiCallClassInstaller 所提供的 DIF 程式代碼,類別安裝程式和共同安裝程式可能會執行需要重新啟動系統的作業。 在這種情況下,安裝程式或共同安裝程式應該執行下列動作:
- 呼叫 SetupDiGetDeviceInstallParams 以取得 SP_DEVINSTALL_PARAMS 結構。
- 在結構的 Flags 成員中設定DI_NEEDREBOOT或DI_NEEDRESTART旗標。
- 呼叫 SetupDiSetDeviceInstallParams,並提供更新 的 SP_DEVINSTALL_PARAMS 結構,以儲存修訂 的 Flags 成員。
DeviceInfoSet 所指定的裝置信息必須只包含本機電腦上的裝置元素。
如需共同安裝程式設計和作業的相關信息,請參閱 撰寫共同安裝程式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Microsoft Windows 2000 和更新版本的 Windows 中使用。 |
目標平台 | 桌面 |
標頭 | setupapi.h (包括 Setupapi.h) |
程式庫 | Setupapi.lib |
Dll | Setupapi.dll |
API 集合 | ext-ms-win-setupapi-classinstallers-l1-1-0 (於 Windows 8) |