【问题标题】:Get the information about the USB device inserted获取有关插入的 USB 设备的信息
【发布时间】:2011-08-25 22:28:32
【问题描述】:

我已成功检查是否通过WM_DEVICECHANGE 插入了 USB 设备。

case WM_DEVICECHANGE:
{
    PDEV_BROADCAST_HDR lpdb = (PDEV_BROADCAST_HDR)lParam;

    switch(wParam)
    {
        case DBT_DEVICEARRIVAL:
        {
            if (lpdb->dbch_devicetype == DBT_DEVTYP_VOLUME)
            {
                  // Get Information about the usb device inserted
            }
            return TRUE;
        }
    }
}

现在,我想通过匹配某种 ID 来确保插入了正确的 USB 设备,并且我需要检查 USB 设备上的可用空间。

我可以说的一种解决方案是遍历所有硬件设备,直到其中一个与信息匹配。

有没有其他方法可以在插入时识别设备?

【问题讨论】:

    标签: c++ winapi hardware-id


    【解决方案1】:

    VID 和 PID 与 DBT_DEVTYP_DEVICEINTERFACE 消息一起发送。然后,您可以通过 SetupDiGetClassDevs/SetupDiEnumDeviceInfo/SetupDiGetDeviceInstanceId/SetupDiGetDeviceRegistryProperty 查看设备驱动程序以获取更多信息。

    连接时不需要可用的媒体。想想读卡器,它会注册驱动器号,但驱动器在您插入卡并且 Windows 生成GUID_IO_MEDIA_ARRIVAL device event 之前不会准备好。然后,您可以在驱动器号上调用 GetDiskFreeSpaceEx 以获取可用空间。

    【讨论】:

    • 我有USB\VID_0763&PID_1324\001DD0EC33B0SS6167D92815 我不确定001DD0EC33B0SS6167D92815 是什么意思。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多