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

# CreateCommandList

> CreateCommandList (Direct3D 12 no XBOX) — Cria uma lista de comandos. Referência de gráficos Direct3D 12 do XBOX.

Cria uma lista de comandos.

## Sintaxe

```cpp theme={null}
HRESULT CreateCommandList(
    UINT nodeMask,
    D3D12_COMMAND_LIST_TYPE type,
    ID3D12CommandAllocator  pCommandAllocator,
    ID3D12PipelineState  pInitialState,
    const IID & riid,
    void  ppCommandList
)
```

### Parâmetros

*nodeMask \[in]*\
Tipo: UINT

Para operação com uma única GPU, defina como zero. Se houver vários nós de GPU, defina um bit para identificar o nó (o adaptador físico do dispositivo) para o qual a lista de comandos será criada. Cada bit na máscara corresponde a um único nó. Apenas um bit deve ser definido. Confira também [Sistemas com vários adaptadores](https://learn.microsoft.com/en-us/windows/win32/direct3d12/multi-engine).

*type \[in]*\
Tipo: D3D12\_COMMAND\_LIST\_TYPE

Especifica o tipo de lista de comandos a ser criada.

*pCommandAllocator \[in]*\
Tipo: ID3D12CommandAllocator \*

Um ponteiro para o objeto alocador de comandos a partir do qual o dispositivo cria listas de comandos.

*pInitialState \[in, optional]*\
Tipo: ID3D12PipelineState \*

Um ponteiro opcional para o objeto de estado de pipeline que contém o estado inicial do pipeline para a lista de comandos. Se for `nullptr`, o runtime definirá um estado inicial fictício do pipeline, para que os drivers não precisem lidar com um estado indefinido. A sobrecarga disso é baixa, especialmente para uma lista de comandos, cujo custo geral de gravação provavelmente supera em muito o custo de uma única configuração de estado inicial. Portanto, há pouco custo em não definir o parâmetro de estado inicial do pipeline, caso fazer isso seja inconveniente.

Para pacotes, por outro lado, pode fazer mais sentido tentar definir o parâmetro de estado inicial (já que os pacotes provavelmente são menores em geral e podem ser reutilizados com frequência).

*riid \[in]*\
Tipo: const IID &

Uma referência ao identificador global exclusivo (**GUID**) da interface da lista de comandos a ser retornada em *ppCommandList*.

*ppCommandList \[out]*\
Tipo: void \*\*

Um ponteiro para um bloco de memória que recebe um ponteiro para a interface [ID3D12CommandList](/pt-BR/reference/graphics/d3d12/interfaces/id3d12commandlist/id3d12commandlist_public) ou [ID3D12GraphicsCommandList](/pt-BR/reference/graphics/d3d12_xs/interfaces/ID3D12GraphicsCommandList/id3d12graphicscommandlist_xs) da lista de comandos.

### Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, ela retornará **S\_OK**. Caso contrário, retornará um [código de erro](https://learn.microsoft.com/en-us/windows/win32/com/com-error-codes-10) [**HRESULT**](https://learn.microsoft.com/en-us/windows/desktop/com/structure-of-com-error-codes).

| Valor retornado | Descrição |
| - | - |
| E\_OUTOFMEMORY | Não há memória suficiente para criar a lista de comandos. |
|  | |
| Consulte [Códigos de retorno do Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues) para outros valores retornados possíveis. | |

## Comentários

O dispositivo cria listas de comandos a partir do alocador de comandos.

## Exemplos

O exemplo [D3D12Bundles](https://learn.microsoft.com/en-us/windows/win32/direct3d12/working-samples) usa **ID3D12Device::CreateCommandList** da seguinte maneira.

Crie os objetos de pipeline.

```cpp theme={null}
ComPtr<ID3D12CommandAllocator> m_commandAllocator;
ComPtr<ID3D12GraphicsCommandList> m_commandList;
```

Crie um alocador de comandos.

```cpp theme={null}
ThrowIfFailed(m_device->CreateCommandAllocator(D3D12_COMMAND_LIST_TYPE_DIRECT, IID_PPV_ARGS(&m_commandAllocator)));
```

Criando a lista de comandos direta.

```cpp theme={null}
ThrowIfFailed(m_device->CreateCommandList(0, D3D12_COMMAND_LIST_TYPE_DIRECT, m_commandAllocator.Get(), nullptr, IID_PPV_ARGS(&m_commandList)));
```

Consulte o [Código de exemplo na referência do D3D12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/notes-on-example-code).

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h\
**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib\
**Plataformas compatíveis**: consoles XBOX Series e família XBOX One

## Confira também

[ID3D12Device](/pt-BR/reference/graphics/d3d12_x/interfaces/id3d12device/id3d12device)

[ID3D12GraphicsCommandList::Reset](/pt-BR/reference/graphics/d3d12/interfaces/id3d12graphicscommandlist/methods/id3d12graphicscommandlist_reset_public)


## Related topics

- [CreateCommandList1 (consoles XBOX Series)](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device4/methods/id3d12device4_createcommandlist1_public.md)
- [CreateCommandAllocator](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommandallocator_public.md)
- [CreatePlacedResource](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createplacedresource_public.md)
- [D3D12_CPU_DESCRIPTOR_HANDLE](/pt-BR/reference/graphics/d3d12/structs/d3d12_cpu_descriptor_handle_public.md)
- [CreateCommandQueue](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_createcommandqueue_public.md)
