C# 通过VID\PID获取usb打印机信息
我试图通过c#应用程序使用wmi查询来获取usb打印机名称。 我用。 结果是C# 通过VID\PID获取usb打印机信息,c#,winapi,wmi,C#,Winapi,Wmi,我试图通过c#应用程序使用wmi查询来获取usb打印机名称。 我用。 结果是 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。 之后,
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
我有两个设备:
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,其中包含我用于搜索的数据,但没有标题。第二台设备有正确的标题,并且没有关于其vid\pid的信息
使用windows设备管理,我可以看到我的设备具有具有正确vid/pid的父设备。
我相信USBPRINT设备是USB\VID\uux的产物
因此,如何通过了解设备VID\PID来获取USBPRINT设备名称?不清楚这有什么帮助。您不希望将代码绑定到特定的打印机型号,如果您有两台来自同一制造商的打印机,则它们具有相同的pid/vid@HansPassant即使有相同的视频,他们也会有不同的设备ID,不是吗?我防卫性地更喜欢在列表中看到普通名称,而不是“USB打印支持”