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

# CreateRootSignature

> 建立根簽章配置。

建立根簽章配置。

## 語法

```cpp theme={null}
HRESULT CreateRootSignature(
    UINT nodeMask,
    const void  pBlobWithRootSignature,
    SIZE_T blobLengthInBytes,
    const IID & riid,
    void  ppvRootSignature
)
```

### 參數

*nodeMask \[in]*\
類型：UINT

若為單一 GPU 作業，請將此設為零。如果有多個 GPU 節點，請設定位元以識別要套用根簽章的節點 (裝置的實體介面卡)。
遮罩中的每個位元都對應至單一節點。
請參閱[多介面卡系統](https://learn.microsoft.com/en-us/windows/win32/direct3d12/multi-engine)。

*pBlobWithRootSignature \[in]*\
類型：const void \*

指向序列化簽章來源資料的指標。

*blobLengthInBytes \[in]*\
類型：**[SIZE\_T](https://learn.microsoft.com/en-us/windows/win32/WinProg/windows-data-types)**

<i>pBlobWithRootSignature</i> 所指向記憶體區塊的大小 (以位元組為單位)。

*riid*\
類型：const IID &

根簽章介面的全域唯一識別碼 (**GUID**)。請參閱＜備註＞。
輸入參數。

*ppvRootSignature \[out]*\
類型：void \*\*

指向接收根簽章指標之記憶體區塊的指標。

### 傳回值

類型：HRESULT

如果成功，會傳回 **S\_OK**；否則會傳回其中一個 [Direct3D 12 傳回碼](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues)。

如果 <i>pBlobWithRootSignature</i> 所指向的 Blob 無效，此方法會傳回 **E\_INVALIDARG**。

## 備註

如果應用程式以程序方式產生 [D3D12\_ROOT\_SIGNATURE\_DESC](/zh-TW/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public) 資料結構，則必須在呼叫 [D3D12SerializeRootSignature](/zh-TW/reference/graphics/d3d12/functions/d3d12serializerootsignature_public) 時傳遞此 **D3D12\_ROOT\_SIGNATURE\_DESC** 的指標，以產生序列化格式。
接著，應用程式會在呼叫 **ID3D12Device::CreateRootSignature** 時，將序列化格式傳遞給 <i>pBlobWithRootSignature</i>。

您可以使用 \_\_uuidof() 巨集取得根簽章配置介面的 **REFIID** 或 **GUID**。
例如，\_\_uuidof([ID3D12RootSignature](/zh-TW/reference/graphics/d3d12/interfaces/id3d12rootsignature/id3d12rootsignature_public)) 會取得根簽章介面的 **GUID**。

#### 範例

[D3D12HelloTriangle](https://learn.microsoft.com/en-us/windows/win32/direct3d12/working-samples) 範例使用 **ID3D12Device::CreateRootSignature** 的方式如下：

建立空的根簽章。

```cpp theme={null}
CD3DX12_ROOT_SIGNATURE_DESC rootSignatureDesc;
rootSignatureDesc.Init(0, nullptr, 0, nullptr, D3D12_ROOT_SIGNATURE_FLAG_ALLOW_INPUT_ASSEMBLER_INPUT_LAYOUT);

ComPtr<ID3DBlob> signature;
ComPtr<ID3DBlob> error;
ThrowIfFailed(D3D12SerializeRootSignature(&rootSignatureDesc, D3D_ROOT_SIGNATURE_VERSION_1, &signature, &error));
ThrowIfFailed(m_device->CreateRootSignature(0, signature->GetBufferPointer(), signature->GetBufferSize(), IID_PPV_ARGS(&m_rootSignature)));

```

## 需求

**標頭：** d3d12\_xs.h 或 d3d12\_x.h\
**程式庫：** d3d12\_xs.lib 或 d3d12\_x.lib\
**支援的平台：** XBOX Series 主機和 XBOX One 系列主機

## 另請參閱

[ID3D12Device](/zh-TW/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)


## Related topics

- [D3D12SerializeRootSignature](/zh-TW/reference/graphics/d3d12/functions/d3d12serializerootsignature_public.md)
- [D3D12CreateRootSignatureDeserializer](/zh-TW/reference/graphics/d3d12/functions/d3d12createrootsignaturedeserializer_public.md)
- [D3D12CreateVersionedRootSignatureDeserializer](/zh-TW/reference/graphics/d3d12/functions/d3d12createversionedrootsignaturedeserializer_public.md)
- [CreateCommandSignature](/zh-TW/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommandsignature_public.md)
- [D3D_ROOT_SIGNATURE_VERSION](/zh-TW/reference/graphics/d3d12/enums/d3d_root_signature_version_public.md)
