> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CreateHeap1 (XBOX Series 主机)

> 创建可用于放置资源和保留资源的堆（可选地用于受保护会话）。

创建可用于放置资源和保留资源的堆（可选地用于受保护会话）。另请参阅 [ID3D12Device::CreateHeap](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createheap_public)。

## 语法

```cpp theme={null}
HRESULT CreateHeap1(
    const D3D12_HEAP_DESC  pDesc,
    ID3D12ProtectedResourceSession  pProtectedSession,
    const IID & riid,
    void  ppvHeap
)
```

### 参数

*pDesc \[in]*<br />类型：const D3D12\_HEAP\_DESC \*

指向描述堆的常量 **D3D12\_HEAP\_DESC** 结构的指针。

*pProtectedSession \[in, optional]*<br />类型：ID3D12ProtectedResourceSession \*

一个可选指针，指向表示内容保护会话的对象。如果提供，则该会话表明该堆应受到保护。可以通过调用 [ID3D12Device4::CreateProtectedResourceSession](/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createprotectedresourcesession_public) 获取 **ID3D12ProtectedResourceSession**。

带有受保护会话的堆无法使用 [D3D12\_HEAP\_FLAG\_SHARED\_CROSS\_ADAPTER](/reference/graphics/d3d12_x/enums/d3d12_heap_flags) 标志创建。

*riid \[in]*<br />类型：const IID &

对要在 *ppvHeap* 中返回的堆接口的全局唯一标识符 (**GUID**) 的引用。

虽然 *riidResource* 最常见的是 [ID3D12Heap](/reference/graphics/d3d12/interfaces/id3d12heap/id3d12heap_public) 的 **GUID**，但它可以是任何接口的 **GUID**。如果资源对象不支持此 **GUID** 的接口，则创建将失败并返回 **E\_NOINTERFACE**。

*ppvHeap \[out, optional]*<br />类型：void \*\*

一个可选指针，指向接收所创建堆对象的请求接口指针的内存块。

*ppvHeap* 可以为 `nullptr`，以启用功能测试。当 *ppvHeap* 为 `nullptr` 时，不会创建对象，并且在 *pDesc* 有效时返回 **S\_FALSE**。

### 返回值

类型：HRESULT

如果函数成功，则返回 **S\_OK**。否则，返回 [**HRESULT**](https://learn.microsoft.com/en-us/windows/desktop/com/structure-of-com-error-codes) [错误代码](https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-10)。

| 返回值            | 描述          |
| -------------- | ----------- |
| E\_OUTOFMEMORY | 内存不足，无法创建堆。 |

有关其他可能的返回值，请参阅 [Direct3D 12 返回代码](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues)。

## 备注

**CreateHeap1** 创建可用于放置资源和保留资源的堆。

在释放堆的最后一个引用之前，您的应用程序必须确保 GPU 不再读取或写入此堆。

放置资源对象持有对创建它所在堆的引用；但保留资源不会为对堆所做的每个映射持有引用。

## 要求

**头文件：** d3d12\_xs.h<br />**库：** d3d12\_xs.lib<br />**支持的平台**：XBOX Series 主机

## 另请参阅


## Related topics

- [CreatePlacedResource2 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createplacedresource2_public.md)
- [CreateReservedResource2 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createreservedresource2_public.md)
- [CreateCommandQueue1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device9/methods/id3d12device9_createcommandqueue1_public.md)
- [CreateMetaCommand (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device5/methods/id3d12device5_createmetacommand_public.md)
- [CreateCommandList1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createcommandlist1_public.md)
