Windows System Software -- Consulting, Training, Development -- Unique Expertise, Guaranteed Results

More Info on Driver Writing and Debugging

The free OSR Learning Library has more than 50 articles on a wide variety of topics about writing and debugging device drivers and Minifilters. From introductory level to advanced. All the articles have been recently reviewed and updated, and are written using the clear and definitive style you've come to expect from OSR over the years.

Check out The OSR Learning Library at:

Before Posting...

Please check out the Community Guidelines in the Announcements and Administration Category.

IHV Printer driver with USB

OSR_Community_UserOSR_Community_User Member Posts: 110,217
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

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.
Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. Sign in or register to get started.

Upcoming OSR Seminars
OSR has suspended in-person seminars due to the Covid-19 outbreak. But, don't miss your training! Attend via the internet instead!
Writing WDF Drivers 24 January 2022 Live, Online
Internals & Software Drivers 7 February 2022 Live, Online
Kernel Debugging 21 March 2022 Live, Online
Developing Minifilters 23 May 2022 Live, Online