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