[WinPrnDev] Re: Language Monitor2 problems

  • From: Steve Friedl <steve@xxxxxxxxxxx>
  • To: winprndev@xxxxxxxxxxxxx
  • Date: Tue, 7 Oct 2008 15:43:50 -0700

On Tue, Oct 07, 2008 at 04:33:22PM -0600, Rocky Harting wrote:
> Here is where it says it is both required and optional.
> 
> http://msdn.microsoft.com/en-us/library/ms802175.aspx
> 
> It does state in the headline "The following table lists the
> functions that a language monitor must define", and it lists "ShutDown" in
> the table below it, but then says it is optional in italic print in the
> description column.

Well I just added Community Content for this - hopefully the next guy
won't trip across it like you did.

Which OS have you observed this behavior on?

> The documentation on ShutDown is sparse, all I can find is the function
> description.  I'm not really sure what to do in my ShutDown function.   When
> does the spooler call ShutDown (i.e. what conditions)?  Will the spooler
> call ClosePort first?  Can the spooler detach the language monitor DLL
> without calling ShutDown? (i.e. can I guarantee that ShutDown will always be
> called?)

It says that it's required for Cluster support, so I wonder if that's any
real clue. Are there any language monitor samples in the DDK ?

Steve

> -----Original Message-----
> From: winprndev-bounce@xxxxxxxxxxxxx
> [mailto:winprndev-bounce@xxxxxxxxxxxxx]On Behalf Of Steve Friedl
> Sent: Tuesday, October 07, 2008 4:22 PM
> To: winprndev@xxxxxxxxxxxxx
> Subject: [WinPrnDev] Re: Language Monitor2 problems
> 
> 
> On Tue, Oct 07, 2008 at 01:57:29PM -0600, Rocky Harting wrote:
> > DOH, now I feel stupid! I guess it all depends on where in the DDK a
> person
> > reads from.  I just found an area that says its required.
> 
> Which part shows it as optional (link?) - this is worth trying to get
> it fixed.
> 
> Steve
> 
> 
> >
> > -----Original Message-----
> > From: winprndev-bounce@xxxxxxxxxxxxx
> > [mailto:winprndev-bounce@xxxxxxxxxxxxx]On Behalf Of Rocky Harting
> > Sent: Monday, October 06, 2008 12:55 PM
> > To: winprndev@xxxxxxxxxxxxx
> > Subject: [WinPrnDev] Re: Language Monitor2 problems
> >
> >
> > Thank you for your help.  That's just what I was attempting this morning.
> > It appears that Language Monitors require the "ShutDown" function, even
> > though the DDK falsely claims that function is optional.
> >
> >
> > -----Original Message-----
> > From: winprndev-bounce@xxxxxxxxxxxxx
> > [mailto:winprndev-bounce@xxxxxxxxxxxxx]On Behalf Of Steve Friedl
> > Sent: Monday, October 06, 2008 10:53 AM
> > To: winprndev@xxxxxxxxxxxxx
> > Subject: [WinPrnDev] Re: Language Monitor2 problems
> >
> >
> > On Mon, Oct 06, 2008 at 09:09:00AM -0600, Rocky Harting wrote:
> > > I've been trying to convert our printer language monitor to use
> > > InitializePrintMonitor2 from using the old InitializePrintMonitor
> > function.
> > > The WHQL document states that in order to get our driver signed, we need
> > to
> > > be using MONITOR2.
> > > I'm not doing a port monitor, just language monitor only.  The language
> > > monitor should use standard localmon or usbmon.
> > > I'm sure that I have everything correct, but when I install the updated
> > > driver using the "add printer wizard", I receive the error message: "The
> > > specified print monitor does not have the required functions". I've
> > checked
> > > over and over again and I don't see what is missing. According to the
> WDK,
> > I
> > > am supplying all required functions.
> > > I know that my DLLEntry is being called, and I know that my new
> > > InitializePrintMonitor2 is being called.
> > > Here is my Monitor2 structure:
> > > MONITOR2 Monitor2 = {
> > >     sizeof(MONITOR2),
> > >     NULL,                           // EnumPorts not supported
> > >     NULL,                           // OpenPort  not supported
> > >     lmOpenPortEx,
> > >     lmStartDocPort,
> > >     lmWritePort,
> > >     lmReadPort,
> > >     lmEndDocPort,
> > >     lmClosePort,
> > >     NULL,                           // AddPort not supported
> > >     NULL,                           // AddPortEx not supported
> > >     NULL,                           // ConfigurePort not supported
> > >     NULL,                           // DeletePort not supported
> > >     lmGetPrinterDataFromPort,       // GetPrinterDataFromPort,
> > >     NULL,                           // SetPortTimeOuts not supported
> > >     NULL,                           // XcvOpenPort not supported
> > >     NULL,                           // XcvDataPort not supported
> > >     NULL,                           // XcvClosePort not supported
> > >     NULL,                           // ShutDown not supported
> > >     NULL                            // SendRecvBidi not supported (not
> in
> > > Win 2000?)
> > > };
> > >
> > > I just added "lmGetPrinterDataFromPort", even though I don't use it.  I
> > > added it because I thought maybe there was a mistake in the WDK
> > > documentation that said it was optional.
> >
> > I don't know which functions it's not happy with, but why not make
> > up some dummy functions and populate them all: see which one makes the
> error
> > go away?
> >
> >
> > >
> > > I've stripped down InitializePrintMonitor2 to do basically nothing but
> > > return the address of the above structure.
> > >
> > > Thanks if you can help.  I've been stuck for several days on this.
> > >
> > >
> > > ---
> > > Questions? First check the UndocPrint pages at
> > http://www.undocprint.org/winspool
> > >
> > > To unsubscribe, visit the List Server page at
> > //www.freelists.org/list/winprndev
> >
> > --
> > Stephen J Friedl | Security Consultant |  UNIX Wizard  |   +1 714 544-6561
> > www.unixwiz.net  | Tustin, Calif. USA  | Microsoft MVP | steve@xxxxxxxxxxx
> > ---
> > Questions? First check the UndocPrint pages at
> > http://www.undocprint.org/winspool
> >
> > To unsubscribe, visit the List Server page at
> > //www.freelists.org/list/winprndev
> >
> >
> > ---
> > Questions? First check the UndocPrint pages at
> > http://www.undocprint.org/winspool
> >
> > To unsubscribe, visit the List Server page at
> > //www.freelists.org/list/winprndev
> >
> >
> > ---
> > Questions? First check the UndocPrint pages at
> http://www.undocprint.org/winspool
> >
> > To unsubscribe, visit the List Server page at
> //www.freelists.org/list/winprndev
> 
> --
> Stephen J Friedl | Security Consultant |  UNIX Wizard  |   +1 714 544-6561
> www.unixwiz.net  | Tustin, Calif. USA  | Microsoft MVP | steve@xxxxxxxxxxx
> ---
> Questions? First check the UndocPrint pages at
> http://www.undocprint.org/winspool
> 
> To unsubscribe, visit the List Server page at
> //www.freelists.org/list/winprndev
> 
> 
> ---
> Questions? First check the UndocPrint pages at 
> http://www.undocprint.org/winspool
> 
> To unsubscribe, visit the List Server page at 
> //www.freelists.org/list/winprndev

-- 
Stephen J Friedl | Security Consultant |  UNIX Wizard  |   +1 714 544-6561
www.unixwiz.net  | Tustin, Calif. USA  | Microsoft MVP | steve@xxxxxxxxxxx
---
Questions? First check the UndocPrint pages at 
http://www.undocprint.org/winspool

To unsubscribe, visit the List Server page at 
//www.freelists.org/list/winprndev

Other related posts: