C++实现获取设备管理器中的设备信息

 C++实现获取设备管理器中的设备信息,基本调用了windows API函数,除此之外,还引用了setupapi.lib库,代码如下所示:

// PrintDeviceInfo.cpp : 定义控制台应用程序的入口点。

//

#include <stdio.h>

#include <locale.h>

#include <Windows.h>

#include <setupapi.h>

#pragma comment(lib, "setupapi.lib")

void  PrintDevicesInfo1()

{

HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES);

if (hDevInfo == INVALID_HANDLE_VALUE)

{

printf("SetupDiGetClassDevs Err:%d", GetLastError());

return;

};

SP_CLASSIMAGELIST_DATA _spImageData = { 0 };

_spImageData.cbSize = sizeof(SP_CLASSIMAGELIST_DATA);

SetupDiGetClassImageList(&_spImageData);

SP_DEVINFO_DATA spDevInfoData = { 0 };

spDevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);

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

{

char  szBuf[MAX_PATH] = { 0 };

int  wImageIdx = 0;

short  wItem = 0;

if (!SetupDiGetDeviceRegistryPropertyA(hDevInfo, &spDevInfoData, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0))

{

continue;

};

if (SetupDiGetClassImageIndex(&_spImageData, &spDevInfoData.ClassGuid, &wImageIdx))

{

char  szName[MAX_PATH] = { 0 };

DWORD  dwRequireSize;

if (!SetupDiGetClassDescription(&spDevInfoData.ClassGuid, (PWSTR)szBuf, MAX_PATH, &dwRequireSize))

{

continue;

};

wprintf(L"Class:%s\r\n", szBuf);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_57661075

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值