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


Метод IPrintOemPS::EnableDriver (prcomoem.h)

Метод IPrintOemPS::EnableDriver позволяет подключаемый модуль отрисовки для Pscript перехватывать некоторые функции DDI графики.

Синтаксис

HRESULT EnableDriver(
  DWORD          DriverVersion,
  DWORD          cbSize,
  PDRVENABLEDATA pded
);

Параметры

DriverVersion

Номер версии интерфейса, предоставленный вызывающим абонентом. Это значение определяется PRINTER_OEMINTF_VERSION в printoem.h.

cbSize

Указанный вызывающим типом размер в байтах структуры, на которую указывает pded.

pded

Вызывающий указатель на структуру DRVENABLEDATA.

Возвращаемое значение

Метод должен возвращать одно из следующих значений:

Возвращаемый код Описание
S_OK Операция завершилась успешно.
E_FAIL Сбой операции
E_NOTIMPL Метод не реализован.

Замечания

Метод IPrintOemPS::EnableDriver позволяет подключаемым модулем отрисовки выполнять те же типы операций, что и функция DrvEnableDriver, экспортируемая графическими библиотеками DLL принтера.

Как и функция drvEnableDriver, метод IPrintOemPS::EnableDriver отвечает за предоставление адресов внутренних поддерживаемых функций DDI графики, известных как функции перехватчика. Он также может выполнять другие однократные операции инициализации. В отличие от функции DrvEnableDriver, реализация метода IPrintOemPS::EnableDriver является необязательным.

Если вы реализуете IPrintOemPS::EnableDriver, необходимо также реализовать IPrintOemPS::D isableDriver. Действия, начинавшиеся в предыдущем методе, могут быть выполнены в последнем методе. Например, если большой буфер выделяется в IPrintOemPS::EnableDriver, но не выделен в IPrintOemPS::D isableDriver, может возникнуть утечка памяти.

Этот метод должен заполнить указанную структуру DRVENABLEDATA и выделить массив структур DRVFN. Он должен заполнять массив указателями на функции перехвата, а также значения индексов winddi.h, которые определяют функции DDI, связанные с графическими DDI.

Подключаемый модуль отрисовки для Pscript5 может перехватывать функцию DDI графики, только если драйвер Pscript5 определяет функцию. Следующие функции DDI графики определены в Pscript5 и Unidrv и, следовательно, могут быть подключены:

Если вы предоставляете настраиваемую функцию перехватчика, она упредит эквивалентную графическому DDI-функцию драйвера. Функции перехватчика также могут вызываться обратно в графические функции DDI драйвера. Дополнительные сведения см. в разделе Настраиваемые функции DDI графики.

Настраиваемые функции перехватчика имеют те же входные и выходные параметры, что и эквивалентная функция DDI графики, за исключением того, что графические функции DDI получают указатели PDEV, настраиваемые функции перехватчика получают DEVOBJ указатели. Существует два способа получения указателей PDEV.

  1. В качестве содержимого элемента dhpdev структуры SURFOBJ для целевой поверхности. Для эквивалентной настраиваемой функции перехватчика целевая структура SURFOBJ dhpdev указывает на структуру DEVOBJ и должна быть приведение к типу PDEVOBJ при ссылке. Пример функции DDI графики — DrvBitBlt.

  2. В качестве входного аргумента для параметра dhpdev. Эквивалентная настраиваемая функция перехватчика должна привести этот входной параметр к типу PDEVOBJ при его ссылке. Пример функции DDI графики — это DrvDitherColor.

Хотя библиотека DLL принтера включает адреса DrvEnablePDEV, DrvDisablePDEVи функции DrvResetPDEV в структуре DRVENABLEDATA, Подключаемый модуль отрисовки для Pscript5 реализует EnablePDEV, DisablePDEVи ResetPDEV в качестве методов интерфейса IPrintOemPS и не помещает их адреса в структуру DRVENABLEDATA.

Если методы IPrintOemPS::EnableDriver экспортируются несколькими подключаемыми модулями отрисовки, методы вызываются в том порядке, в который указываются подключаемые модули для установки.

Каждая функция DDI графики может быть подключена одним подключаемым модулем отрисовки. Если несколько подключаемых модулей пытаются подключить одну и ту же функцию DDI графики, все перехватчики после первого пропускаются.

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

Требования

Требование Ценность
целевая платформа Настольный
заголовка prcomoem.h (include Prcomoem.h)