vc获取windows设备枚举设备信息
来源:互联网 发布:mac修容粉 编辑:程序博客网 时间:2024/06/07 03:19
#include "stdio.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);short wIndex = 0;SP_DEVINFO_DATA spDevInfoData = {0};spDevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);while (1){if (SetupDiEnumDeviceInfo(hDevInfo, wIndex, &spDevInfoData)){TCHAR szBuf[MAX_PATH] = {0};int wImageIdx = 0;short wItem = 0;if (!SetupDiGetDeviceRegistryPropertyA(hDevInfo, &spDevInfoData, SPDRP_CLASS, NULL, (PBYTE)szBuf, MAX_PATH, 0)){wIndex++;continue;};if (SetupDiGetClassImageIndex(&_spImageData, &spDevInfoData.ClassGuid, &wImageIdx)){char szName[MAX_PATH] = {0};DWORD dwRequireSize;//if (!SetupDiGetClassDescription(&spDevInfoData.ClassGuid, szBuf, MAX_PATH, &dwRequireSize)){wIndex++;continue;};printf("Class:%s\r\n", szBuf);if (SetupDiGetDeviceRegistryProperty(hDevInfo,&spDevInfoData, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szName, MAX_PATH - 1, 0)){printf("Device:%s\r\n\r\n", szName);}else if (SetupDiGetDeviceRegistryProperty(hDevInfo,&spDevInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szName, MAX_PATH - 1, 0)){printf("Device:%s\r\n\r\n", szName);};};}elsebreak;wIndex++;};SetupDiDestroyClassImageList(&_spImageData);}int PrintDevicesInfo2(){ HDEVINFO hDevInfo; SP_DEVINFO_DATA DeviceInfoData; DWORD i; // 得到所有设备 HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, 0, 0, DIGCF_PRESENT | DIGCF_ALLCLASSES ); if (hDevInfo == INVALID_HANDLE_VALUE) return 0; // 循环列举 DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA); for (i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++) { char szClassBuf[MAX_PATH] = { 0 }; char szDescBuf[MAX_PATH] = { 0 }; // 获取类名 if (!SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_CLASS, NULL, (PBYTE)szClassBuf, MAX_PATH - 1, NULL)) continue; //获取设备描述信息 if (!SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC, NULL, (PBYTE)szDescBuf, MAX_PATH - 1, NULL)) continue; printf("Class:%s\r\nDesc:%s\r\n\r\n", szClassBuf, szDescBuf); } // 释放 SetupDiDestroyDeviceInfoList(hDevInfo);}int main(int argc, TCHAR* argv[]){ PrintDevicesInfo1(); PrintDevicesInfo2();return 0;}
阅读全文
0 0
- vc获取windows设备枚举设备信息
- VC获取设备信息
- VC获取usb设备信息
- 获取设备管理器的信息 - VC
- [vc++]枚举USB设备
- Android设备信息获取
- android 获取设备信息
- 获取手机设备信息
- Android 获取设备信息
- android获取设备信息
- 获取设备信息
- 获取设备显示信息
- 获取android设备信息
- 获取手机设备信息
- 获取设备信息
- android 获取设备信息
- 获取Android设备信息
- android 获取设备信息
- (转)解决机器学习问题有通法!看这一篇就够了!
- C++单个类的所有对象是否共享虚函数表的验证
- 5.go slice, 切片与数组, map
- 7-18 日期格式化(5 分)
- Tomcat热部署方法(3种)
- vc获取windows设备枚举设备信息
- lsof命令、pidof命令和pgrep命令
- yum下载rpm包以及相关依赖包
- 快速排序Java实现--最简单的实现方法
- ES04--ElasticSearch vs Solr 优缺点
- Retrofit自定义Converter,获取原始请求数据,实现自定义解析
- Android 7.0后SettingProvider ContactsProvider TelephonyProvider MediaProvider数据库位置
- Recyclerview调用notifyDataSetChanged()方法无效原因
- 敏捷开发