Я пытался получить имя usb-принтера, используя запрос wmi через приложение c #.Я использую этот пример .Результат был
Device ID: USB\VID_0B0B&PID_106E\5&18F54CB7&0&2, PNP Device ID: USB\VID_0B0B&PID_106E\5&18F54CB7&0&2, Description: USB Printing Support
Это не подходит для меня, в диспетчере устройств Windows это отображается как DatamaST-3210.После этого я пытаюсь получить данные, используя WmiExplorer
select * from Win32_PnPEntity
. И я получаю 2 устройства:
instance of Win32_PnPEntity
{
Caption = "USB Printing Support";
ClassGuid = "{36fc9e60-c465-11cf-8056-444553540000}";
CompatibleID = {"USB\\Class_07&SubClass_01&Prot_02", "USB\\Class_07&SubClass_01", "USB\\Class_07"};
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_PnPEntity";
Description = "USB Printing Support";
DeviceID = "USB\\VID_0B0B&PID_106E\\5&18F54CB7&0&2";
HardwareID = {"USB\\VID_0B0B&PID_106E&REV_0304", "USB\\VID_0B0B&PID_106E"};
Manufacturer = "Microsoft";
Name = "USB Printing Support";
PNPDeviceID = "USB\\VID_0B0B&PID_106E\\5&18F54CB7&0&2";
Service = "usbprint";
SystemCreationClassName = "Win32_ComputerSystem";
};
instance of Win32_PnPEntity
{
Caption = "DatamaxST-3210";
ConfigManagerErrorCode = 0;
ConfigManagerUserConfig = FALSE;
CreationClassName = "Win32_PnPEntity";
Description = "DatamaxST-3210";
DeviceID = "USBPRINT\\DATAMAXST-3210\\6&93D5382&B&USB001";
HardwareID = {"USBPRINT\\DatamaxST-3210A4C7", "DatamaxST-3210A4C7"};
Name = "DatamaxST-3210";
PNPDeviceID = "USBPRINT\\DATAMAXST-3210\\6&93D5382&B&USB001";
Status = "OK";
SystemCreationClassName = "Win32_ComputerSystem";
};
Первое из них имеет DeviceID с данными, которые я использую для поиска, но не Caption.Второе устройство имеет правильный заголовок и нет информации о его vid \ pid.
При использовании оконного устройства я вижу, что на моем устройстве есть Parent с правильным vid / pid.Я верю, что устройство USBPRINT является дочерним по отношению к USB \ VID _...
Итак, как я могу получить имя устройства USBPRINT, зная устройства VID \ PID?