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


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

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

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

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

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

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

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

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

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

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

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть prcomoem.h (включая Prcomoem.h)