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


Метод 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)