ID3D12SDKConfiguration
COM公式ドキュメント
SDK の構成 (コンフィギュレーション) を行うメソッドを提供します。
解説(Remarks)
PIX のような API キャプチャを再生するツールや、HLK のようなテストハーネスは、再頒布可能パッケージ (redist) をサポートするために変更が必要です。これらのツールは、最新の redist を同梱して出荷することを選択できます。更新をまたいだ Direct3D の API 互換性により、API キャプチャツールは古いバージョンの Direct3D 12 SDK 上でキャプチャを行い、それを新しいバージョン上で再生できるはずです。ただし、一部のシナリオでは SDK バージョンの選択に、より高い柔軟性が求められます。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
使用する SDK バージョンを構成します。
| SDKVersion | DWORD | in | 設定する SDK バージョン。 |
| SDKPath | LPSTR | in | 指定した SDKVersion の d3d12core.dll への相対パスを示す、NULL 終端文字列。パスは呼び出し元プロセスの exe からの相対パスです。d3d12core.dll が見つからない場合、または指定した SDKVersion でない場合、Direct3D 12 のデバイス作成は失敗します。 |
戻り値
型: HRESULT
関数が成功した場合は S_OK を返します。それ以外の場合は、Direct3D 12 のリターンコードのいずれかを返します。
解説(Remarks)
このメソッドは Windows の開発者モードでのみ使用できます。
この API で SDK バージョンを設定するには、Direct3D 12 デバイスを作成する前に呼び出す必要があります。Direct3D 12 デバイスの作成後にこの API を呼び出すと、Direct3D 12 ランタイムはそのデバイスを削除します。
OS と共にインストールされている d3d12core.dll が、指定した SDK バージョンより新しい場合は、OS のバージョンが代わりに使用されます。
特定の D3D12Core.dll のバージョンは、エクスポートされたシンボル D3D12SDKVersion から取得できます。これは UINT 型の変数であり、Agility SDK を利用するためにアプリケーションからエクスポートされる変数と同様のものです。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D12SDKConfiguration "{E9EB5314-33AA-42B2-A718-D77F58B1F1C7}"
#usecom global ID3D12SDKConfiguration IID_ID3D12SDKConfiguration "{7CDA6ACA-A03E-49C8-9458-0334D20E07CE}"
#comfunc global ID3D12SDKConfiguration_SetSDKVersion 3 int,str
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。