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 函数的说明中进行了说明。 由 Unidrv 指定的 IPrintOemUni::DriverDMS 标志传递给 EngAssociateSurface。 (请注意,若要支持设备管理的图面,呈现插件必须挂钩所有绘图函数。) 有关详细信息,请参阅 “处理Device-Managed图面”。

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

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

要求

   
目标平台 桌面
Header prcomoem.h (包括 Prcomoem.h)