ID3D12Device::CreateSharedHandle 메서드(d3d12.h)

힙, 리소스 또는 펜스 개체에 대한 공유 핸들을 만듭니다.

구문

HRESULT CreateSharedHandle(
  [in]           ID3D12DeviceChild         *pObject,
  [in, optional] const SECURITY_ATTRIBUTES *pAttributes,
                 DWORD                     Access,
  [in, optional] LPCWSTR                   Name,
  [out]          HANDLE                    *pHandle
);

매개 변수

[in] pObject

형식: ID3D12DeviceChild*

공유를 위해 만들 힙, 리소스 또는 펜스 개체를 나타내는 ID3D12DeviceChild 인터페이스에 대한 포인터입니다. 다음 인터페이스( ID3D12DeviceChild에서 파생됨)가 지원됩니다.

[in, optional] pAttributes

형식: const SECURITY_ATTRIBUTES*

별도의 두 개의 관련 데이터 멤버인 선택적 보안 설명자와 자식 프로세스가 반환된 핸들을 상속할 수 있는지 여부를 결정하는 부울 값이 포함된 SECURITY_ATTRIBUTES 구조체에 대한 포인터입니다.

애플리케이션에서 만들 수 있는 자식 프로세스가 CreateSharedHandle에서 반환된 핸들을 상속하지 않도록 하고 반환된 핸들과 연결된 리소스를 기본 보안 설명자를 가져오는 경우 이 매개 변수를 NULL로 설정합니다.

구조체의 lpSecurityDescriptor 멤버는 리소스에 대한 SECURITY_DESCRIPTOR 지정합니다. 런타임에서 반환된 핸들과 연결된 리소스에 기본 보안 설명자를 할당하려면 이 멤버를 NULL 로 설정합니다. 리소스에 대한 기본 보안 설명자의 ACL은 작성자의 기본 또는 가장 토큰에서 가져옵니다. 자세한 내용은 동기화 개체 보안 및 액세스 권한을 참조하세요.

Access

형식: DWORD

현재 이 매개 변수가 허용하는 유일한 값은 GENERIC_ALL.

[in, optional] Name

형식: LPCWSTR

공유 힙과 연결할 이름을 포함하는 NULL로 끝나는 UNICODE 문자열입니다. 이름은 MAX_PATH 문자로 제한됩니다. 이름 비교는 대/소문자를 구분합니다.

Name이 기존 리소스의 이름과 일치하면 CreateSharedHandle이DXGI_ERROR_NAME_ALREADY_EXISTS 실패합니다. 이러한 개체는 동일한 네임스페이스를 공유하기 때문에 발생합니다.

이름에는 전역 또는 세션 네임스페이스에 개체를 명시적으로 만드는 "전역" 또는 "로컬" 접두사를 사용할 수 있습니다. 이름의 나머지 부분에는 백슬래시 문자(\)를 제외한 모든 문자가 포함될 수 있습니다. 자세한 내용은 커널 개체 네임스페이스를 참조하세요. 빠른 사용자 전환은 터미널 서비스 세션을 사용하여 구현됩니다. 커널 개체 이름은 애플리케이션이 여러 사용자를 지원할 수 있도록 터미널 서비스에 대해 설명된 지침을 따라야 합니다.

개체는 프라이빗 네임스페이스에서 만들 수 있습니다. 자세한 내용은 개체 네임스페이스를 참조하세요.

[out] pHandle

형식: HANDLE*

공유할 리소스에 대한 NT HANDLE 값을 받는 변수에 대한 포인터입니다. 호출에서 이 핸들을 사용하여 리소스에 액세스할 수 있습니다.

반환 값

형식: HRESULT

성공하면 S_OK 반환합니다. 그렇지 않으면 다음 값 중 하나를 반환합니다.

  • 매개 변수 중 하나가 잘못된지 DXGI_ERROR_INVALID_CALL.
  • 공유 하려는 리소스의 제공된 이름이 이미 다른 리소스와 연결되어 있는지 DXGI_ERROR_NAME_ALREADY_EXISTS.
  • 개체가 보호된 네임스페이스에 만들어지는지 E_ACCESSDENIED.
  • 핸들을 만드는 데 충분한 메모리를 사용할 수 없는 경우 E_OUTOFMEMORY.
  • Direct3D 12 반환 코드 항목에 설명된 다른 오류 코드일 수 있습니다.

설명

두 힙 및 커밋된 리소스를 공유할 수 있습니다. 커밋된 리소스 공유는 커밋된 리소스 설명과 함께 암시적 힙을 공유하므로 호환되는 리소스 설명을 다른 디바이스에서 힙에 매핑할 수 있습니다.

Direct3D 11 및 Direct3D 12 interop 시나리오의 경우 ID3D11Device5::OpenSharedFence 메서드를 사용하여 DirectX 11에서 공유 펜스가 열리고 ID3D11Device::OpenSharedResource1 메서드를 사용하여 공유 리소스가 열립니다.

Direct3D 12의 경우 ID3D12Device::OpenSharedHandle 또는 ID3D12Device::OpenSharedHandleByName 메서드를 사용하여 공유 핸들이 열립니다.

요구 사항

   
대상 플랫폼 Windows
헤더 d3d12.h
라이브러리 D3D12.lib
DLL D3D12.dll

추가 정보

ID3D12Device