다음을 통해 공유


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 포인터가 있는 두 개의 리소스 개체를 받게 됩니다.

두 디바이스 간에 리소스를 공유하려면

  1. 공유로 리소스를 만들고 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 플래그를 설정하여 NT 핸들을 사용되도록 지정합니다.
  2. __uuidof() 매크로를 사용하여 리소스에 대한 인터페이스의 REFIID 또는 GUID를 가져옵니다. 예를 들어 __uuidof(ID3D11Texture2D)는 인터페이스의 GUID를 2D 텍스처로 검색합니다.
  3. IDXGIResource1 인터페이스에 대한 리소스를 쿼리합니다.
  4. 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

추가 정보

ID3D11Device1