ISwapChainPanelNative2::SetSwapChainHandle 方法 (windows.ui.xaml.media.dxinterop.h)
使用交換鏈結的句柄設定 SwapChainPanel 的 DirectX 交換鏈結。
語法
HRESULT SetSwapChainHandle(
[in] HANDLE swapChainHandle
);
參數
[in] swapChainHandle
交換鏈結的共用句柄。
傳回值
如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
SetSwapChain (HANDLE swapChainHandle) 允許藉由參考共用句柄來轉譯交換鏈結。
這可讓您在一個進程中建立交換鏈結,且必須傳遞至另一個進程的情況。
XAML 支援將 DXGI 交換鏈結設定為 SwapChainPanel 元素的內容。 應用程式可從 SwapChainPanel 實例查詢 ISwapChainPanelNative 介面,並呼叫 SetSwapChain (IDXGISwapChain *swapChain) 來達成此目的。
此程式適用於進程交換鏈結中的指標。 不過,這不適用於 VoIP 應用程式,其使用雙進程模型在前景進程暫停或關閉時,在背景進程上啟用繼續呼叫。 這個雙進程實作需要能夠將共用句柄傳遞至交換鏈結,而不是在背景進程上建立的指標,才能在前景應用程式中的 XAML SwapChainPanel 中轉譯。
<!-- XAML markup -->
<Page>
<SwapChainPanel x:Name=”captureStreamDisplayPanel” />
</Page>
// Definitions
ComPtr<IDXGISwapChain1> m_swapChain;
HANDLE m_swapChainHandle;
ComPtr<ID3D11Device> m_d3dDevice;
ComPtr<IDXGIAdapter> dxgiAdapter;
ComPtr<IDXGIFactory2> dxgiFactory;
ComPtr<IDXGIFactoryMedia> dxgiFactoryMedia;
ComPtr<IDXGIDevice> dxgiDevice;
DXGI_SWAP_CHAIN_DESC1 swapChainDesc = {0};
// Get DXGI factory (assume standard boilerplate has created D3D11Device)
m_d3dDevice.As(&dxgiDevice);
dxgiDevice->GetAdapter(&dxgiAdapter);
dxgiAdapter->GetParent(__uuidof(IDXGIFactory2), &dxgiFactory);
// Create swap chain and get handle
DCompositionCreateSurfaceHandle(GENERIC_ALL, nullptr, &m_swapChainHandle);
dxgiFactory.As(&dxgiFactoryMedia);
dxgiFactoryMedia->CreateSwapChainForCompositionSurfaceHandle(
m_d3dDevice.Get(),
m_swapChainHandle,
&swapChainDesc,
nullptr,
&m_swapChain
);
// Set swap chain to display in a SwapChainPanel
ComPtr<ISwapChainPanelNative2> panelNative;
reinterpret_cast<IUnknown*>(captureStreamDisplayPanel)->QueryInterface(IID_PPV_ARGS(&panelNative)));
panelNative->SetSwapChainHandle(m_swapChainHandle);
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 8.1 [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2012 R2 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | windows.ui.xaml.media.dxinterop.h |
Dll | Windows.UI.Xaml.dll |