初始化打印监视器
当后台处理程序调用 LoadLibrary 以加载打印监视器 DLL 时,系统会立即调用 DLL 的 DllEntryPoint 函数。 入口点函数通常最好调用 DisableThreadLibraryCalls,因此在创建和删除线程时不会不必要地通知 DLL。
每个 DLL 导出一个初始化函数,后台处理程序在调用 LoadLibrary 后调用该函数。 语言监视器 DLL 和端口监视器服务器 DLL 导出 InitializePrintMonitor2 函数。 端口监视器 UI DLL 导出 InitializePrintMonitorUI 函数。
这两个初始化函数负责返回指向 打印监视器定义的其余函数的指针,因此后台处理程序可以调用它们。 初始化函数还可以执行加载时初始化操作。 监视器的 InitializePrintMonitor2 函数返回监视器实例句柄。 监视器应分配本地内存来存储特定于实例的信息,并使用监视器句柄作为分配的内存的标识符。
首次启动后台处理程序时,它将加载已安装的所有监视器 DLL。 调用所有监视器初始化函数后,后台处理程序将调用每个端口监视器的 EnumPorts 函数,该函数枚举监视器支持的端口。 (如果端口已添加到监视器的数据库,则监视器支持端口,如 添加端口中所述。) 随后打开每个支持的端口,如 打开和关闭端口中所述。