如何获取有关特定 USB 的信息? 序列号、制造商编号、产品编号等信息
我可以通过这个函数获取USB的句柄
CreateFile(L"\\\\.\\E:", GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
但是从现在开始我就陷入了困境,HidD_GetHidGuid,仅返回硬盘的详细信息,而 GetRawInputDeviceList 和 GetRawInputDeviceInfo 不允许我获取有关 USB 的信息(按名称,如使用函数 CreateFile 的示例)
当我尝试以下代码时:
DeviceIoControl(HandelUsb, IOCTL_DISK_GET_DRIVE_GEOMETRY, NULL, 0, &dg, sizeof(DISK_GEOMETRY),&dwReturned, NULL);
MEDIA_SERIAL_NUMBER_DATA msnd = { 0 };
DeviceIoControl(HandelUsb, IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER, NULL, 0, &msnd,sizeof(MEDIA_SERIAL_NUMBER_DATA), &dwReturned, NULL);
我总是得到序列号 0 ... (我在不同的USB设备上尝试过)
最佳答案
您可以使用SetupDi功能。看看SetupDiGetClassDevs函数将返回所有连接的设备。对于 USB 设备,请使用“USB”枚举器。
关于c - 如何以编程方式实现特定 USB 设备的序列号和其他详细信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032292/