Hi, 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'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