Both port and language monitors implement InitializePrintMonitor functions that provide MONITOREX structures. As a result, a function’s parameter list, return type, and purpose are the same for those function members that both monitors are required to implement. An LMPM should supply only one InitializePrintMonitor and DllEntryPoint implementation and one MONITOREX structure.
The spooler calls OpenPortEx when a language monitor has been associated with a printer; otherwise, it calls OpenPort.