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 Surfaces

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

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

要求

要求 价值
目标平台 桌面
标头 prcomoem.h (include Prcomoem.h)