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


Доступ к интерфейсам драйвера принтера из Plug-Ins

Важно!

Мы рекомендуем использовать драйвер класса "Входящие" корпорации Майкрософт, а также приложения для поддержки печати (PSA) корпорации Майкрософт, чтобы настроить возможности печати в Windows 10 и 11 для разработки принтеров.

Дополнительные сведения см. в руководстве по проектированию приложений поддержки печати.

Если подключаемый модуль вызывает методы, принадлежащие предоставленным драйвером com-интерфейсам IPrintOemDriverUI, IPrintCoreHelperPS, IPrintCoreHelperUni, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 , он должен получить указатель интерфейса от драйвера следующим образом:

  1. Подключаемый модуль должен реализовывать метод PublishDriverInterface интерфейса IPrintOemUI, IPrintOemUI2, IPrintOemUni2, IPrintOemPS или IPrintOemPS2.

  2. Когда драйвер (Unidrv или Pscript5) вызывает метод PublishDriverInterface подключаемого модуля, он предоставляет указатель на интерфейс IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 экземпляра IUnknown.

  3. Подключаемый модуль должен использовать указатель интерфейса IUnknown для вызова IUnknown::QueryInterface, указав идентификатор интерфейса, представляющий нужную версию интерфейса IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 . (Дополнительные сведения см. в разделе Идентификаторы интерфейсов для драйверов принтеров.)

  4. Если подключаемый модуль задает идентификатор интерфейса, представляющий версию интерфейса, поддерживаемую драйвером, QueryInterface возвращает указатель на интерфейс IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 . Обратите внимание, что драйвер вызывает метод AddRef интерфейса (описанный в документации windows SDK), прежде чем он возвращает указатель интерфейса на подключаемый модуль. Подключаемый модуль должен сохранить этот указатель, чтобы использовать его позже для вызова методов интерфейса.

  5. Если указатель интерфейса IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 больше не нужен, подключаемый модуль должен вызвать метод Release интерфейса (описанный в документации windows SDK).

Чтобы подключаемые модули использовали новый интерфейс IPrintCoreHelperPS или IPrintCoreHelperUni в Windows Vista, подключаемый модуль должен добавить поддержку OEMGI_GETREQUESTEDHELPERINTERFACES в метод IPrintOemUI::GetInfo, IPrintOemPS::GetInfo или IPrintOemUni::GetInfo .