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


Метод 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 находит допустимый указатель интерфейса на подключаемый модуль отрисовки OEM.

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

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

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

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

Требования

Требование Ценность
целевая платформа Настольный
заголовка prcomoem.h (include Prcomoem.h)