다음을 통해 공유


ID3D11Device1::OpenSharedResourceByName 메서드(d3d11_1.h)

이름으로 참조되고 다른 디바이스에서 생성된 공유 리소스에 대한 액세스 권한을 디바이스에 부여합니다. 이전에 리소스를 공유로 만들고 NT 핸들(즉, D3D11_RESOURCE_MISC_SHARED_NTHANDLE 플래그 설정)을 사용하도록 지정해야 합니다.

구문

HRESULT OpenSharedResourceByName(
  [in]  LPCWSTR lpName,
  [in]  DWORD   dwDesiredAccess,
  [in]  REFIID  returnedInterface,
  [out] void    **ppResource
);

매개 변수

[in] lpName

열 리소스의 이름입니다. 이 매개 변수는 NULL일 수 없습니다.

[in] dwDesiredAccess

리소스에 대한 요청된 액세스 권한입니다. DXGI는 일반 액세스 권한 외에도 다음 값을 정의합니다.

  • DXGI_SHARED_RESOURCE_READ ( 0x80000000L) - 리소스에 대한 읽기 권한을 지정합니다.
  • DXGI_SHARED_RESOURCE_WRITE ( 1 ) - 리소스에 대한 쓰기 액세스를 지정합니다.
비트 OR 연산을 사용하여 값을 결합할 수 있습니다.

[in] returnedInterface

리소스 인터페이스에 대한 GUID(Globally Unique Identifier)입니다. 자세한 내용은 비고를 참조하세요.

[out] ppResource

공유 리소스 개체가 액세스할 인터페이스에 대한 포인터를 수신하는 변수에 대한 포인터입니다.

반환 값

이 메서드는 Direct3D 11 반환 코드 중 하나를 반환합니다. 또한 이 메서드는 리소스에 액세스할 수 있는 권한이 유효하지 않은 경우 E_ACCESSDENIED 반환합니다.

Windows 7용 플랫폼 업데이트: Windows 7 용 플랫폼 업데이트 가 설치된 Windows 7 또는 Windows Server 2008 R2에서는 NTHANDLES가 사용되므로 OpenSharedResourceByName 이 E_NOTIMPL 실패합니다. Windows 7용 플랫폼 업데이트에 대한 자세한 내용은 Windows 7용 플랫폼 업데이트를 참조하세요.

설명

OpenSharedResourceByName의 동작은 ID3D11Device1::OpenSharedResource1 메서드의 동작과 비슷합니다. 리소스에 액세스하기 위해 OpenSharedResourceByName을 호출할 때마다 새 리소스 개체가 만들어집니다. 즉, OpenSharedResourceByName 을 두 번 호출하고 동일한 리소스 이름을 lpName에 전달하는 경우 서로 다른 IUnknown 포인터가 있는 두 개의 리소스 개체를 받게 됩니다.

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

  1. 리소스를 공유로 만들고 D3D11_RESOURCE_MISC_SHARED_NTHANDLE 플래그를 설정하여 NT 핸들을 사용되도록 지정합니다.
  2. __uuidof() 매크로를 사용하여 리소스에 대한 인터페이스의 REFIID 또는 GUID를 가져옵니다. 예를 들어 __uuidof(ID3D11Texture2D)는 인터페이스의 GUID를 2D 텍스처로 검색합니다.
  3. IDXGIResource1 인터페이스에 대한 리소스를 쿼리합니다.
  4. IDXGIResource1::CreateSharedHandle 메서드를 호출하여 리소스에 대한 고유 핸들을 가져옵니다. 이 IDXGIResource1::CreateSharedHandle 호출에서 이후에 OpenSharedResourceByName 을 호출하여 이름으로 리소스에 액세스하려면 리소스의 이름을 전달해야 합니다.

예제

ID3D11Device1* pDevice;
ID3D11Texture2D* pTexture2D;

pDevice->OpenSharedResourceByName(
          "MySurface", 
          DXGI_SHARED_RESOURCE_READ, 
          __uuidof(ID3D11Texture2D), 
         (void**)&pTexture2D);

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 7용 Windows 8 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 R2용 Windows Server 2012 및 플랫폼 업데이트 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 d3d11_1.h
라이브러리 D3D11.lib

추가 정보

ID3D11Device1