C# 通过VID\PID获取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。 之后,

我试图通过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。 之后,我尝试使用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打印支持”