> ## 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 動作の場合は、これを 0 に設定します。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](/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public) データ構造体をプロシージャルに生成する場合、シリアライズされた形式を作成するために、この **D3D12\_ROOT\_SIGNATURE\_DESC** へのポインターを [D3D12SerializeRootSignature](/reference/graphics/d3d12/functions/d3d12serializerootsignature_public) の呼び出しに渡す必要があります。
その後、アプリケーションは **ID3D12Device::CreateRootSignature** の呼び出しでシリアライズされた形式を <i>pBlobWithRootSignature</i> に渡します。

ルート シグネチャ レイアウトのインターフェイスの **REFIID** または **GUID** は、\_\_uuidof() マクロを使用して取得できます。
たとえば、\_\_uuidof([ID3D12RootSignature](/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](/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)
