Как идентифицировать USB-кардридер - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь программно обнаружить наличие USB Card Reader, которое идентифицирует себя как устройство с клавиатурой. В диспетчере устройств это выглядит так:

Device Manager

Разница между реальной клавиатурой и кардридером только в идентификаторах устройств. У меня есть следующий код C# WMI:

        ManagementObjectSearcher managementObjectSearcher = new ManagementObjectSearcher(@"Select * from Win32_Keyboard");
        ManagementObjectCollection keyboards = managementObjectSearcher.Get();

        foreach (ManagementBaseObject keyboard in keyboards)
        {
            Console.WriteLine();
            foreach (var property in keyboard.Properties)
            {
                Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value));
            }
        }

Вывод, как и в диспетчере устройств, отличается только идентификаторами устройств:

Availability:
Caption: Enhanced (101- or 102-key)
ConfigManagerErrorCode: 0
ConfigManagerUserConfig: False
CreationClassName: Win32_Keyboard
Description: USB Input Device
DeviceID: USB\VID_04B3&PID_3025\5&DC4A972&0&3
ErrorCleared:
ErrorDescription:
InstallDate:
IsLocked:
LastErrorCode:
Layout: 00000409
Name: Enhanced (101- or 102-key)
NumberOfFunctionKeys: 12
Password:
PNPDeviceID: USB\VID_04B3&PID_3025\5&DC4A972&0&3
PowerManagementCapabilities:
PowerManagementSupported: False
Status: OK
StatusInfo:
SystemCreationClassName: Win32_ComputerSystem
SystemName: ALEX19

Availability:
Caption: Enhanced (101- or 102-key)
ConfigManagerErrorCode: 0
ConfigManagerUserConfig: False
CreationClassName: Win32_Keyboard
Description: USB Input Device
DeviceID: USB\VID_0804&PID_0040\5&DC4A972&0&6
ErrorCleared:
ErrorDescription:
InstallDate:
IsLocked:
LastErrorCode:
Layout: 00000409
Name: Enhanced (101- or 102-key)
NumberOfFunctionKeys: 12
Password:
PNPDeviceID: USB\VID_0804&PID_0040\5&DC4A972&0&6
PowerManagementCapabilities:
PowerManagementSupported: False
Status: OK
StatusInfo:
SystemCreationClassName: Win32_ComputerSystem
SystemName: ALEX19

Однако Windows Настройки показывают это устройство в качестве устройства чтения карт USB:

Settings

Как я могу сделать то же самое, используя. NET или собственный Windows API? ОС - Windows 10 x64.

Примечание: этот ответ Как мне получить все считыватели смарт-карт в моей системе через WMI? предлагает использовать класс SmartCardReader, но не У меня не работает, картридер не распознается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...