Inicialización de un monitor de impresión
Cuando el administrador de colas llama a LoadLibrary para cargar un archivo DLL del monitor de impresión, el sistema llama inmediatamente a la función DllEntryPoint del archivo DLL. Por lo general, es una buena idea que la función de punto de entrada llame a DisableThreadLibraryCalls, por lo que el archivo DLL no recibe notificaciones innecesarias cuando se crean y eliminan subprocesos.
Cada DLL exporta una función de inicialización, a la que llama el colador después de llamar a LoadLibrary. Los archivos DLL del monitor de lenguaje y los archivos DLL del servidor de supervisión de puertos exportan una función InitializePrintMonitor2 . Los archivos DLL de interfaz de usuario del monitor de puertos exportan una función InitializePrintMonitorUI .
Estas dos funciones de inicialización son responsables de devolver punteros al resto de las funciones definidas por monitores de impresión, por lo que el colador puede llamarlos. Las funciones de inicialización también pueden realizar operaciones de inicialización en tiempo de carga. La función InitializePrintMonitor2 del monitor devuelve un identificador de instancia de monitor. El monitor debe asignar memoria local para almacenar información específica de la instancia y usar el identificador del monitor como identificador para la memoria asignada.
Cuando se inicia por primera vez el administrador de colas, carga todos los archivos DLL del monitor que se han instalado. Después de llamar a todas las funciones de inicialización del monitor, el colador llama a la función EnumPorts de cada monitor de puerto, que enumera los puertos admitidos por el monitor. (Un monitor admite un puerto si el puerto se ha agregado a la base de datos del monitor, como se describe en Agregar un puerto). A continuación, se abre cada puerto admitido, como se describe en Apertura y cierre de un puerto.