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. -----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