D3D10DDIARG_CREATEDEVICE構造体 (d3d10umddi.h)
D3D10DDIARG_CREATEDEVICE 構造では、作成するディスプレイ デバイスについて説明します。
構文
typedef struct D3D10DDIARG_CREATEDEVICE {
D3D10DDI_HRTDEVICE hRTDevice;
UINT Interface;
UINT Version;
const D3DDDI_DEVICECALLBACKS *pKTCallbacks;
union {
D3D10DDI_DEVICEFUNCS *pDeviceFuncs;
D3D10_1DDI_DEVICEFUNCS *p10_1DeviceFuncs;
D3D11DDI_DEVICEFUNCS *p11DeviceFuncs;
D3D11_1DDI_DEVICEFUNCS *p11_1DeviceFuncs;
D3DWDDM1_3DDI_DEVICEFUNCS *pWDDM1_3DeviceFuncs;
D3DWDDM2_0DDI_DEVICEFUNCS *pWDDM2_0DeviceFuncs;
D3DWDDM2_1DDI_DEVICEFUNCS *pWDDM2_1DeviceFuncs;
D3DWDDM2_2DDI_DEVICEFUNCS *pWDDM2_2DeviceFuncs;
D3DWDDM2_6DDI_DEVICEFUNCS *pWDDM2_6DeviceFuncs;
};
D3D10DDI_HDEVICE hDrvDevice;
DXGI_DDI_BASE_ARGS DXGIBaseDDI;
D3D10DDI_HRTCORELAYER hRTCoreLayer;
union {
const D3D10DDI_CORELAYER_DEVICECALLBACKS *pUMCallbacks;
const D3D11DDI_CORELAYER_DEVICECALLBACKS *p11UMCallbacks;
const D3DWDDM2_0DDI_CORELAYER_DEVICECALLBACKS *pWDDM2_0UMCallbacks;
const D3DWDDM2_2DDI_CORELAYER_DEVICECALLBACKS *pWDDM2_2UMCallbacks;
const D3DWDDM2_6DDI_CORELAYER_DEVICECALLBACKS *pWDDM2_6UMCallbacks;
};
UINT Flags;
PFND3D10DDI_RETRIEVESUBOBJECT *ppfnRetrieveSubObject;
} D3D10DDIARG_CREATEDEVICE;
メンバーズ
hRTDevice
[in]Direct3D ランタイムへの呼び出し時にドライバーが使用するハンドルを指定するディスプレイ デバイス (グラフィックス コンテキスト) のハンドル (つまり、ドライバーは、pKTCallbacks メンバーが指定する関数を呼び出すとき)。
Interface
[in]Direct3D インターフェイスのバージョン。 上位 16 ビットにはメジャー リリース番号 (10、11 など) が格納されます。下位 16 ビットにはマイナー リリース番号 (0、1、2 など) が格納されます。 マイナー リリース番号は、インターフェイスの変更がリリースされたときに増やされます。
Version
[in]ドライバーが Direct3D ランタイムがビルドされたタイミングを識別するために使用できる番号。 上位 16 ビットはビルド番号を表します。下位 16 ビットはリビジョン番号を表します。
ドライバーは、上位 16 ビットのみを監視するために必要です。 ドライバーは、渡されるランタイム ビルド バージョンが、ドライバーの現在のビルド バージョン以上であることを確認する必要があります。 渡されたビルド バージョンに互換性がない場合、ドライバーは CreateDevice(D3D10) 関数からエラーを返す必要があります。
pKTCallbacks
[in]ドライバーがカーネル サービスへのアクセスに使用できる Direct3D ランタイム コールバック関数のテーブルを含む D3DDDI_DEVICECALLBACKS 構造体へのポインター。
pDeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルを埋める D3D10DDI_DEVICEFUNCS 構造体へのポインター。 Direct3D ランタイムは、これらの関数を使用して、ユーザー モードのディスプレイ ドライバーと通信します。
ドライバーは、指定された D3D10DDI_DEVICEFUNCS 構造体の Direct3D バージョン 10.0 関数を満たす必要があります、インターフェイス メンバーの値が D3D10_0_DDI_INTERFACE_VERSION場合です。
p10_1DeviceFuncs
[入力/出力]ユーザー モードのディスプレイ ドライバーがその関数のテーブルを埋める D3D10_1DDI_DEVICEFUNCS 構造体へのポインター。 Direct3D ランタイムのバージョン 10.1 では、これらの関数を使用してユーザー モード ディスプレイ ドライバーと通信します。
ドライバーは、インターフェイス メンバーの値が D3D10_1_DDI_INTERFACE_VERSIONされている場合、指定された D3D10_1DDI_DEVICEFUNCS 構造体で Direct3D バージョン 10.1 関数を満たす必要があります。
WINDOWS Vista SP1 および Windows Server 2008 以降でサポートされます。
p11DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルで埋める D3D11DDI_DEVICEFUNCS 構造体へのポインター。 Direct3D ランタイムのバージョン 11 では、これらの関数を使用してユーザー モードのディスプレイ ドライバーと通信します。
ドライバーは、インターフェイス メンバーの値が D3D11_0_DDI_INTERFACE_VERSIONされている場合、指定された D3D11DDI_DEVICEFUNCS 構造体で Direct3D バージョン 11.0 関数を満たす必要があります。
Windows 7 以降でサポートされています。
p11_1DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルで埋める D3D11_1DDI_DEVICEFUNCS 構造体へのポインター。 バージョン 11.1 以降、Direct3D ランタイムはこれらの関数を使用して、ユーザー モードのディスプレイ ドライバーと通信します。
ドライバーは、インターフェイス メンバーの値が D3D11_1_DDI_INTERFACE_VERSION場合に、指定された D3D11_1DDI_DEVICEFUNCS 構造体の Direct3D バージョン 11.1 関数を満たす必要があります。
Windows 8 以降でサポートされています。
pWDDM1_3DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルで埋める D3DWDDM1_3DDI_DEVICEFUNCS 構造体へのポインター。 Direct3D ランタイムのバージョン 11.2 では、これらの関数を使用してユーザー モード ディスプレイ ドライバーと通信します。
インターフェイス メンバーの値が D3DWDDM1_3_DDI_INTERFACE_VERSIONされている場合、ドライバーは、指定された D3DWDDM1_3DDI_DEVICEFUNCS 構造体の Direct3D バージョン 11.2 関数を満たす必要があります。
Windows 8.1 以降でサポートされています。
pWDDM2_0DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルを埋める D3DWDDM2_0DDI_DEVICEFUNCS 構造体へのポインター。 ドライバーは、インターフェイス メンバーの値が D3DWDDM2_0_DDI_INTERFACE_VERSION場合に、指定された構造体内の Direct3D 関数を満たす必要があります。
pWDDM2_1DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルで埋める D3DWDDM2_1DDI_DEVICEFUNCS 構造体へのポインター。 ドライバーは、インターフェイス メンバーの値が D3DWDDM2_0_DDI_INTERFACE_VERSION場合に、指定された構造体内の Direct3D 関数を満たす必要があります。
pWDDM2_2DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルを埋める D3DWDDM2_2DDI_DEVICEFUNCS 構造体へのポインター。 ドライバーは、インターフェイス メンバーの値が D3DWDDM2_0_DDI_INTERFACE_VERSION場合に、指定された構造体内の Direct3D 関数を満たす必要があります。
pWDDM2_6DeviceFuncs
[入力/出力]ユーザー モード ディスプレイ ドライバーがその関数のテーブルで埋める D3DWDDM2_6DDI_DEVICEFUNCS 構造体へのポインター。 ドライバーは、インターフェイス メンバーの値が D3DWDDM2_0_DDI_INTERFACE_VERSION場合に、指定された構造体内の Direct3D 関数を満たす必要があります。
Windows 10 バージョン 1901 以降でサポートされています。
hDrvDevice
[入力/出力]Direct3D ランタイムがディスプレイ デバイスを識別するために後続のドライバー呼び出しで使用するディスプレイ デバイス (グラフィックス コンテキスト) へのハンドル。
DXGIBaseDDI
[入力/出力]DXGI へのアクセスを提供する DXGI_DDI_BASE_ARGS 構造体。 DXGI DDI は、レンダリングされたフレームを出力に表示する、ガンマを制御する、全画面表示の遷移を管理するなどの低レベルのタスクを処理します。
hRTCoreLayer
[in]ドライバーが Direct3D ランタイムを呼び出して Direct3D 10 のコア機能にアクセスするときに使用するハンドル (つまり、ドライバーが pUMCallbacks メンバーが指定する関数を呼び出すとき)。
pUMCallbacks
[in]ドライバーが主要なユーザー モード ランタイム機能にアクセスするために使用できる Direct3D 10 ランタイム コールバック関数のテーブルを含む D3D10DDI_CORELAYER_DEVICECALLBACKS 構造体へのポインター。
p11UMCallbacks
[in]Direct3D 10 および Direct3D 11 ランタイム コールバック関数のテーブルを含む D3D11DDI_CORELAYER_DEVICECALLBACKS 構造体へのポインター。ドライバーは、ユーザー モードランタイムのコア機能にアクセスするために使用できます。
Windows 7 以降でサポートされています。
pWDDM2_0UMCallbacks
[in]Direct3D 10、Direct3D 11、WDDM 2.0 ランタイム コールバック関数のテーブルを含む D3DWDDM2_0DDI_CORELAYER_DEVICECALLBACKS 構造体へのポインター。ドライバーは、ユーザー モードランタイムのコア機能にアクセスするために使用できます。
pWDDM2_2UMCallbacks
[in]Direct3D 10、Direct3D 11、WDDM 2.0、WDDM 2.2 ランタイム コールバック関数のテーブルを含む D3DWDDM2_2DDI_CORELAYER_DEVICECALLBACKS 構造体へのポインター。ドライバーは、コア ユーザー モード ランタイム機能にアクセスするために使用できます。
pWDDM2_6UMCallbacks
[in]Direct3D 10、Direct3D 11、WDDM 2.0、WDDM 2.2、WDDM 2.6 ランタイム コールバック関数のテーブルを含む D3DWDDM2_6DDI_CORELAYER_DEVICECALLBACKS 構造体へのポインター。ドライバーは、コア ユーザー モード ランタイム機能にアクセスするために使用できます。
Flags
[in]ディスプレイ デバイスの作成方法を識別するフラグ値の有効なビットごとの OR。 Direct3D ランタイムでは、次のフラグがサポートされています。
旗 | 意味 |
---|---|
D3D10DDI_CREATEDEVICE_FLAG_DISABLE_EXTRA_THREAD_CREATION (0x1) | このフラグが設定されている場合、ユーザー モードのディスプレイ ドライバーは、Direct3D ランタイムからの関数の呼び出しを処理するときに、複数のスレッドを同時に実行しないでください。 通常、ドライバーは、D3D10DDI_CREATEDEVICE_FLAG_DISABLE_EXTRA_THREAD_CREATION フラグが設定されていない限り、複数のスレッドを起動して実行して操作をより高速に処理できます。 |
D3D11DDI_CREATEDEVICE_FLAG_SINGLETHREADED (0x10) | アプリケーションがシングル スレッドであることをユーザー モードのディスプレイ ドライバーに通知します。 Direct3D 11 ランタイムでは、ドライバーでこの操作モードが許可されている場合、複数のアプリケーション スレッドがドライバーに入ることができます。 ただし、すべてのアプリケーションで複数のスレッドを実行できるわけではありません。 このフラグが設定されている場合、ドライバーは複数のスレッドが入力して同時に実行することを想定していません。 このフラグが設定されている場合、ドライバーは同期を回避できます。 Windows 7 以降でサポートされています。 |
Flags メンバーの0xE マスクに設定されているフラグ | ドライバーがディスプレイ デバイスをサポートする必要がある 3-D パイプラインのレベルを表します。 「解説」を参照してください。 Windows 7 以降でサポートされています。 |
ppfnRetrieveSubObject
[入力/出力]Direct3D ドライバー デバイス オブジェクトのサブパーツを取得する RetrieveSubObject(D3D11_1) 関数へのポインター。
Windows 8 以降でサポートされています。
備考
ドライバーは、インターフェイス および Version メンバーの値を調べて、pDeviceFuncs がする D3D10DDI_DEVICEFUNCS、D3D10_1DDI_DEVICEFUNCS、D3D11DDI_DEVICEFUNCS、D3D11_1DDI_DEVICEFUNCS、または D3DWDDM1_3DDI_DEVICEFUNCS 構造体を満たすかどうかを判断します。 p10_1DeviceFuncs、p11DeviceFuncs 、p11_1DeviceFuncs、または pWDDM1_3DeviceFuncs メンバーがドライバーの関数を指します。 D3d10umddi.h の次の定数は、ドライバーが Interface および バージョンで見つける定数の例です。
#define D3D10_1_DDI_MINOR_VERSION 2
#define D3D10_1_DDI_INTERFACE_VERSION ((D3D10_DDI_MAJOR_VERSION << 16) | D3D10_1_DDI_MINOR_VERSION)
#define D3D10_1_DDI_BUILD_VERSION 1
#define D3D10_1_DDI_SUPPORTED ((((UINT64)D3D10_1_DDI_INTERFACE_VERSION) << 32) | (((UINT64)D3D10_1_DDI_BUILD_VERSION) << 16))
オペレーティング システム、Direct3D、Windows ディスプレイ ドライバー モデル (WDDM) のさまざまなバージョンの定数の他の可能な組み合わせは、D3d10umddi.h ヘッダーに記載されています。
Flags メンバーの0xE マスクに設定されているフラグの場合、ドライバーは次の定数とマクロを使用して、サポートする 3-D パイプライン レベルを表す D3D11DDI_3DPIPELINELEVEL 列挙から値の 1 つを抽出します。 Flags メンバーの値は、D3D11DDI_3DPIPELINESUPPORT_CAPS 構造体の Caps メンバーのように書式設定されます。
#define D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_SHIFT (0x1)
#define D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_MASK (0x7 << D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_SHIFT)
#define D3D11DDI_EXTRACT_3DPIPELINELEVEL_FROM_FLAGS( Flags ) \
((D3D11DDI_3DPIPELINELEVEL)(((Flags) & D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_MASK) >> \
D3D11DDI_CREATEDEVICE_FLAG_3DPIPELINESUPPORT_SHIFT))
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista |
ヘッダー | d3d10umddi.h (D3d10umddi.h を含む) |
関連項目
D3D10DDI_CORELAYER_DEVICECALLBACKS
D3D11DDI_3DPIPELINESUPPORT_CAPS
D3D11DDI_CORELAYER_DEVICECALLBACKS
DxgkDdiCreateDeviceをする
RetrieveSubObject(D3D11_1)の