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


Метод IPrintOemUni::D riverDMS (prcomoem.h)

Метод IPrintOemUni::DriverDMS позволяет подключаемый модуль отрисовки для Unidrv указать, что он использует поверхность рисования, управляемую устройством.

Синтаксис

HRESULT DriverDMS(
  PVOID  pDevObj,
  PVOID  pBuffer,
  DWORD  cbSize,
  PDWORD pcbNeeded
);

Параметры

pDevObj

Предоставленный вызывающим объектом указатель на структуру DEVOBJ .

pBuffer

Предоставленный вызывающим объектом указатель на буфер для получения флагов, заданных методом. (См. следующий раздел примечаний.)

cbSize

Размер буфера, на который указывает pBuffer, предоставленный вызывающим объектом ( в байтах).

pcbNeeded

Предоставленный вызывающим абонентом указатель на расположение для получения необходимого минимального размера pBuffer .

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

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

Код возврата Описание
S_OK
Операция успешно выполнена.
E_FAIL
Сбой операции

Комментарии

Подключаемый модуль отрисовки для Unidrv должен реализовывать IPrintOemUni::DriverDMS метод . Метод будет вызываться только в том случае, если Unidrv найдет допустимый указатель интерфейса на подключаемый модуль отрисовки изготовителя оборудования.

Метод IPrintOemUni::DriverDMS позволяет подключаемый модуль отрисовки указать, что он будет использовать управляемую устройством поверхность рисования вместо поверхности, управляемой GDI по умолчанию.

Метод должен указывать HOOK_ флаги с префиксом в буфере, на который указывает pBuffer, указывая, какие из графических функций подключения DDI подключаемого модуля должны вызываться для поверхности рисования. Флаги с префиксом HOOK_ определены в файле winddi.h и описаны в описании функции EngAssociateSurface . Флаги, указанные параметром , IPrintOemUni::DriverDMS передаются Unidrv в EngAssociateSurface. (Обратите внимание, что для поддержки управляемой устройством поверхности подключаемый модуль отрисовки должен подключать все функции рисования.) Дополнительные сведения см. в статье Обработка поверхностей Device-Managed.

Если IPrintOemUni::DriverDMS задает флаги в буфере, на который указывает pBuffer, Unidrv создает управляемую устройством поверхность, вызывая EngCreateDeviceSurface. Если IPrintOemUni::DriverDMS флаги не заданы, Unidrv создает поверхность, управляемую GDI, вызывая EngCreateBitmap. В любом из этих случаев IPrintOemUni::DriverDMS должен возвращать S_OK.

Если размер выходного буфера, заданный параметром cbSize , слишком мал, метод должен указать необходимый размер в расположении, на которое указывает pcbNeeded, вызвать Метод SetLastError(ERROR_INSUFFICIENT_BUFFER) и вернуть E_FAIL.

Требования

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