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 instance ISwapChainPanelNative 인터페이스를 쿼리하고 SetSwapChain(IDXGISwapChain *swapChain)을 호출하여 이를 수행합니다.

이 프로세스는 프로세스 스왑 체인에서 에 대한 포인터에 대해 작동합니다. 그러나 포그라운드 프로세스가 일시 중단되거나 종료될 때 백그라운드 프로세스에서 연속 호출을 사용하도록 설정하는 2개 프로세스 모델을 사용하는 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