次の方法で共有


DrvEnableSurface 関数 (winddi.h)

DrvEnableSurface 関数は、描画するサーフェスを設定し、それを特定の物理デバイスに関連付けます。

構文

HSURF DrvEnableSurface(
  DHPDEV dhpdev
);

パラメーター

dhpdev

物理デバイスの PDEV を処理します。 これは DrvEnablePDEV の戻り値です。 PDEV は、サーフェスを作成する物理デバイスを記述します。

戻り値

戻り値は、新しく作成されたサーフェスを識別するハンドルです。 それ以外の場合は 0 になり、エラー コードがログに記録されます。

注釈

使用するサーフェスを準備する方法は 2 つあります。

  1. このメソッドでは、ドライバーが EngCreateDeviceSurface の呼び出しによってサーフェスを作成することをお勧めします。 GDI がサーフェスを作成し、ドライバーへのハンドルを返した後、ドライバーは EngModifySurface を呼び出します。これにより、適切なフック フラグが設定され、必要に応じて、サーフェスの位置が GDI に通知されます。
  2. 2 つ目の方法は、Windows NT 4.0 ドライバーで使用されるメソッドです。 このメソッドでは、ドライバーは EngCreateBitmap を呼び出します。 この呼び出しの後、ドライバーは EngAssociateSurface を呼び出して、サーフェスを物理ディスプレイ デバイスに関連付けます。 この GDI 関数を使用すると、ドライバーは、標準形式のビットマップでサポートされているグラフィックス出力ルーチンを指定できます。 この関数の呼び出しは、特定の物理デバイスに対してサーフェスが存在しない場合にのみ行うことができます。 Windows 2000 以降のドライバーが、Windows NT 4.0 で実行するようにバックポートされている場合は、このメソッドを使用する必要があります。 このようなドライバーが Windows 2000 以降でも実行される場合は、ドライバー内の別のコード パスで最初のメソッドを使用する必要があります。

    プリンター デバイスの場合、GDI がグラフィックスを GDI ビットマップに直接収集するのが通常の状況です。 ドライバーは EngCreateBitmap を呼び出す必要があります。これにより、GDI はビットマップのメモリを割り当てることができます。

既存の GDI ビットマップ ハンドルは有効なサーフェス ハンドルです。

GDI で管理されるサーフェスを使用する プリンター グラフィックス DLL の 場合、 DrvEnableSurface 関数は EngCreateBitmap を呼び出し、物理ページ全体を格納するのに十分な大きさのサーフェス サイズを指定する必要があります。 失敗した場合は、呼び出しが成功するまで、サーフェス サイズを小さくして 、EngCreateBitmap の呼び出しを繰り返し試行する必要があります。 有効なサイズは EngMarkBandingSurface への入力として指定する必要があります。これにより、サーフェス バンディングが必要であることを GDI に通知します。

DrvEnableSurface がプライマリ サーフェスへのハンドルを返した後、そのハンドルで EngModifySurface または EngAssociateSurface を呼び出さないでください。 これにより、特定の状況でバグチェックが発生する可能性があります。 詳細については、 Microsoft サポート技術情報の記事「330248」を参照してください。

グラフィックス ドライバーには DrvEnableSurface が必要です。

要件

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

こちらもご覧ください

DrvDisableSurface

DrvEnablePDEV

EngCreateBitmap

EngCreateDeviceSurface