C++ 获取所有USB设备 列举所有USB设备 列举所有USB HUB
来源:互联网 发布:阿里云怎么修改手机号 编辑:程序博客网 时间:2024/05/16 07:52
C++ 获取所有USB设备 列举所有USB设备 列举所有USB HUB,有需要的朋友可以参考下。
最近在开发USB相关的内容,在此记录一下列举USB设备的代码(还可以列举USB HUB)。
由于直接使用系统定义的GUID有问题,所以在头文件中自己需要定义相关的GUID:
头文件代码如下(定义了USB DEVICE 和 USB HUB两种的GUID,如果其他请看msdn):
#pragma once#include "resource.h"#include <stdio.h>#include <windows.h>#include <SetupAPI.h>#include <iostream>#include <Usbiodef.h>#include <Usbioctl.h>#include <devguid.h>#include <winioctl.h>#include <INITGUID.h>#include <Dbt.h>#include <map>#include <wchar.h>#pragma comment(lib, "Winmm.lib")#pragma comment(lib, "setupapi.lib")DEFINE_GUID(GUID_DEVINTERFACE_USB_DEVICE,0xA5DCBF10L, 0x6530, 0x11D2, 0x90, 0x1F, 0x00, 0xC0, 0x4F, 0xB9, 0x51, 0xED);#define GUID_CLASS_USB_DEVICE GUID_DEVINTERFACE_USB_DEVICE DEFINE_GUID(GUID_DEVINTERFACE_USB_HUB,0xf18a0e88, 0xc30c, 0x11d0, 0x88, 0x15, 0x00, 0xa0, 0xc9, 0x06, 0xbe, 0xd8);#defineGUID_CLASS_USB_HUB GUID_DEVINTERFACE_USB_HUB
函数代码如下,代码中使用的GUID_CLASS_USB_HUB,可以用GUID_CLASS_USB_DEVICE来获取连接的所有USB设备:
void getDevices(){LPGUID lpGuid = (LPGUID)&GUID_CLASS_USB_HUB;//int INTERFACE_DETAIL_SIZE = 1024;int nCount = 0;HDEVINFO info = SetupDiGetClassDevs(lpGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);//enumerate device information DWORD required_size = 0;int i;SP_DEVINFO_DATA DeviceInfoData = { sizeof(DeviceInfoData) };DWORD DataT;DWORD buffersize = 1024;DWORD req_bufsize = 0;for (i = 0; SetupDiEnumDeviceInfo(info, i, &DeviceInfoData); i++){WCHAR *did = new WCHAR[1024];WCHAR *locid = new WCHAR[1024];WCHAR *locdesc = new WCHAR[1024];//get device description informationif (!SetupDiGetDeviceInstanceId(info, &DeviceInfoData, (PTSTR)did, buffersize, &req_bufsize))continue;if (!SetupDiGetDeviceRegistryPropertyW(info, &DeviceInfoData, SPDRP_LOCATION_PATHS, &DataT, (LPBYTE)locid, buffersize, &req_bufsize))continue;if (!SetupDiGetDeviceRegistryPropertyW(info, &DeviceInfoData, SPDRP_LOCATION_INFORMATION, &DataT, (LPBYTE)locdesc, buffersize, &req_bufsize))continue;}SetupDiDestroyDeviceInfoList(info);}上述代码中,可以更改GUID来获取USB设备的信息。上述代码利用SetupDiGetDeviceInstanceID函数获取DeviceID,通过SetupDiGetDeviceRegistryPropertyW函数来获取相关属性,示例中获取了Location path和location Info,也可以获取其他的信息,相关信息都在这里定义。
阅读全文
0 0
- C++ 获取所有USB设备 列举所有USB设备 列举所有USB HUB
- C++ 获取所有USB设备 列举所有USB设备 列举所有USB HUB
- 枚举系统中所有USB HUB设备
- 列举 usb 设备的信息
- 枚举所有USB设备代码
- lsusb 列举linux USB设备命令
- 所有的USB C 设备都需要CC芯片吗
- 应用程序中如何枚举系统所有USB设备
- 用SetDi系列api获得所有usb设备
- WinUSB - 微软为所有 USB 设备提供的常规驱动程序
- WinUSB - 微软为所有 USB 设备提供的常规驱动程序
- linux查看所有串口和usb设备方法
- 通过shell检查usb总线下的所有设备
- Windows下USB磁盘开发系列二:枚举系统中所有USB设备
- Ubuntu14.04 USB接口有电,但是 所有的USB设备不能使用解决办法
- 列举 所有的 culture
- 列举所有进程
- 获取usb设备
- android中如何实现进入一个界面不做任何动作过10秒钟(有操作从新计时)自动跳转到待机activity,点击待机界面回到原来的界面
- 龙芯推出新一代处理器 离Intel还有多大差距
- 40个Java多线程问题总结
- IOS 设备信息和系统信息获取大全
- Android ADB工具-管理设备 app(二)
- C++ 获取所有USB设备 列举所有USB设备 列举所有USB HUB
- JS中URL中的特殊字符问题:escape,encodeURI,encodeURIComponent(转)
- iOS_数学函数Math Functions(计算,取整,平方立方,等等)
- H264中的SPS、PPS提取与作用
- Redis 缓存 + Spring 的集成示例
- 事件通知实现界面间的数据交互
- mysql 数据导入导出
- 自注册DM(五)中国移动CMCC移动DM适配指南和注意事项和常见问题分析
- VR不仅用于游戏!HTC Vive显示美国市长VR用于城市规划