Direct3D のユーザー モード ディスプレイ ドライバーの通信の初期化
Microsoft Direct3D ユーザー モード ディスプレイ ドライバー DLL のバージョン 11 DDI との通信を初期化するために、Direct3D ランタイムは最初に DLL を読み込みます。 Direct3D ランタイムは次に、DLL のエクスポート テーブルを介してユーザー モード ディスプレイ ドライバーの OpenAdapter 関数を呼び出して、グラフィックス アダプターのインスタンスを開きます。 OpenAdapter 関数は、DLL の唯一のエクスポート関数です。
ドライバーの OpenAdapter 関数の呼び出しでは、ランタイムは、D3D10DDIARG_OPENADAPTER構造体の pAdapterCallbacks メンバーに pfnQueryAdapterInfoCb アダプターコールバック関数を 提供 します。 ランタイムは、D3D10DDIARG_OPENADAPTERの Interface と Version メンバーにもバージョンを提供します。 ユーザー モード ディスプレイ ドライバーは、このバージョンのランタイムを使用できることを確認する必要があります。 ユーザー モードのディスプレイ ドライバーは、D3D10DDIARG_OPENADAPTERの pAdapterFuncs メンバー内のアダプター固有の関数テーブルを返します。
ユーザー モードディスプレイ ドライバーは、 pfnQueryAdapterInfoCb アダプターコールバック関数を呼び出して、ディスプレイ ミニポート ドライバーからグラフィックス ハードウェア機能を照会する必要があります。
ランタイムは、ユーザー モード ディスプレイ ドライバーの CreateDevice 関数 (ドライバーのアダプター固有の関数の 1 つ) を呼び出して、レンダリング状態のコレクションを処理し、初期化を完了するためのディスプレイ デバイスを作成します。 初期化が完了すると、Direct3D ランタイムは ディスプレイ ドライバー提供の関数を呼び出すことができます。また、ユーザー モードのディスプレイ ドライバーは ランタイム指定の関数を呼び出すことができます。
ユーザー モード ディスプレイ ドライバーの CreateDevice 関数は、ユーザーモード ディスプレイ ドライバーインターフェイス を初期化するために次の方法でメンバーを設定する D3DDDIARG_CREATEDEVICE 構造体で呼び出されます。
ランタイムは、 ユーザー モード のディスプレイ ドライバーからランタイムが必要とするインターフェイスのバージョンにインターフェイスを設定します。
ランタイムは、ランタイムがビルドされたタイミングを識別するためにドライバーが使用できる番号に バージョン を設定します。 たとえば、ドライバーはバージョン番号を使用して、Windows Vista でリリースされたランタイムと、後続のサービス パックでリリースされたランタイムを区別できます。これには、ドライバーに必要な修正プログラムが含まれている可能性があります。
ランタイムは、ドライバーがランタイムに再度呼び出すときにドライバーが使用するハンドルを指定するように hDevice を設定します。 ドライバーは、一意のハンドルを生成し、 hDeviceのランタイムに渡します。 ランタイムは、後続のドライバー呼び出しで返された hDevice ハンドルを使用する必要があります。
ランタイムは、pCallback がポイントする D3DDDI__DEVICECALLBACKS 構造体内のデバイス特有のコールバック関数の テーブル を提供します。 ユーザー モードのディスプレイ ドライバーは、ディスプレイ ミニポート ドライバーのカーネル モード サービスにアクセスするランタイム指定のコールバック関数を呼び出します。
ユーザー モード ディスプレイ ドライバーは、 pDeviceFuncs がポイントする D3DDDI_DEVICEFUNCS 構造体内のデバイス固有の関数のテーブルを返します。
Note
同時に存在できるディスプレイ デバイス (グラフィックス コンテキスト) の数は、使用可能なシステム メモリによってのみ制限されます。