Языковые мониторы
Языковые мониторы — это библиотеки DLL в пользовательском режиме, которые служат двум целям:
Они предоставляют полный дуплексный путь связи между очередью печати и двунаправленными принтерами, которые могут предоставлять информацию о состоянии, доступную для программного обеспечения.
Они добавляют в поток данных сведения об управлении принтером, например команды, определенные языком задания принтера.
Корпорация Майкрософт предоставляет монитор языка, Pjlmon.dll, который поддерживает язык заданий принтера (PJL) и обеспечивает двунаправленную связь для принтеров PJL. Дополнительные сведения см. в статье Пример языкового монитора.
Настраиваемые языковые мониторы могут быть написаны для поддержки других языков управления заданиями для однонаправленных или двунаправленных принтеров.
Языковые мониторы являются необязательными и связаны только с определенным типом принтера, если они включены в INF-файл принтера, как описано в разделе Установка монитора печати.
Если флажок Включить двунаправленную поддержку проверка на вкладке Порты диалогового окна свойств принтера снят, диспетчер очереди не будет вызывать функции StartDocPort, WritePort, EndDocPort, GetPrinterDataFromPort, ReadPort языкового монитора.
Диспетчер очереди будет продолжать вызывать функции OpenPortEx, ClosePort, SendRecvBidiDataFromPort , даже если включена двунаправленная поддержка . Поле Включить двунаправленную поддержку проверка не влияет на вызовы языкового монитора, которые выполняются, когда приложение вызывает функции в API двунаправленной связи.
Если языковой монитор связан с принтером, он получает поток данных принтера от процессора печати, изменяет его и передает на монитор порта принтера. Дополнительные сведения см. в разделе Взаимодействие с монитором языков и портов.
Примечание
Языковые мониторы всегда должны реализовывать функцию SendRecvBidiDataFromPort и включать адрес функции в элемент pfnSendRecvBidiDataFromPortструктуры MONITOR2 .
Если языковой монитор не поддерживает bidi или запрос содержит значения схемы bidi, которые не поддерживаются языковым монитором, языковой монитор должен переадресовать вызовы в функцию SendRecvBidiDataFromPort монитора портов.