次の方法で共有


NtGdiDdQueryDirectDrawObject 関数

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

以前に作成した Microsoft DirectDraw オブジェクトのカーネル モード表現の機能を照会します。

構文

BOOL APIENTRY NtGdiDdQueryDirectDrawObject(
  _In_  HANDLE                      hDirectDrawLocal,
  _Out_ DD_HALINFO                  *pHalInfo,
        DWORD                       *pCallBackFlags,
  _Out_ LPD3DNTHAL_CALLBACKS        puD3dCallbacks,
  _Out_ LPD3DNTHAL_GLOBALDRIVERDATA puD3dDriverData,
  _Out_ PDD_D3DBUFCALLBACKS         puD3dBufferCallbacks,
  _Out_ LPDDSURFACEDESC             puD3dTextureFormats,
  _Out_ DWORD                       *puNumHeaps,
  _Out_ VIDEOMEMORY                 *puvmList,
  _Out_ DWORD                       *puNumFourCC,
  _Out_ DWORD                       *puFourCC
);

パラメーター

hDirectDrawLocal [in]

以前に作成したカーネル モードの DirectDraw デバイスを処理します。

pHalInfo [out]

デバイスの機能で満たされる DD_HALINFO 構造体へのポインター。 詳細については、DDK のドキュメントを参照してください。

pCallBackFlags

ドライバーによって報告されるコールバック フラグを格納する呼び出し元によって提供されるバッファーへのポインター。 バッファーのサイズは 3*sizeof(DWORD) で、コールバック フラグは次の順序で格納する必要があります。 DD_CALLBACKSのフラグの場合は pCallBackFlags[0]、 DD_SURFACECALLBACKSのフラグの場合は pCallBackFlags[1]、 DD_PALETTECALLBACKSのフラグの場合は pCallBackFlags[2] です。 詳細については、DDK のドキュメントを参照してください。

puD3dCallbacks [out]

Direct3D コールバック ポインターのテーブルへのポインター。 テーブルには、Direct3D ディスプレイ ドライバーを模倣するGdi32.dll内の関数へのポインターが格納されます。 このコールバック テーブルは、DDK ドキュメントで説明されているD3DHAL_D3DCALLBACKS構造と同じです。

puD3dDriverData [out]

DDK ドキュメントで説明されているように、 データ D3DHAL_GLOBALDRIVERDATAへのポインター。

puD3dBufferCallbacks [out]

コールバック ポインターのテーブルへのポインター。 テーブルには、Direct3D ディスプレイ ドライバーを模倣するGdi32.dll内の関数へのポインターが格納されます。 このコールバック テーブルは、DDK ドキュメントで説明されているDD_D3DBUFCALLBACKS構造にマップされる DDHAL_DDEXEBUFCALLBACKS 構造と同じですが、DD_D3DBUFCALLBACKSのメンバー XxxD3DBuffer は 、DDHAL_DDEXEBUFCALLBACKS の XxxExecuteBuffer に置き換えられます。

puD3dTextureFormats [out]

許容されるテクスチャ形式のセットを定義する DDSURFACEDESC 構造体の配列へのポインター。

puNumHeaps [out]

DD_HALINFOdwNumHeaps メンバーへのポインター。vmiDatadwNumHeaps メンバーは、puvmList 内のメモリ ヒープの数を指定します。 詳細については、DDK のドキュメントを参照してください。

puvmList [out]

ビデオ メモリ ヒープ記述子の一覧へのポインター。 NULL を指定できます。 ビデオ メモリ管理はカーネル モード内で完全に処理されるため、このパラメーターは使用されません。

puNumFourCC [out]

DD_HALINFOpuNumFourCCCodes メンバーへのポインター。ddCapspuNumFourCCCodes メンバーは、ドライバーがサポートする 4 文字コード (FOURCC) コードの数を指定します。 詳細については、DDK のドキュメントを参照してください。

puFourCC [out]

サポートされている 4 文字コード (FOURCC) サーフェス形式の一覧へのポインター。 NULL を指定できます。

戻り値

成功した場合、この関数は TRUE を返します。それ以外の場合は FALSE を返します

注釈

この関数の呼び出しは、2 段階のプロセスで行われるよう設計されています。 最初の手順では、 puFourCCpuvmListpuD3dTextureFormatsNULL にし、 DdQueryDirectDrawObjectDD_HALINFO入力します。ddCapsdwNumFourCCCodesDD_HALINFOvmiDatadwNumHeapsおよび D3DHAL_GLOBALDRIVERDATA。返されるエントリの数を含む dwNumTextureFormats 。 2 番目の呼び出しでは、呼び出し元は指定されたサイズの配列を割り当て、puFourCCpuvmListpuD3dTextureFormats パラメーターに NULL 値ではなく、それらのポインターを渡す必要があります。 その後、配列に適切なデータが設定されます。

アプリケーションでは、DirectDraw API と Direct3D API を使用してグラフィックス デバイス オブジェクトを作成および管理することをお勧めします。 これらのコンストラクトは、簡略化されたオペレーティング システムに依存しない方法でデバイス作成プロセスを抽象化します。

必要条件

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

関連項目

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

DdQueryDirectDrawObject

NtGdiDdCreateDirectDrawObject