Instroduction
在Windows系统中提供一组有用的函数来撷取以安装设备(Device)的信息与增加或解除设备(Device)的安装。在本文中,我将显示如何使用SetupDIXXX与CM_XXX 等API来列举本机上的设备。
在范例程序中并无复杂的画面,只有一个简单的TreeView与ListView控件。TreeLivew控件用来显示所有安装的设备名称,ListView控件则用来显示在TreeView控件中所指定项目的相关信息。所有设备的相关信息(例如:名称,资源与图示等)都是从SetupDiXXX API中所取得的。
SetupDiXXX
设定安装程序接口
(Setup Application Programming Interface)
提供一组函数来让您的设定安装程序能执行安装的动作或取得设备的相关信息,类别
(Class)
与它的
GUID
值。
首先要取的所列举的设备的位图
(Bitmap)
,我们可以呼叫以下的函数:
SetupDiGetClassImageList([OUT]CLASSIMAGELIST_DATA ClassImageListData);
呼叫这个函数会取得每一个已安装设备的位图并建立位图串行。
SetupDiDestroyClassImageList([IN] PSP_CLASSIMAGELIST_DATA
ClassImageListData);
呼叫这个函数会释放之前呼叫
SetupDiGetClassImageList
所占有的资源。
SetupDiGetClassImageIndex([IN] PSP_CLASSIMAGELIST_DATA
ClassImageListData,
[IN] LPGUID ClassGuid,
[OUT] PINT ImageIndex);
呼叫这个函数会取得每一个已安装设备的位图的索引值。
hDevInfo = SetupDiGetClassDevs(0L, 0L, _hDlg, DIGCF_PRESENT |
DIGCF_ALLCLASSES | DIGCF_PROFILE);
取得设备的信息。首次呼叫时,第一个参数与第二个参数将它们设为
”0
”
,而第三个参数则设定
DIGCF_ALLCLASSES
旗标,设定此旗标代表要取得所有设备的信息。如果有设定此旗标此时第一个参数将会被忽略。<