Метод IPrintOemUni::EnableDriver (prcomoem.h)
Метод IPrintOemUni::EnableDriver позволяет подключаемый модуль отрисовки для Unidrv перехватывать некоторые функции DDI графики.
Синтаксис
HRESULT EnableDriver(
DWORD DriverVersion,
DWORD cbSize,
PDRVENABLEDATA pded
);
Параметры
DriverVersion
Номер версии интерфейса, предоставленный вызывающим абонентом. Это значение определяется PRINTER_OEMINTF_VERSION в printoem.h.
cbSize
Указанный вызывающим типом размер в байтах структуры, на которую указывает pded.
pded
Вызывающий указатель на структуру DRVENABLEDATA.
Возвращаемое значение
Метод должен возвращать одно из следующих значений.
Возвращаемый код | Описание |
---|---|
S_OK | Операция завершилась успешно. |
E_FAIL | Сбой операции |
Замечания
Подключаемый модуль отрисовки для Unidrv должен реализовать метод IPrintOemUni::EnableDriver.
Метод IPrintOemUni::EnableDriver позволяет подключаемый модуль отрисовки выполнять те же типы операций, что и функция DrvEnableDriver, экспортируемая графическими библиотеками DLL принтера.
Как и функция DrvEnableDriver, метод IPrintOemUni::EnableDriver отвечает за предоставление адресов внутренних поддерживаемых функций DDI графики, известных как функции перехватчика. Он также может выполнять другие однократные операции инициализации. В отличие от функции DrvEnableDriver, реализация IPrintOemUni::EnableDriver является необязательной.
При реализации IPrintOemUni::EnableDriverнеобходимо также реализовать IPrintOemUni::D isableDriver. Действия, начинавшиеся в предыдущем методе, могут быть выполнены в последнем методе. Например, если большой буфер выделен в IPrintOemUni::EnableDriver, но не выделен в IPrintOemUni::D isableDriver, может возникнуть утечка памяти.
Этот метод должен заполнить указанную структуру DRVENABLEDATA и выделить массив структур DRVFN. Он должен заполнять массив указателями на функции перехвата, а также значения индексов winddi.h, которые определяют функции DDI, связанные с графическими DDI.
Подключаемый модуль отрисовки для Unidrv может перехватывать функцию DDI графики, только если драйвер Unidrv определяет функцию. Следующие функции DDI графики определены в Unidrv и/или Pscript5, поэтому их можно подключить:
Если вы предоставляете настраиваемую функцию перехватчика, она упредит эквивалентную графическому DDI-функцию драйвера. Функции перехватчика также могут вызываться обратно в графические функции DDI драйвера. Дополнительные сведения см. в разделе Настраиваемые функции DDI графики.
Настраиваемые функции перехватчика имеют те же входные и выходные параметры, что и эквивалентная функция DDI графики, за исключением того, что графические функции DDI получают указатели PDEV, настраиваемые функции перехватчика получают DEVOBJ указатели. Существует два способа получения указателей PDEV для графических функций DDI:
В качестве содержимого элемента dhpdev структуры SURFOBJ для целевой поверхности. Для эквивалентной настраиваемой функции перехватчика целевая структура SURFOBJ dhpdev указывает на структуру DEVOBJ и должна быть приведение к типу PDEVOBJ при ссылке. Пример функции DDI графики — DrvBitBlt.
В качестве входного аргумента для параметра dhpdev. Эквивалентная настраиваемая функция перехватчика должна привести этот входной параметр к типу PDEVOBJ при его ссылке. Пример функции DDI графики — это DrvDitherColor.
Обратите внимание, что хотя библиотеки DLL принтера включают адреса drvEnablePDEV, DrvDisablePDEVи функции DrvResetPDEV в структуре DRVENABLEDATA, Подключаемый модуль отрисовки явно экспортирует EnablePDEV, DisablePDEVи ResetPDEV в качестве методов интерфейса IPrintOemUni и не помещает их адреса в структуру DRVENABLEDATA.
Если методы IPrintOemUni::EnableDriver экспортируются несколькими подключаемыми модулями отрисовки, методы вызываются в том порядке, в который указываются подключаемые модули для установки.
Каждая функция DDI графики может быть подключена только одним подключаемым модулем отрисовки. Если несколько подключаемых модулей пытаются подключить одну и ту же функцию DDI графики, все перехватчики после первого пропускаются.
Дополнительные сведения о создании и установке подключаемых модулей отрисовки см. в настройке драйверов принтера Майкрософт.
Требования
Требование | Ценность |
---|---|
целевая платформа | Настольный |
заголовка | prcomoem.h (include Prcomoem.h) |