다음을 통해 공유


ID3D12DeviceChild::GetDevice 메서드(d3d12.h)

이 인터페이스를 만든 디바이스에 대한 포인터를 가져옵니다.

구문

HRESULT GetDevice(
                  REFIID riid,
  [out, optional] void   **ppvDevice
);

매개 변수

riid

형식: REFIID

디바이스 인터페이스에 대한 GUID(Globally Unique Identifier)입니다. 디바이스에 대한 인터페이스의 REFIID 또는 GUID는 __uuidof() 매크로를 사용하여 가져올 수 있습니다. 예를 들어 __uuidof(ID3D12Device)는 디바이스에 대한 인터페이스의 GUID 를 가져옵니다.

[out, optional] ppvDevice

형식: void**

디바이스의 ID3D12Device 인터페이스에 대한 포인터를 수신하는 메모리 블록에 대한 포인터입니다.

반환 값

형식: HRESULT

이 메서드는 Direct3D 12 반환 코드 중 하나를 반환합니다.

설명

반환된 모든 인터페이스에는 참조 수가 1씩 증가하므로 반환된 포인터가 해제되기 전에 ::release()를 호출해야 합니다. 그렇지 않으면 메모리 누수가 발생합니다.

예제

D3D12Multithreading 샘플은 다음과 같이 ID3D12DeviceChild::GetDevice를 사용합니다.

// Returns required size of a buffer to be used for data upload
inline UINT64 GetRequiredIntermediateSize(
    _In_ ID3D12Resource* pDestinationResource,
    _In_range_(0,D3D12_REQ_SUBRESOURCES) UINT FirstSubresource,
    _In_range_(0,D3D12_REQ_SUBRESOURCES-FirstSubresource) UINT NumSubresources)
{
    D3D12_RESOURCE_DESC Desc = pDestinationResource->GetDesc();
    UINT64 RequiredSize = 0;
    
    ID3D12Device* pDevice;
    pDestinationResource->GetDevice(__uuidof(*pDevice), reinterpret_cast<void**>(&pDevice));
    pDevice->GetCopyableFootprints(&Desc, FirstSubresource, NumSubresources, 0, nullptr, nullptr, nullptr, &RequiredSize);
    pDevice->Release();
    
    return RequiredSize;
}

D3D12 참조의 예제 코드를 참조하세요.

요구 사항

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

추가 정보

ID3D12DeviceChild