Win32 API 日本語リファレンス
ホームSystem.WinRT.Xaml › ISwapChainPanelNative

ISwapChainPanelNative

COM
IIDf92f19d2-3ade-45a6-a20c-f6f1ea90554b継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

ISwapChainPanelNative インターフェイス (windows.ui.xaml.media.dxinterop.h) は、XAML と DirectX のスワップチェーンとの間の相互運用を提供します。

解説(Remarks)

このインターフェイスは、Windows::UI::XAML::Control::SwapChainPanel Windows ランタイム型のネイティブ実装を提供します。ISwapChainPanelNative へのポインターを取得するには、SwapChainPanel インスタンスを IInspectable または IUnknown にキャストし、QueryInterface を呼び出す必要があります。


Microsoft::WRL::ComPtr<ISwapChainPanelNative>	m_swapChainNative;
// ...
IInspectable* panelInspectable = (IInspectable*) reinterpret_cast<IInspectable*>(swapChainPanel);
panelInspectable->QueryInterface(__uuidof(ISwapChainPanelNative), (void **)&m_swapChainNative);
    

メソッド 1

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

vtbl 3 HRESULT SetSwapChain(IDXGISwapChain* swapChain)

SwapChainPanel の DirectX スワップチェーンを設定します。

swapChainIDXGISwapChain*in構成済みの IDXGISwapChain

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

このメソッドは、親である SwapChainPanel が属する UI スレッド上で呼び出す必要があります。別のスレッドで呼び出した場合は 0x8001010E (RPC_E_WRONG_THREAD、「アプリケーションは、別のスレッド用にマーシャリングされたインターフェイスを呼び出しました」) を返します。

呼び出されると、このメソッドは入力として渡された IDXGISwapChain の参照カウントをインクリメントします。これに伴い、使用中の対象グラフィックスデバイス (たとえば ID3D12Device) の参照カウントもインクリメントされます。パネルが不要になった時点でこれらの参照を直ちに解放できるようにするには、SetSwapChain を再度呼び出して null ポインターを渡すことができます。これにより、SwapChainPanel インスタンスによって追加された、入力の IDXGISwapChain を起点とするオブジェクトグラフへの追加参照がすべて削除されます。これは、たとえばデバイスロスト (device lost) のシナリオから回復する場合など、使用中のデバイスを適切に解放できるようにするうえで特に重要です。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ISwapChainPanelNative "{F92F19D2-3ADE-45A6-A20C-F6F1EA90554B}"
#usecom global ISwapChainPanelNative IID_ISwapChainPanelNative "{}"
#comfunc global ISwapChainPanelNative_SetSwapChain  3 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。