Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Служба spooler обеспечивает двунаправленную ("BiDi") связь между приложением или драйвером и принтером. Эта поддержка позволяет приложению или драйверу отправлять один или несколько запросов на принтер и принтер для реагирования на эти запросы.
Двунаправленные требования к обмену данными
Прежде чем приложение или драйвер могут использовать обмен данными bidi, он должен реализовать двунаправленные интерфейсы связи: интерфейс COM IBidiSpl или COM-интерфейс IbidiSpl2, а также по крайней мере один из интерфейсов COM IBidiRequest и IBidiRequestContainer COM. Кроме того, одно или оба из следующих утверждений должны быть истинными:
Функция SendRecvBidiData реализована в библиотеке DLL поставщика печати.
Функция SendRecvBidiDataFromPort реализована в библиотеке DLL сервера мониторинга языка или в библиотеке DLL сервера мониторинга портов.
Чтобы отправить один запрос на принтер, драйвер приложения или принтера должен сначала создать запрос, а затем вызвать метод IBidiSpl::SendRecv. Чтобы отправить несколько запросов, приложение или драйвер создает список запросов, а затем вызывает метод IBidiSpl::MultiSendRecv .
После получения запроса клиентский компонент диспетчера очереди печати (Winspool.drv) передает его на серверный диспетчер очереди печати (spoolsv.exe). Средство spooler на стороне сервера может находиться на локальном компьютере или на удаленном сервере печати сети. Когда серверный spooler получает запрос, он анализирует данные в запросе и заполняет элементы структуры BIDI_REQUEST_CONTAINER .
Затем серверный spooler вызывает SendRecvBidiData или SendRecvBidiDataFromPort. При возврате любой функции параметр ppResData указывает на расположение памяти, содержащее адрес заполненной BIDI_RESPONSE_CONTAINER структуры, содержащей ответ принтера. Серверный спулер преобразует данные этой структуры в форму, подходящую для использования приложением или драйвером, и передает их обратно в клиентский спулер, а затем возвращает обратно к инициатору запроса.