使用SetupDI* API列举系统中的设备

本文详细介绍了如何利用SetupDI* API来枚举和管理计算机上的设备,包括获取设备信息、显示在ListView控件中,适用于开发设备管理应用和服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Instroduction
在Windows系统中提供一组有用的函数来撷取以安装设备(Device)的信息与增加或解除设备(Device)的安装。在本文中,我将显示如何使用SetupDIXXX与CM_XXX 等API来列举本机上的设备。
在范例程序中并无复杂的画面,只有一个简单的TreeViewListView控件。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 旗标,设定此旗标代表要取得所有设备的信息。如果有设定此旗标此时第一个参数将会被忽略。<
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值