IHV Printer driver with USB

  • PRETEXT -
    Windows USB printing architecture describes taht Printer driver will be at
    the top, this interacts with the Spooler. This spooler interacts with the
    Language Monitor, and this Interacts with Usbmon.dll and this with
    Usbprint.sys and this with USB driver stack and this to H/W device

In short the flow is like this

  1. [Printer driver] -> Spooler -> [Language Monitor] -> Usbmon.dll ->
    Usbprint.sys -> USB driver stack -> this to H/W and device

Only the component inside is to be provided by hardware vendor, in this
case only Printer driver and Language Monitor. Other wise all other
components are part of Windows Architecture!!

Other possibility is as given in microsoft site is
2) [Printer driver] -> Spooler -> [Language Monitor] -> [IHV supplied
Prinetr driver] -> USB driver stack -> this to H/W and device

  • MY PROBLEM -
    I think approach 1 is how I have to write the printer driver for USB. i.e.
    the Hardware vendor has to provide the Printer driver on Windows and
    implement the Printer class on the device side. With this complete
    printing is through as the Printer Class is already available on
    Windows. Am I correct in my understanding here?

Now if wants to Implement the IHV driver for the printer class (as in
approach 2) as standard printer clas supports only 3 Printer class
requests!!. Am I correct if I assume that this IHV printer class should
completely act as Usbprint.sys+Usbmon.dll.

Should I have to put all these functionality into this IHV class and then
make the regular printer driver to interact with my IHV class?

Will there be such a condition that Microsoft provided USB printer class
does not suit some printer manufacturers and they provide there own IHV
drivers (because still I am not sure why this approach is provided as
there is everything is present in the form of Printer class USB in
Windows, or is it because “as standard printer clas supports only 3
Printer class requests”)

Thanks and best regards,
D.S.Phani Kumar.