2,640
社区成员
发帖
与我相关
我的任务
分享
//得到设备实例的唯一标识ID(由注册表路径组成)
if (SetupDiGetDeviceInstanceId(hDevInfo, &spDevInfoData, szBuf, MAX_PATH, NULL))
{
sTmp.Format(_T("%03d : InstanceId = %s\n"), i, szBuf);
sTotal += sTmp;
}
//获取设备信息集
HDEVINFO hDevInfo = SetupDiGetClassDevs((LPGUID)&GUID_DEVCLASS_USB, NULL, 0, DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
SetupDiDestroyDeviceInfoList(hDevInfo);
return FALSE;
}
TCHAR szBuf[MAX_PATH];
SP_DEVINFO_DATA spDevInfoData = {sizeof(SP_DEVINFO_DATA)};
CString sTmp, sTotal;
//开始列举设备
for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++)
{
//得到设备类描述
if (SetupDiGetClassDescription(&spDevInfoData.ClassGuid, szBuf, MAX_PATH, NULL))
{
sTmp.Format(_T("\n%03d : ClassDescription = %s\n"), i, szBuf);
sTotal += sTmp;
}
//得到设备实例的唯一标识ID(由注册表路径组成)
if (SetupDiGetDeviceInstanceId(hDevInfo, &spDevInfoData, szBuf, MAX_PATH, NULL))
{
sTmp.Format(_T("%03d : InstanceId = %s\n"), i, szBuf);
sTotal += sTmp;
}
//得到设备名称
if (SetupDiGetDeviceRegistryProperty(
hDevInfo, &spDevInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szBuf, MAX_PATH, NULL))
{
sTmp.Format(_T("%03d : DeviceDesc = %s\n"), i, szBuf);
sTotal += sTmp;
}
//得到设备型号
if (SetupDiGetDeviceRegistryProperty(
hDevInfo, &spDevInfoData, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szBuf, MAX_PATH, NULL))
{
sTmp.Format(_T("%03d : FriendName = %s\n"), i, szBuf);
sTotal += sTmp;
}
//得到设备在注册表中的子路径
if (SetupDiGetDeviceRegistryProperty(
hDevInfo, &spDevInfoData, SPDRP_DRIVER, NULL, (PBYTE)szBuf, MAX_PATH, NULL))
{
sTmp.Format(_T("%03d : Regedit Path = %s\n"), i, szBuf);
sTotal += sTmp;
}
}
AfxMessageBox(sTotal);