Windows XP:如何从磁盘驱动器号获取USB设备位置
Windows XP : How to Get USB device location from the disk drive letter
当我们连接USB大容量存储设备时,在设备管理器中创建两个条目:一个在磁盘驱动器下,另一个在USB下作为USB大容量存储。
HDEVINFO hDevInfo = SetupDiGetClassDevs(
(LPGUID) &GUID_DEVCLASS_DISKDRIVE, // USB Device Class
NULL,
NULL,
DIGCF_PRESENT);
这将列出磁盘驱动器
下的条目 HDEVINFO hDevInfo = SetupDiGetClassDevs(
(LPGUID) &GUID_DEVCLASS_USB, // USB Device Class
NULL,
NULL,
DIGCF_PRESENT);
将列出所有USB设备。
是否有办法映射从上述两次调用获得的项?我检查了所有使用SetupDiEnumDeviceInfo
的设备的设备实例id,但是id不匹配
我需要映射这两个条目的原因是因为我必须获得USB设备位置(集线器和端口)编号
谢谢Praveen
驱动器号与驱动器上的卷/分区相关联。当你在Windows中使用"安全断开连接"选项时,你会看到这一点,它会列出所有将被删除的实体。
检查设备父节点
可以使用GUID_DEVINTERFACE_DISK枚举物理磁盘设备。使用:
SetupDiGetClassDevs
(
&GUID_DEVINTERFACE_DISK,
NULL,
NULL,
DIGCF_PRESENT | DIGCF_DEVICEINTERFACE
)
然后,查询存储适配器描述符。
STORAGE_PROPERTY_QUERY storageProperty;
//...setup
PSTORAGE_ADAPTER_DESCRIPTOR pstorageAdapterDesc;
pstorageAdapterDesc = (PSTORAGE_ADAPTER_DESCRIPTOR)LocallAlloc( LPTR, storageDescHeader.Size );
DeviceIoControl
(
handle,
IOCTL_STORAGE_QUERY_PROPERTY,
&storageProperty,
sizeof( STORAGE_PROPERTY_QUERY ),
pstorageAdapterDesc,
storageDescHeader.Size,
bytesReturned,
NULL
)
在描述符中,您可以使用"busstype"并检查USB
相关文章:
- 插入或删除时获取usb的dos_name
- 从 GUID 获取 USB 卷路径
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 如何在 Windows 中获取 USB 设备的友好名称?
- 获取使用 Qt c++ 在 Linux 中通过 USB 连接的 ESC/POS 打印机的状态
- 如何使用 /dev/xxx 路径中的C++获取 Ubuntu 中设备的 USB VID、PID 和序列号
- C/C++ 如何获取 USB libudev hidraw 设备的 USB 子系统路径?
- 使用 C++ 从 WMI 获取 Windows USB 字幕字段
- 在程序中获取 USB 相机图片
- 在 Linux 中基于 USB VID:PID 获取设备路径
- 获取<whatever>包含正在运行的可执行文件的 USB 驱动器C++ /dev/
- 如何在Windows上的Qt中获取USB设备的供应商ID和PID
- C++-WinAPI获取所有连接的USB设备的列表
- 获取USB设备的产品字符串(C#/C++)
- 如何从 mac os x 上通过 USB 连接的多轨混音器获取输入
- 从 USB 端口获取 USB 设备路径
- 如何在Windows中从USB HID设备获取原始描述符数据
- Windows XP:如何从磁盘驱动器号获取USB设备位置
- 从USB设备的设备路径获取卷名
- c++ windows通过Usb串口获取Usb端口和集线器