Поделиться через


Инициализация монитора печати

Когда диспетчер очереди вызывает LoadLibrary для загрузки библиотеки DLL монитора печати, система немедленно вызывает функцию DllEntryPoint библиотеки DLL. Обычно для функции точки входа рекомендуется вызывать DisableThreadLibraryCalls, чтобы библиотека DLL не уведомлялась о создании и удалении потоков.

Каждая библиотека DLL экспортирует функцию инициализации, которую диспетчер очереди очереди вызывает после вызова LoadLibrary. Библиотеки DLL языкового монитора и серверные библиотеки DLL мониторинга портов экспортируют функцию InitializePrintMonitor2 . Библиотеки DLL пользовательского интерфейса монитора портов экспортируют функцию InitializePrintMonitorUI .

Эти две функции инициализации отвечают за возврат указателей на остальные функции, определенные мониторами печати, поэтому диспетчер очереди может вызывать их. Функции инициализации также могут выполнять операции инициализации во время загрузки. Функция InitializePrintMonitor2 монитора возвращает дескриптор экземпляра монитора. Монитор должен выделять локальную память для хранения сведений, относящихся к экземпляру, и использовать дескриптор монитора в качестве идентификатора выделенной памяти.

При первом запуске диспетчер очереди очереди загружает все установленные библиотеки DLL монитора. После вызова всех функций инициализации монитора диспетчер очереди очереди вызывает функцию EnumPorts каждого монитора портов, которая перечисляет порты, поддерживаемые монитором. (Монитор поддерживает порт, если порт был добавлен в базу данных монитора, как описано в разделе Добавление порта.) Затем открывается каждый поддерживаемый порт, как описано в разделе Открытие и закрытие порта.