次の方法で共有


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 で指定された出力バッファー サイズが小さすぎる場合、メソッドは pcbNeeded が指す場所に必要なサイズを指定し、SetLastError(ERROR_INSUFFICIENT_BUFFER) を呼び出して、E_FAILを返す必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header prcomoem.h (Prcomoem.h を含む)