共用方式為


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

另請參閱

ISwapChainPanelNative2