ID3D12DeviceChild::GetDevice 方法 (d3d12.h)

获取指向创建此接口的设备的指针。

语法

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

参数

riid

类型: REFIID

设备接口的全局唯一标识符 (GUID) 。 可以使用 __uuidof () 宏获取设备接口的 REFIIDGUID。 例如,__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
Library D3D12.lib
DLL D3D12.dll

另请参阅

ID3D12DeviceChild