Доступ к интерфейсам драйверов принтера из подключаемых модулей
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.
Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.
Если подключаемый модуль вызывает методы, принадлежащие драйверу IPrintOemDriverUI, IPrintCoreHelperPS, IPrintCoreHelperUni, IPrintCoreHelperUni, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 COM, он должен получить указатель интерфейса из драйвера следующим образом:
Подключаемый модуль должен реализовать метод IPrintOemUI, IPrintOemUI2, IPrintOemUni, IPrintOemUni2, IPrintOemUni2, IPrintOemPS или IPrintOemPS2 интерфейса PublishDriverInterface.
Когда драйвер (Unidrv или Pscript5) вызывает метод PublishDriverInterface подключаемого модуля, он предоставляет указатель на интерфейс IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 экземпляра IUnknown.
Подключаемый модуль должен использовать указатель интерфейса IUnknown для вызова IUnknown::QueryInterface, указав идентификатор интерфейса, представляющий нужную версию IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или интерфейс IPrintCorePS2. (Дополнительные сведения см. в разделе Идентификаторы интерфейса для драйверов принтера.)
Если подключаемый модуль задает идентификатор интерфейса, представляющий версию интерфейса, поддерживаемую драйвером, QueryInterface возвращает указатель на интерфейс IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2. Обратите внимание, что драйвер вызывает метод AddRef интерфейса (описанный в документации по пакету SDK для Windows), прежде чем он возвращает указатель интерфейса на подключаемый модуль. Подключаемый модуль должен сохранить этот указатель, чтобы использовать его позже для вызова методов интерфейса.
Если указатель интерфейса IPrintOemDriverUI, IPrintCoreUI2, IPrintOemDriverUni, IPrintOemDriverPS или IPrintCorePS2 больше не нужен, подключаемый модуль должен вызвать метод выпуска интерфейса (описан в документации по пакету SDK для Windows).
Чтобы подключаемые модули использовали новый интерфейс Windows Vista IPrintCoreHelperPS или IPrintCoreHelperUni, подключаемый модуль должен добавить поддержку OEMGI_GETREQUESTEDHELPERINTERFACES в методе IPrintOemUI::GetInfo, IPrintOemPS::GetInfo или IPrintOemUni::GetInfo.