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 托管图面。
该方法必须在 pBuffer指向的缓冲区中指定HOOK_前缀标志,指示要为绘图图面调用哪个插件的图形 DDI 挂钩函数。 HOOK_前缀的标志在 winddi.h 中定义,并在 EngAssociateSurface 函数的说明中进行了说明。 由 IPrintOemUni::DriverDMS
指定的标志由 Unidrv 传递给 EngAssociateSurface。 (请注意,若要支持设备管理的图面,呈现插件必须挂钩所有绘图函数。有关详细信息,请参阅 处理 Device-Managed Surfaces。
如果 IPrintOemUni::DriverDMS
pBuffer指向的缓冲区中设置标志,Unidrv 会通过调用 EngCreateDeviceSurface来创建设备管理的表面。 如果 IPrintOemUni::DriverDMS
未设置任何标志,Unidrv 会通过调用 EngCreateBitmap来创建 GDI 管理的图面。 在这两种情况下,IPrintOemUni::DriverDMS
应返回S_OK。
如果 cbSize 指定的输出缓冲区大小太小,则该方法应在 指向的位置指定所需的大小,调用 SetLastError(ERROR_INSUFFICIENT_BUFFER),并返回E_FAIL。
要求
要求 | 价值 |
---|---|
目标平台 | 桌面 |
标头 | prcomoem.h (include Prcomoem.h) |