Метод 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.
В качестве содержимого элемента dhpdev структуры SURFOBJ для целевой поверхности. Для эквивалентной настраиваемой функции перехватчика целевая структура SURFOBJ dhpdev указывает на структуру DEVOBJ и должна быть приведение к типу PDEVOBJ при ссылке. Пример функции DDI графики — DrvBitBlt.
В качестве входного аргумента для параметра dhpdev. Эквивалентная настраиваемая функция перехватчика должна привести этот входной параметр к типу PDEVOBJ при его ссылке. Пример функции DDI графики — это DrvDitherColor.
Хотя библиотека DLL принтера включает адреса DrvEnablePDEV, DrvDisablePDEVи функции DrvResetPDEV в структуре DRVENABLEDATA, Подключаемый модуль отрисовки для Pscript5 реализует EnablePDEV, DisablePDEVи ResetPDEV в качестве методов интерфейса IPrintOemPS и не помещает их адреса в структуру DRVENABLEDATA.
Если методы IPrintOemPS::EnableDriver экспортируются несколькими подключаемыми модулями отрисовки, методы вызываются в том порядке, в который указываются подключаемые модули для установки.
Каждая функция DDI графики может быть подключена одним подключаемым модулем отрисовки. Если несколько подключаемых модулей пытаются подключить одну и ту же функцию DDI графики, все перехватчики после первого пропускаются.
Дополнительные сведения о создании и установке подключаемых модулей отрисовки см. в настройке драйверов принтера Майкрософт.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | prcomoem.h (include Prcomoem.h) |