首页 > 解决方案 > 如何使用 libusb 获取驱动器名称?

问题描述

如何使用 libusb 获取驱动器名称?我使用 Windows 和下一个代码:

#define VID             0x4444
#define PID             0x0001
#define PID_FILE        0x1000

//..

libusb_device **devs;
uint8_t i = 0;
uint8_t path[9];
std::string devices;

libusb_init(&ctx);
libusb_get_device_list(ctx, &devs);

while ((dev = devs[i++]) != NULL)
{
    struct libusb_device_descriptor desc;
    uint8_t r = libusb_get_device_descriptor(dev, &desc);
    r = libusb_get_port_numbers(dev, path, SIZE_PATH);

    if (desc.idVendor == VID && (desc.idProduct == PID || desc.idProduct == PID_FILE))
    {
        printf("%04x:%04x (bus %d, device %d)\n",
            desc.idVendor, desc.idProduct,
            libusb_get_bus_number(dev), libusb_get_device_address(dev));

        path[8] = libusb_get_port_numbers(dev, path, SIZE_PATH);
        path[path[8]] = libusb_get_bus_number(dev);

        for (uint8_t g = 0; g < 9; g++) {
            devices += format("X%x", path[g]);
        }

        devices += ",";
    }
}

在这段代码中,我得到了 USB 路径(我使用闪存驱动器)。如何获取驱动器名称,例如 E:\?

标签: c++

解决方案


windows下使用WinUSB,请看官方公告

办公文档中的文本片段

本项目将 Windows 平台支持添加到 libusb 开源库中,以帮助开发人员轻松与 Windows 上的 USB 设备进行通信。目前它支持用于通用 USB 设备访问的 WinUSB 和 HID 驱动程序以及 libusb-win32 和 libusbK 驱动程序。

请注意 libusb-win32 和 libusbK 是独立的项目。libusb-win32 是一个仅限 Windows 的项目,它为 Windows 和内核驱动程序 libusb0.sys 提供 libusb-0.1 API 兼容库。libusbK 是一个仅限 Windows 的项目,它为 Windows 和内核驱动程序 libusbK.sys 提供了一组新的 API。


推荐阅读