次の方法で共有


Direct3D バージョン 10 DDI との通信の初期化

ユーザー モード ディスプレイ ドライバー DLL のバージョン 10 DDI との通信を初期化するために、DLL がまだ読み込まれていない場合、Direct3D バージョン 10 ランタイムは最初に DLL を読み込みます。 Direct3D ランタイムは次に、DLL のエクスポート テーブルを介してユーザー モード ディスプレイ ドライバーの OpenAdapter10 関数を呼び出して、グラフィックス アダプターのインスタンスを開きます。 OpenAdapter10 関数は、DLL の唯一のエクスポートされた Direct3D バージョン 10 関数です。

ドライバーの OpenAdapter10 関数の呼び出しでは、ランタイムは、D3D10DDIARG_OPENADAPTER構造体の pAdapterCallbacks メンバーに pfnQueryAdapterInfoCb アダプターコールバック関数を 提供 します。 ランタイムは、D3D10DDIARG_OPENADAPTERの Interface メンバーと Version メンバーにもバージョンを提供します。 ユーザー モード ディスプレイ ドライバーは、このバージョンのランタイムを使用できることを確認する必要があります。 新しいバージョンのランタイムは以前の DDI バージョンを使用できるため、以前の DDI バージョンを実装するドライバーと正しく通信できるため、ユーザー モード ディスプレイ ドライバーは新しいバージョンのランタイムを失敗させてはなりません。 ユーザー モードのディスプレイ ドライバーは、D3D10DDIARG_OPENADAPTERの pAdapterFuncs メンバー内のアダプター固有の関数のテーブルを返します。

ユーザー モードディスプレイ ドライバーは、 pfnQueryAdapterInfoCb アダプターコールバック関数を呼び出して、ディスプレイ ミニポート ドライバーからグラフィックス ハードウェア機能を照会する必要があります。

ランタイムは、ユーザー モード ディスプレイ ドライバーの CreateDevice(D3D10) 関数 (ドライバーのアダプター固有の関数の 1 つ) を呼び出して、レンダリング状態のコレクションを処理し、初期化を完了するためのディスプレイ デバイスを作成します。 初期化が完了すると、Direct3D バージョン 10 ランタイムは ディスプレイ ドライバー提供の Direct3D バージョン 10 関数を呼び出すことができます。また、ユーザー モードディスプレイ ドライバーは ランタイム提供の関数を呼び出すことができます。

ユーザー モード ディスプレイ ドライバーの CreateDevice(D3D10) 関数は、ユーザーモード ディスプレイ ドライバーのバージョン 10 DDI を初期化するために次の方法でメンバーを設定する D3D10DDIARG_CREATEDEVICE 構造体で呼び出されます。

  • ランタイムは、 ユーザー モード のディスプレイ ドライバーからランタイムが必要とするインターフェイスのバージョンにインターフェイスを設定します。

  • ランタイムは、ランタイムがビルドされたタイミングを識別するためにドライバーが使用できる番号に バージョン を設定します。 たとえば、ドライバーはバージョン番号を使用して、Windows Vista でリリースされたランタイムと、後続のサービス パックでリリースされたランタイムを区別できます。これには、ドライバーに必要な修正プログラムが含まれている可能性があります。

  • ランタイムは、ドライバーがランタイムに再度呼び出すときにドライバーが使用するハンドルを指定するように hRTDevice を設定します。

  • ランタイムは、後続のドライバー呼び出しでランタイムが使用するハンドルを指定するように hDrvDevice を設定します。

  • ランタイムは、pKTCallbacks がポイントする D3DDDI__DEVICECALLBACKS 構造体内のデバイス特有のコールバック関数の テーブル を提供します。 ユーザー モードのディスプレイ ドライバーは、ディスプレイ ミニポート ドライバーのカーネル モード サービスにアクセスするランタイム指定のコールバック関数を呼び出します。

  • ユーザー モード ディスプレイ ドライバーは、 pDeviceFuncs がポイントする D3D10DDI_DEVICEFUNCS 構造体内のデバイス固有の関数のテーブルを返します。

  • ランタイムは、 DXGIBaseDDI がポイントする DXGI_DDI_BASE_ARGS 構造体を提供します。 ランタイムとユーザー モードのディスプレイ ドライバーは、この構造体に DirectX グラフィックス インフラストラクチャ DDI を提供します。

  • ランタイムは、ドライバーがコア Direct3D 10 機能にアクセスするためにランタイムに戻るときにドライバーが使用するハンドルを指定するように hRTCoreLayer を設定します (つまり、 pUMCallbacks メンバーが指定する関数の呼び出し)。

  • ランタイムは、pUMCallback がポイントする D3D10DDI_CORELAYER_DEVICECALLBACKS 構造体内のコア コールバック関数の テーブル を提供します。 ユーザー モードのディスプレイ ドライバーは、ランタイムが提供するコア コールバック関数を呼び出して状態を更新します。

注: 同時に存在できるディスプレイ デバイス (グラフィックス コンテキスト) の数は、使用可能なシステム メモリによってのみ制限されます。