如何将 USB 存储设备路径映射到物理驱动器?

How do I mapping usb storage device path to physicaldrive?

我从

获取 USB 设备路径
SetupDiGetDeviceInterfaceDetail()

而且我可以获得设备路径,例如

\?\usbstor#disk&ven_&prod_2307_pram&......

但我想将设备路径映射到物理驱动器

->  \physicaldrive0,1,2......

或反向我可以将物理驱动器映射到设备路径
有什么办法吗?

哦,我找到了。 将 HANDLE 放入 DeviceIoControl 并使用 IOCTL_STORAGE_GET_DEVICE_NUMBER

STORAGE_DEVICE_NUMBER number;   //use this to get disk numbers
DWORD readed;                   // discard results
BOOL result = DeviceIoControl(
    hdl,                // handle to device
    IOCTL_STORAGE_GET_DEVICE_NUMBER, // dwIoControlCode
    NULL,                            // lpInBuffer
    0,                               // nInBufferSize
    &number,           // output buffer
    sizeof(number),         // size of output buffer
    &readed,       // number of bytes returned
    NULL      // OVERLAPPED structure
);

并且 number.DeviceNumber 是物理驱动器编号