Win32 API 日本語リファレンス
ホームGraphics.Direct3D10 › ID3D10Multithread

ID3D10Multithread

COM
IID9b7e4e00-342c-4106-a19f-4f2704f689f0継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

マルチスレッドインターフェイスはマルチスレッド設定にアクセスするもので、スレッドセーフレイヤーが有効になっている場合にのみ使用できます。

解説(Remarks)

このインターフェイスは、ID3D10Device Interface から IUnknown::QueryInterface を使用してクエリすることで取得します。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 void Enter()

デバイスのクリティカルセクションに入ります。(ID3D10Multithread.Enter)

解説(Remarks)

デバイスのクリティカルセクションに入ると、(マルチスレッド保護 が true に設定されている場合)他のスレッドが同時にそのデバイスのメソッドを呼び出したり、DXGI メソッドを呼び出したり、すべてのリソース、ビュー、シェーダー、ステート、非同期インターフェイスのメソッドを呼び出したりすることを防ぎます。

この関数は、順序どおりに実行しなければならない一連のグラフィックスコマンドがある場合に、マルチスレッドアプリケーションで使用します。通常、この関数は一連のグラフィックスコマンドの先頭で呼び出し、それらのグラフィックスコマンドの後に ID3D10Multithread::Leave を呼び出します。

vtbl 4 void Leave()

デバイスのクリティカルセクションから出ます。(ID3D10Multithread.Leave)

解説(Remarks)

この関数は通常、順序どおりに実行しなければならない一連のグラフィックスコマンドがある場合に、マルチスレッドアプリケーションで使用します。通常、一連のグラフィックスコマンドの先頭で ID3D10Multithread::Enter を呼び出し、それらのグラフィックスコマンドの後にこの関数を呼び出します。

vtbl 5 BOOL SetMultithreadProtected(BOOL bMTProtect)

マルチスレッドのオン/オフを切り替えます。

bMTProtectBOOLinマルチスレッドをオンにする場合は true、オフにする場合は false を指定します。

戻り値

型: BOOL

このメソッドを呼び出す前にマルチスレッドがオンになっていた場合は true、そうでない場合は false を返します。

vtbl 6 BOOL GetMultithreadProtected()

マルチスレッドがオンになっているかどうかを調べます。

戻り値

型: BOOL

マルチスレッドがオンになっているかどうか。true はオン、false はオフを意味します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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が無いため "{}"(他メソッド/アクティベーションで取得)。