SetupDiBuildDriverInfoList 函式 (setupapi.h)
SetupDiBuildDriverInfoList 函式會建置與特定裝置相關聯的驅動程式清單,或與裝置資訊集的全域類別驅動程式清單相關聯。
語法
WINSETUPAPI BOOL SetupDiBuildDriverInfoList(
[in] HDEVINFO DeviceInfoSet,
[in, out] PSP_DEVINFO_DATA DeviceInfoData,
[in] DWORD DriverType
);
參數
[in] DeviceInfoSet
設定為包含驅動程式清單的 裝置資訊 句柄,不論是針對所有裝置資訊元素全域,或是特別針對單一裝置信息專案。 裝置資訊集不得包含遠端裝置資訊元素。
[in, out] DeviceInfoData
DeviceInfoSet 中裝置資訊專案的SP_DEVINFO_DATA結構的指標,代表要為其建置驅動程式清單的裝置。 此參數是選擇性的,可以是 NULL。 如果指定此參數,清單就會與指定的裝置相關聯。 如果此參數為 NULL,此列表會與 DeviceInfoSet 的全域類別驅動程式清單相關聯。
如果此裝置的類別因為建置相容的驅動程式清單而更新, 則 DeviceInfoData。ClassGuid 會在傳回時更新。
[in] DriverType
要建置的驅動程式清單類型。 必須為下列其中一個值:
值 | 意義 |
---|---|
|
建置類別驅動程序的清單。 如果 DeviceInfoData 為 NULL,則必須指定此驅動程式清單類型。 |
|
建置相容的驅動程序清單。 如果指定此驅動程式清單類型,DeviceInfoData 不得為 NULL。 |
傳回值
如果函式成功,函式會傳回 TRUE 。 否則,它會傳回 FALSE ,而且可以藉由呼叫 GetLastError 來擷取記錄的錯誤。
備註
裝置資訊集應該適用於本機計算機,因為 SetupDiBuildDriverInfoList 只會在本機電腦上搜尋驅動程式。 如果裝置資訊集適用於遠端計算機,則函式會傳回 TRUE ,但實際上不會更新裝置資訊集的現有驅動程式清單,或如果提供,則為裝置資訊元素提供驅動程式清單。
呼叫端可以在與裝置資訊集相關聯的SP_DEVINSTALL_PARAMS中設定 Flags,或與特定裝置 (DeviceInfoData) 設定旗標,以控制清單的建置方式。 例如,呼叫端可以將 DI_FLAGSEX_ALLOWEXCLUDEDDRVS 旗標設定為包含標示為 [從選取排除] 的驅動程式。
如果驅動程式在 INF 檔案中標示為 ExcludeFromSelect ,或它是整個安裝類別標示為 NoInstallClass 或類別 INF 檔案中 NoUseClass 之裝置的驅動程式,則驅動程式為「從選取排除」。 PnP 裝置的驅動程式通常是「從選取中排除」;不應該手動安裝 PnP 裝置。 若要建置 PnP 裝置的驅動程式檔案清單, SetupDiBuildDriverInfoList 的呼叫端必須設定此旗標。
SP_DEVINSTALL_PARAMS中的 DriverPath 包含包含 INF 檔案的目錄路徑,或是特定 INF 檔案的路徑。 如果已設定DI_ENUMSINGLEINF,DriverPath 會包含單一 INF 檔案的路徑。 如果 DriverPath 為 NULL,此函式會從預設 INF 檔案位置 %SystemRoot%\inf 建置驅動程式清單。
在函式建置指定的驅動程式清單之後,呼叫端可以呼叫 SetupDiEnumDriverInfo 來列舉清單的專案。
如果驅動程式清單與裝置實例 (相關聯,即指定 DeviceInfoData) ,則產生的清單是由與相關聯的裝置實例具有相同類別的驅動程式所組成。 如果這是全域類別驅動程式清單 (,也就是 DriverType是SPDIT_CLASSDRIVER 且 未指定 DeviceInfoData) ,則建置清單時所使用的類別是與裝置資訊集相關聯的類別。 如果裝置資訊集沒有相關聯的類別,則建置清單時會使用所有類別的驅動程式。
另一個線程可以藉由呼叫 SetupDiCancelDriverInfoSearch 終止驅動程式清單的建置。
DeviceInfoSet 只能包含本機計算機上的元素。 此函式只會搜尋本機驅動程式。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 可在 Microsoft Windows 2000 和更新版本的 Windows 中使用。 |
目標平台 | 桌面 |
標頭 | setupapi.h (包括 Setupapi.h) |
程式庫 | Setupapi.lib |
Dll | Setupapi.dll |
API 集合 | ext-ms-win-setupapi-classinstallers-l1-1-1 (於 Windows 8.1) |