Printer Connected to a USB Port

When a Universal Serial Bus (USB) printer is connected over a USB port, the USB bus driver creates a physical device object (PDO) with a hardware ID of the form VIDvvPIDpp, and compatible ID Class_7. The devnode for this is created under Enum\USB\ ...Class_7 and identifies a printer device connected over a USB port. Plug and Play loads usbprint.sys using a compatible ID match on Class_7 from usbprint.inf.

The entry from usbprint.inf that is used to load usbprint.sys for any USB printer device is:

[Microsoft]
%USBPRINT.DeviceDesc% = USBPRINT_Inst,USB\Class_07,GENERIC_USB_PRINTER

Usbprint.sys queries the Plug and Play printer to get the 1284 string, and generates a hardware ID that is compatible with the parallel bus enumerator. (For more information, see USBPRINT Interface.) It creates a physical device object (PDO) whose devnode is under Enum\USBPRINT, and with two hardware IDs in the following form:

USBPRINT\Company_NameModelNam1234

The following figure shows the driver stack for a printer connected over a USB port.

plug and play for usb printers

The following example shows the entries in an INF Manufacturer section that can be used to install a USB or other bus-type printer driver. The first line guarantees a rank-0 hardware ID match if the printer is installed on a USB bus. The second line guarantees a rank-0 hardware ID match if the printer is installed on another bus. For more information, see Installing a Custom Plug and Play Printer Driver.

 "Model Name XYZ" = Install_Section_XYZ, USBPRINT\Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs  
"Model Name XYZ" = Install_Section_XYZ, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs