枚举pc硬件设备并获取相关信息

#include <windows.h>

#include <setupapi.h>

#include <devguid.h>

#pragma comment(lib, "setupapi")

void GetDeviceInfo()

{

//得到设备信息集

HDEVINFO hDevInfo = SetupDiGetClassDevs(

(LPGUID)&GUID_DEVCLASS_DISPLAY,

NULL,

0,

DIGCF_PRESENT);

       //DIGCF_PRESENT - 只返回当前存在的设备。
  //DIGCF_ALLCLASSES - 返回所有已安装的设备。如果这个标志设置了,ClassGuid参数将被忽略。
  //DIGCF_PROFILE - 只返回当前硬件配置文件中的设备。

if (hDevInfo == INVALID_HANDLE_VALUE)

{

printf("Error! SetupDiGetClassDevs() return %d\n", GetLastError());

SetupDiDestroyDeviceInfoList(hDevInfo);

return;

}

 

TCHAR szBuf[MAX_PATH];

SP_DEVINFO_DATA spDevInfoData = { sizeof(SP_DEVINFO_DATA) };

 

// 开始列举设备

for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &spDevInfoData); i++)

{

// 得到设备类描述

if (SetupDiGetClassDescription(

&spDevInfoData.ClassGuid,

szBuf,

MAX_PATH,

NULL))

{

printf("\n%03d : ClassDescription = %s\n", i, szBuf);

}

 

// 得到设备实例的唯一标识ID(由注册表路径组成)

if (SetupDiGetDeviceInstanceId(

hDevInfo,

&spDevInfoData,

szBuf,

MAX_PATH,

NULL))

{

printf("%03d : InstanceId = %s\n", i, szBuf);

}

 

// 得到设备名称

if (SetupDiGetDeviceRegistryProperty(

hDevInfo,

&spDevInfoData,

SPDRP_DEVICEDESC,

NULL,

(PBYTE)szBuf,

MAX_PATH,

NULL))

{

MessageBox(NULL, szBuf, 0, MB_OK);

printf("%03d : DeviceDesc = %s\n", i, szBuf);

}

 

// 得到设备型号

if (SetupDiGetDeviceRegistryProperty(

hDevInfo,

&spDevInfoData,

SPDRP_FRIENDLYNAME,

NULL,

(PBYTE)szBuf,

MAX_PATH,

NULL))

{

printf("%03d : FriendName = %s\n", i, szBuf);

}

 

// 得到设备在注册表中的子路径

if (SetupDiGetDeviceRegistryProperty(

hDevInfo,

&spDevInfoData,

SPDRP_DRIVER,

NULL,

(PBYTE)szBuf,

MAX_PATH,

NULL))

{

printf("%03d : Regedit Path = %s\n", i, szBuf);

}

}

//printf("\nCdrom count = %d\n", i);

getchar();

return;

}

/*

GUID_DEVCLASS_FDC软盘控制器

 

GUID_DEVCLASS_DISPLAY显示卡

 

GUID_DEVCLASS_CDROM光驱

 

GUID_DEVCLASS_KEYBOARD键盘

 

GUID_DEVCLASS_COMPUTER计算机

 

GUID_DEVCLASS_SYSTEM系统

 

GUID_DEVCLASS_DISKDRIVE磁盘驱动器

 

GUID_DEVCLASS_MEDIA声音、视频和游戏控制器

 

GUID_DEVCLASS_MODEMMODEM

 

GUID_DEVCLASS_MOUSE鼠标和其他指针设备

 

GUID_DEVCLASS_NET网络设备器

 

GUID_DEVCLASS_USB通用串行总线控制器

 

GUID_DEVCLASS_FLOPPYDISK软盘驱动器

 

GUID_DEVCLASS_UNKNOWN未知设备

 

GUID_DEVCLASS_SCSIADAPTERSCSI 和 RAID 控制器

 

GUID_DEVCLASS_HDCIDE ATA/ATAPI 控制器

 

GUID_DEVCLASS_PORTS端口(COM 和 LPT)

 

GUID_DEVCLASS_MONITOR监视器

*/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值