Получить информацию о подключенном USB-устройстве - PullRequest
1 голос
/ 26 августа 2011

Мне удалось проверить, вставлено ли USB-устройство через WM_DEVICECHANGE.

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;
        }
    }
}

Теперь я хочу убедиться, что было вставлено правильное USB-устройство, сопоставив какие-то идентификаторы, а также мне нужно проверить свободное место на USB-устройстве.

Одно решение, которое я могу сказать, - это перебирать все аппаратные устройства, пока одно из них не совпадет с информацией.

Есть ли другой способ распознать устройство после установки?

1 Ответ

3 голосов
/ 26 августа 2011

VID и PID отправляются с сообщением DBT_DEVTYP_DEVICEINTERFACE.Затем вы можете просмотреть драйверы устройств для получения дополнительной информации через SetupDiGetClassDevs / SetupDiEnumDeviceInfo / SetupDiGetDeviceInstanceId / SetupDiGetDeviceRegistryProperty.

Носители не обязательно доступны во время подключения.Подумайте о картридере, он будет регистрировать буквы дисков, но диски не будут готовы, пока вы не вставите карту и Windows не сгенерирует событие устройства GUID_IO_MEDIA_ARRIVAL .Затем вы можете вызвать GetDiskFreeSpaceEx на букву диска, чтобы получить свободное место.

...