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 托管图面。

方法必须在 pBuffer 指向的缓冲区中指定HOOK_前缀标志,指示要为绘图图面调用哪个插件的图形 DDI 挂钩函数。 HOOK_前缀标志在 winddi.h 中定义,并在 EngAssociateSurface 函数的说明中进行了说明。 由 IPrintOemUni::DriverDMS 指定的标志由 Unidrv 传递到 EngAssociateSurface。 (请注意,若要支持设备管理的表面,呈现插件必须挂接所有绘图函数。) 有关详细信息,请参阅 处理 Device-Managed 图面

如果在 IPrintOemUni::DriverDMSpBuffer 指向的缓冲区中设置标志,Unidrv 将通过调用 EngCreateDeviceSurface 创建设备管理的表面。 如果未 IPrintOemUni::DriverDMS 设置任何标志,Unidrv 将通过调用 EngCreateBitmap 创建 GDI 托管图面。 在这两种情况下, IPrintOemUni::DriverDMS 应返回S_OK。

如果 cbSize 指定的输出缓冲区大小太小,则方法应在 由印刷机指向的位置指定所需的大小,调用 SetLastError (ERROR_INSUFFICIENT_BUFFER) ,并返回E_FAIL。

要求

要求
目标平台 桌面
标头 prcomoem.h (包括 Prcomoem.h)