Метод 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.
Возвращаемое значение
Метод должен возвращать одно из следующих значений.
Возвращаемый код | Описание |
---|---|
|
Операция завершилась успешно. |
|
Сбой операции |
Замечания
Подключаемый модуль отрисовки для 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) |