> ## 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.

# CreateReservedResource1 (XBOX Series 主机)

> 创建一个已保留但尚未映射到堆中任何页面的资源（可选地用于受保护会话）。

创建一个已保留但尚未映射到堆中任何页面的资源（可选地用于受保护会话）。另请参阅 [ID3D12Device::CreateReservedResource](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createreservedresource_public)。

<Note>
  只有使用相同受保护资源会话创建的堆中的图块才能映射到受保护的保留资源中。
</Note>

## 语法

```cpp theme={null}
HRESULT CreateReservedResource1(
    const D3D12_RESOURCE_DESC  pDesc,
    D3D12_RESOURCE_STATES InitialState,
    const D3D12_CLEAR_VALUE  pOptimizedClearValue,
    ID3D12ProtectedResourceSession  pProtectedSession,
    const IID & riid,
    void  ppvResource
)
```

### 参数

*pDesc \[in]*\
类型：const D3D12\_RESOURCE\_DESC \*

指向 **D3D12\_RESOURCE\_DESC** 结构的指针，该结构描述资源。

*InitialState \[in]*\
类型：D3D12\_RESOURCE\_STATES

资源的初始状态，作为 **D3D12\_RESOURCE\_STATES** 枚举常量的按位或组合。

*pOptimizedClearValue \[in, optional]*\
类型：const D3D12\_CLEAR\_VALUE \*

指定 **D3D12\_CLEAR\_VALUE** 结构，该结构描述清除颜色的默认值。

*pOptimizedClearValue* 指定一个使清除操作最优的值。当创建的资源是带有 [D3D12\_RESOURCE\_FLAG\_ALLOW\_RENDER\_TARGET](/reference/graphics/d3d12_x/enums/d3d12_resource_flags) 或 **D3D12\_RESOURCE\_FLAG\_ALLOW\_DEPTH\_STENCIL** 标志的纹理时，应选择最常用于调用清除操作的值。您可以使用其他值调用清除操作，但这些操作不如在值与传递给资源创建时的值匹配的情况下高效。

当您使用 [D3D12\_RESOURCE\_DIMENSION\_BUFFER](/reference/graphics/d3d12_x/enums/d3d12_resource_dimension) 时，必须将 *pOptimizedClearValue* 设置为 `nullptr`。

*pProtectedSession \[in, optional]*\
类型：ID3D12ProtectedResourceSession \*

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

*riid \[in]*\
类型：const IID &

对要在 *ppvResource* 中返回的资源接口的全局唯一标识符 (**GUID**) 的引用。请参阅**备注**。

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

*ppvResource \[out, optional]*\
类型：void \*\*

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

*ppvResource* 可以为 `nullptr`，以启用功能测试。当 *ppvResource* 为 `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)。

## 备注

**CreateReservedResource** 等价于 Direct3D 11 中的 [D3D11\_RESOURCE\_MISC\_TILED](https://learn.microsoft.com/en-us/windows/win32/api/d3d11/ne-d3d11-d3d11_resource_misc_flag)。它仅使用虚拟内存创建资源，没有后备存储。

您需要使用 [CopyTileMappings](/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_copytilemappings_public) 和 [UpdateTileMappings](/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_updatetilemappings_public) 将资源映射到物理内存（即，映射到堆）。

只有当适配器支持平铺资源 1 层或更高层时，才能创建这些资源类型。平铺资源层定义了访问未映射到堆的资源的行为。

## 要求

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

## 另请参阅

[CreateCommittedResource1](/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createcommittedresource1_public)

[CreatePlacedResource](/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public)

[ID3D12Device4](/reference/graphics/d3d12/interfaces/id3d12device4/id3d12device4_public)


## Related topics

- [CreateCommittedResource1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createcommittedresource1_public.md)
- [CreateReservedResource2 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createreservedresource2_public.md)
- [CreatePlacedResource2 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device10/methods/id3d12device10_createplacedresource2_public.md)
- [CreateHeap1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createheap1_public.md)
- [CreateCommandQueue1 (XBOX Series 主机)](/zh-CN/reference/graphics/d3d12/interfaces/id3d12device9/methods/id3d12device9_createcommandqueue1_public.md)
