ID3D11Device1::OpenSharedResource1 메서드(d3d11_1.h)
핸들에서 참조하고 다른 디바이스에서 만든 공유 리소스에 대한 액세스 권한을 디바이스에 제공합니다. 이전에 리소스를 공유로 만들고 NT 핸들(즉, D3D11_RESOURCE_MISC_SHARED_NTHANDLE 플래그 설정)을 사용하도록 지정해야 합니다.
구문
HRESULT OpenSharedResource1(
[in] HANDLE hResource,
[in] REFIID returnedInterface,
[out] void **ppResource
);
매개 변수
[in] hResource
열 리소스에 대한 핸들입니다. 이 매개 변수에 대한 자세한 내용은 비고를 참조하세요.
[in] returnedInterface
리소스 인터페이스에 대한 GUID(Globally Unique Identifier)입니다. 이 매개 변수에 대한 자세한 내용은 비고를 참조하세요.
[out] ppResource
공유 리소스 개체가 액세스할 인터페이스에 대한 포인터를 수신하는 변수에 대한 포인터입니다.
반환 값
이 메서드는 Direct3D 11 반환 코드 중 하나를 반환합니다. 또한 이 메서드는 리소스에 액세스할 수 있는 권한이 유효하지 않은 경우 E_ACCESSDENIED 반환합니다.
Windows 7용 플랫폼 업데이트: Windows 7용 플랫폼 업데이트가 설치된 Windows 7 또는 Windows Server 2008 R2에서는 NTHANDLES가 사용되므로 OpenSharedResource1 이 E_NOTIMPL 실패합니다. Windows 7용 플랫폼 업데이트에 대한 자세한 내용은 Windows 7용 플랫폼 업데이트를 참조하세요.
설명
OpenSharedResource1의 동작은 ID3D11Device::OpenSharedResource 메서드의 동작과 유사합니다. 리소스에 액세스하기 위해 OpenSharedResource1을 호출할 때마다 새 리소스 개체가 만들어집니다. 즉, OpenSharedResource1을 두 번 호출하고 동일한 리소스 핸들을 hResource에 전달하는 경우 다른 IUnknown 포인터가 있는 두 개의 리소스 개체를 받게 됩니다.
두 디바이스 간에 리소스를 공유하려면
- 공유로 리소스를 만들고 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 플래그를 설정하여 NT 핸들을 사용되도록 지정합니다.
- __uuidof() 매크로를 사용하여 리소스에 대한 인터페이스의 REFIID 또는 GUID를 가져옵니다. 예를 들어 __uuidof(ID3D11Texture2D)는 인터페이스의 GUID를 2D 텍스처로 검색합니다.
- IDXGIResource1 인터페이스에 대한 리소스를 쿼리합니다.
- IDXGIResource1::CreateSharedHandle 메서드를 호출하여 리소스에 대한 고유 핸들을 가져옵니다.
예제
HANDLE handle = GetSharedHandleFromOtherProcess();
ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;
pDevice->OpenSharedResource1(
handle,
__uuidof(ID3D11Texture2D),
(void**)&pTexture2D);
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
지원되는 최소 서버 | Windows Server 2008 R2용 Windows Server 2012 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱] |
대상 플랫폼 | Windows |
헤더 | d3d11_1.h |
라이브러리 | D3D11.lib |