ID3D10Multithread
COM公式ドキュメント
マルチスレッドインターフェイスはマルチスレッド設定にアクセスするもので、スレッドセーフレイヤーが有効になっている場合にのみ使用できます。
解説(Remarks)
このインターフェイスは、ID3D10Device Interface から IUnknown::QueryInterface を使用してクエリすることで取得します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
デバイスのクリティカルセクションに入ります。(ID3D10Multithread.Enter)
解説(Remarks)
デバイスのクリティカルセクションに入ると、(マルチスレッド保護 が true に設定されている場合)他のスレッドが同時にそのデバイスのメソッドを呼び出したり、DXGI メソッドを呼び出したり、すべてのリソース、ビュー、シェーダー、ステート、非同期インターフェイスのメソッドを呼び出したりすることを防ぎます。
この関数は、順序どおりに実行しなければならない一連のグラフィックスコマンドがある場合に、マルチスレッドアプリケーションで使用します。通常、この関数は一連のグラフィックスコマンドの先頭で呼び出し、それらのグラフィックスコマンドの後に ID3D10Multithread::Leave を呼び出します。
デバイスのクリティカルセクションから出ます。(ID3D10Multithread.Leave)
解説(Remarks)
この関数は通常、順序どおりに実行しなければならない一連のグラフィックスコマンドがある場合に、マルチスレッドアプリケーションで使用します。通常、一連のグラフィックスコマンドの先頭で ID3D10Multithread::Enter を呼び出し、それらのグラフィックスコマンドの後にこの関数を呼び出します。
マルチスレッドのオン/オフを切り替えます。
| bMTProtect | BOOL | in | マルチスレッドをオンにする場合は true、オフにする場合は false を指定します。 |
戻り値
型: BOOL
このメソッドを呼び出す前にマルチスレッドがオンになっていた場合は true、そうでない場合は false を返します。
マルチスレッドがオンになっているかどうかを調べます。
戻り値
型: BOOL
マルチスレッドがオンになっているかどうか。true はオン、false はオフを意味します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D10Multithread "{9B7E4E00-342C-4106-A19F-4F2704F689F0}"
#usecom global ID3D10Multithread IID_ID3D10Multithread "{}"
#comfunc global ID3D10Multithread_Enter 3
#comfunc global ID3D10Multithread_Leave 4
#comfunc global ID3D10Multithread_SetMultithreadProtected 5 int
#comfunc global ID3D10Multithread_GetMultithreadProtected 6
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。