次の方法で共有


NtGdiDdCreateSurface 関数

[この機能は、オペレーティング システムのリビジョンごとに変更される可能性があります。 代わりに、Microsoft DirectDraw と Microsoft Direct3DAPIs を使用します。これらの API は、このようなオペレーティング システムの変更からアプリケーションを保護し、ディスプレイ ドライバーとの直接対話に関連する他の多くの困難を隠します。

サーフェスを別のサーフェスにアタッチします。

構文

DWORD APIENTRY NtGdiDdCreateSurface(
  _In_    HANDLE               hDirectDraw,
  _In_    HANDLE               *hSurface,
  _Inout_ DDSURFACEDESC        *puSurfaceDescription,
  _Inout_ DD_SURFACE_GLOBAL    *puSurfaceGlobalData,
  _Inout_ DD_SURFACE_LOCAL     *puSurfaceLocalData,
  _Inout_ DD_SURFACE_MORE      *puSurfaceMoreData,
  _Inout_ DD_CREATESURFACEDATA *puCreateSurfaceData,
  _Out_   HANDLE               *puhSurface
);

パラメーター

hDirectDraw [in]

ドライバーを表す DD_DIRECTDRAW_GLOBAL 構造体へのハンドル。

hSurface [in]

同じサーフェスへの前のハンドル。 モード 切り替え後にサーフェスを再作成する場合に使用します。

puSurfaceDescription [in, out]

ドライバーが作成する必要があるサーフェスまたはバッファーを記述する DDSURFACEDESC 構造体へのポインター。

puSurfaceGlobalData [in, out]

複数のサーフェスとグローバルに共有されるサーフェス データを含む DD_SURFACE_GLOBAL 構造体へのポインター。

puSurfaceLocalData [in, out]

ドライバーによって作成されたサーフェス オブジェクトを記述する DD_SURFACE_LOCAL 構造体の一覧へのポインター。

puSurfaceMoreData [in, out]

追加のローカル サーフェス データを含む DD_SURFACE_MORE 構造体へのポインター。

puCreateSurfaceData [in, out]

サーフェスの作成に必要な情報を含む DD_CREATESURFACEDATA 構造体へのポインター。

puhSurface [out]

DirectDraw API で使用され、ドライバーで入力しないでください。

戻り値

NtGdiDdCreateSurface は 、次のいずれかのコールバック コードを返します。

リターン コード 説明
DDHAL_DRIVER_HANDLED
ドライバーが操作を実行し、その操作の有効なリターン コードを返しました。 このコードがDD_OKされている場合、DirectDraw または Direct3D は 関数を続行します。 それ以外の場合、DirectDraw または Direct3D はドライバーによって提供されたエラー コードを返し、関数を中止します。
DDHAL_DRIVER_NOTHANDLED
ドライバーには、要求された操作に関するコメントはありません。 ドライバーが特定のコールバックを実装する必要がある場合、DirectDraw または Direct3D はエラー状態を報告します。 それ以外の場合、DirectDraw または Direct3D は、DirectDraw または Direct3D デバイスに依存しない実装を実行してドライバー コールバックが定義されていないかのように操作を処理します。

 

注釈

この関数を使用する代わりに、アプリケーションで IDirectDraw7::CreateSurface を 呼び出することをお勧めします。

スワップ チェーンやチェーン、ミップマップなど、アタッチされたサーフェスのチェーンを作成する場合は、最初に各サーフェスに 対して NtGdiDdCreateSurfaceObject を呼び出す必要があります。 次に 、NtGdiDdAttachSurface を呼び出して接続します。 最後に、チェーン内の最初のサーフェスに対してのみ NtGdiDdCreateSurface を呼び出します。 この場合、 hSurface は、チェーン内の最初のサーフェスに対して NtGdiDdCreateSurfaceObject によって返されるハンドルになります。

NtGdiDdCreateSurface は 、ローカルおよびローカル以外のビデオ メモリにサーフェスを作成する場合にのみ呼び出す必要があります。 システム メモリ サーフェスを作成するために呼び出すべきではありません。 システム メモリ サーフェスを作成するには、代わりに NtGdiDdCreateSurfaceObject を 使用します。

必要条件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Ntgdi.h

関連項目

グラフィックス低レベルクライアントのサポート