SetupDiGetClassDevs函式詳解
SetupDiGetClassDevs函式
SetupDiGetClassDevs 函式返回一個包含本機上所有被請求的裝置資訊的裝置資訊集控制程式碼。
語法
//C++:
HDEVINFO SetupDiGetClassDevs(
_In_opt_ const GUID *ClassGuid,
_In_opt_ PCTSTR Enumerator,
_In_opt_ HWND hwndParent,
_In_ DWORD Flags
);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
引數
ClassGuid[輸入引數,可選的]
一個指向GUID的指標,此GUID可標識一個裝置安裝類或一個裝置介面類。這個指標是可選的,並且可以為NULL。更多關於ClassGuid賦值問題,請參考備註部分。
Enumerator[輸入引數,可選的]
一個指向以空字元結束的字串的指標,指定了:
-
即插即用裝置列舉樹的ID,此ID既可以是全域性唯一識別符號(GUID)也可以是符號名稱。比如:“PCI”可以用於指定PCI的PnP值,符號名稱則包括像“USB”,“PCMCIA”和“SCSI”這樣的Pnp值。
-
一個PnP裝置控制程式碼ID。當指定了一個PnP裝置控制程式碼ID時,DIGCF_DEVICEINTERFACE必須在Flag引數上被設定。
hwndParent[輸入引數,可選的]
用於與在裝置資訊集中安裝裝置例項相關聯的使用者介面的頂級視窗控制程式碼。該控制程式碼是可選的,並且可以為NULL。
Flags[輸入引數]
Flags是一個DWORD型別的變數,通過此引數來過濾指定的裝置資訊集中的裝置。此引數可以是以下標誌位中的一個或多個的按位或組合,更多有關標誌位組合的資訊,請參考備註部分。
DIGCF_ALLCLASSES
返回所有已安裝裝置的列表或所有裝置介面類。
DIGCF_DEVICEINTERFACE
返回支援指定裝置介面類的裝置。如果Enumerators引數制定了裝置的例項ID,那麼必須在Flags引數中設定此標誌位。
DIGCF_DEFAULT
對於指定的裝置介面類,只返回與系統預設裝置介面相關聯的裝置(如果已設定的話)。
DIGCF_PRESENT
只返回當前系統中存在的(已連線)裝置。
DIGCF_PROFILE
只返回當前硬體列表中的一部分裝置。
返回值
如果呼叫成功,SetupDiGetClassDevs將返回一個裝置資訊集的控制程式碼,該控制程式碼包含了與所提供引數所匹配的所有裝置。如果呼叫失敗,函式返回INVALID_HANDLE_VALUE。要進一步獲取錯誤資訊,請呼叫GetLastError。
備註
當呼叫完此函式並處理完相應資料後,必須呼叫SetupDiDestroyDeviceInfoList函。
呼叫SetupDiGetClassDevsEx來檢索遠端計算機上的裝置。
裝置安裝類控制選項
使用以下過濾選項來控制SetupDiGetClassDevs是否返回所有裝置:
- 要返回所有裝置,設定標誌位DIGCF_ALLCLASSES,並將ClassGuid設定為NULL。
- 如果只是返回指定裝置,不要動DIGCF_ALLCLASSES標誌位,而是應該使用CLassGuid提供的Guid。
此外,還可以通過下面的組合來進一步控制裝置的過濾條件:
- 設定DIGCF_PRESENT標誌位來返回系統中當前已連線裝置。
- 設定DIGCF_PROFILE標誌位來返回當前硬體列表配置檔案中的裝置。
- 要想返回一個PnP列舉裝置,使用Enumerator引數,並提供其GUID或符號名稱。如果Enumerator為NULL,SetupDiGetClassDevs返回所有PnP列舉裝置。
裝置介面類控制選項
使用以下過濾選項來控制SetupDiGetClassDevs是否返回支援任何裝置介面類的裝置或僅返回支援指定裝置介面類的裝置:
- 要返回支援任何類介面的裝置,請同時設定DIGCF_DEVICEINTERFACE和DIGCF_ALLCLASSES標誌位,並將ClassGuid設定為NULL。該函式將裝置資訊設定為表示這種裝置的裝置資訊元素,然後向裝置資訊元素新增包含裝置支援的所有裝置介面的裝置介面列表。
相關文章
- 詳解Java函式式介面Java函式
- mysql常用函式詳解MySql函式
- 箭頭函式詳解函式
- python socket函式詳解Python函式
- 建構函式詳解函式
- 函式引數詳解函式
- 3.11 solidity 函式詳解Solid函式
- fcntl函式用法詳解函式
- ORALCE函式:LAG()和LEAD() 分析函式詳解函式
- Oracle分析函式之開窗函式over()詳解Oracle函式
- Oracle中pivot函式詳解Oracle函式
- Python中Numpy函式詳解Python函式
- Java建構函式詳解Java函式
- TypeScript中的函式詳解TypeScript函式
- 箭頭函式this指向詳解函式
- PHP BC Math 函式詳解PHP函式
- vimscript-expand函式詳解函式
- jquery.ajaxSetup()函式詳解jQuery函式
- Python正規表示式 findall函式詳解Python函式
- re模組 函式模式詳解函式模式
- MySQL中count(*)函式原理詳解MySql函式
- 詳細講解函式呼叫原理函式
- JavaScript函式柯里化詳解JavaScript函式
- 匿名函式(lambda)詳解 C++函式C++
- SQL中常用的字串LEFT函式和RIGHT函式詳解!SQL字串函式
- vue3函式setUp和reactive函式詳細講解Vue函式React
- 函式詳解 | VLOOKUP 函式:最為人熟知的偵探函式
- 人工智慧---神經網路啟用函式恆等函式、sigmoid函式、softmax函式詳解人工智慧神經網路函式Sigmoid
- js正規表示式常用函式詳解(續)JS函式
- python函式每日一講 - float函式型別轉換詳解Python函式型別
- PHP中debug_backtrace函式詳解PHP函式
- Python隨機函式random使用詳解Python隨機函式random
- 閉包函式,裝飾器詳解函式
- 詳解SQL操作的視窗函式SQL函式
- CSS3 animation – steps 函式詳解CSSS3函式
- Hue-hive sql常用函式詳解HiveSQL函式
- 陣列,函式與指標 詳解陣列函式指標
- C 語言回撥函式詳解函式