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