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

# D3D12CreateRootSignatureDeserializer

> Deserializes a root signature so you can determine the layout definition (D3D12_ROOT_SIGNATURE_DESC).

Deserializes a root signature so you can determine the layout definition ([D3D12\_ROOT\_SIGNATURE\_DESC](/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public)).

## Syntax

```cpp theme={null}
HRESULT D3D12CreateRootSignatureDeserializer(
    LPCVOID pSrcData,
    SIZE_T SrcDataSizeInBytes,
    const IID & pRootSignatureDeserializerInterface,
    void  ppRootSignatureDeserializer
)
```

### Parameters

*pSrcData \[in]*\
Type: LPCVOID

A pointer to the source data for the serialized root signature.

*SrcDataSizeInBytes \[in]*\
Type: SIZE\_T

The size, in bytes, of the block of memory that <i>pSrcData</i> points to.

*pRootSignatureDeserializerInterface \[in]*\
Type: const IID &

The globally unique identifier (**GUID**) for the root signature deserializer interface. See remarks.

*ppRootSignatureDeserializer \[out]*\
Type: void \*\*

A pointer to a memory block that receives a pointer to the root signature deserializer.

### Return value

Type: HRESULT

Returns **S\_OK** if successful; otherwise, returns one of the [Direct3D 12 Return Codes](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/d3d12-graphics-reference-returnvalues).

## Remarks

This function has been superseded by [D3D12CreateVersionedRootSignatureDeserializer](/reference/graphics/d3d12/functions/d3d12createversionedrootsignaturedeserializer_public).

If an application has a serialized root signature already or has a compiled shader that contains a root signature and wants to determine the layout definition, it can call **D3D12CreateRootSignatureDeserializer** to generate a [ID3D12RootSignatureDeserializer](/reference/graphics/d3d12/interfaces/id3d12rootsignaturedeserializer/id3d12rootsignaturedeserializer_public) interface. [ID3D12RootSignatureDeserializer::GetRootSignature](/reference/graphics/d3d12/interfaces/id3d12rootsignaturedeserializer/methods/id3d12rootsignaturedeserializer_getrootsignaturedesc_public) can return the deserialized data structure
([D3D12\_ROOT\_SIGNATURE\_DESC](/reference/graphics/d3d12/structs/d3d12_root_signature_desc_public)).
**ID3D12RootSignatureDeserializer** just owns the lifetime of the memory for the deserialized data structure.

The **REFIID**, or **GUID**, of the interface to the root signature deserializer can be obtained by using the \_\_uuidof() macro. For example, \_\_uuidof([ID3D12RootSignatureDeserializer](/reference/graphics/d3d12/interfaces/id3d12rootsignaturedeserializer/id3d12rootsignaturedeserializer_public)) will get the **GUID** of the interface to a root signature deserializer.

The function signature PFN\_D3D12\_CREATE\_ROOT\_SIGNATURE\_DESERIALIZER is provided as a typedef, so that you can use dynamic linking techniques ([GetProcAddress](https://learn.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-getprocaddress)) instead of statically linking.

## Requirements

**Header:** d3d12\_xs.h or d3d12\_x.h\
**Library:** d3d12\_xs.lib or d3d12\_x.lib\
**Supported Platforms**: XBOX Series consoles and XBOX One family

## See Also

[Core Functions](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/direct3d-12-functions)

[Creating a Root Signature](https://learn.microsoft.com/en-us/windows/desktop/direct3d12/creating-a-root-signature)
