因为项目需要,需要遍历设备管理器,找了很多资料,结果发现还是使用SetupAPI来实现比较靠谱,其本质是读取注册表的内容,当然也可以通过遍历注册表来实现,当然这样会比较麻烦。
/*********************************
* 枚举所有设备信息
* @int index[in] 枚举设备时的序号
* @LPTSTR lpDeviceClassName[out] 设备的Class,对应注册表中的Class的值
* @LPTSTR lpDeviceClassDesc[out] 设备描述,对应注册表的默认值
* @BOOL* bDevicePresent 设备是否存在
*********************************/
BOOL CGetComputerInfo::EnumDeviceClasses(int index,LPTSTR lpDeviceClassName,
LPTSTR lpDeviceClassDesc,BOOL* bDevicePresent)
{
BOOL bRet = FALSE;
GUID ClassGuid;
HDEVINFO hNewDeviceInfoSet = INVALID_HANDLE_VALUE;//设备信息集
int result;
BOOL bResNam = FALSE;
LPTSTR lpClassName = NULL;
HKEY hKeyClass = NULL;
ULONG RequiredSize = MAX_PATH;
WCHAR* name = NULL;
__try
{
ZeroMemory(&ClassGuid, sizeof(GUID));
//按index顺序枚举设备列表,获取设备UID
//对应注册表路径:"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\"
result = CM_En

本文介绍了如何在项目中使用SetupAPI库遍历设备管理器,此方法基于读取注册表信息,相较于直接遍历注册表更为简便。

555

被折叠的 条评论
为什么被折叠?



