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

# XTaskQueueSubmitCallback

> XTaskQueueSubmitCallback

# XTaskQueueSubmitCallback

Envia um retorno de chamada para a fila na porta especificada.

## Sintaxe

```cpp theme={null}
HRESULT XTaskQueueSubmitCallback(  
         XTaskQueueHandle queue,  
         XTaskQueuePort port,  
         void* callbackContext,  
         XTaskQueueCallback* callback  
)  
```

### Parâmetros

*queue*   \_In\_\
Tipo: XTaskQueueHandle

A fila para a qual enviar o retorno de chamada.

*port*   \_In\_\
Tipo: [XTaskQueuePort](/pt-BR/reference/system/xtaskqueue/enums/xtaskqueueport)

A porta para a qual enviar o retorno de chamada. Os retornos de chamada podem ser atribuídos a portas de trabalho ou de conclusão.

*callbackContext*   \_In\_opt\_\
Tipo: void\*

Um ponteiro de contexto opcional que será passado para o retorno de chamada.

*callback*   \_In\_\
Tipo: [XTaskQueueCallback\*](/pt-BR/reference/system/xtaskqueue/functions/xtaskqueuecallback)

Um ponteiro para a função de retorno de chamada.

### Valor retornado

Tipo: HRESULT

Código de sucesso ou de erro HRESULT.

## Comentários

<img src="https://mintcdn.com/microsoft-4404708b/gzrdvT5kpqAXKEQt/images/gdk/reference/note.gif?s=6c1a4c009b25ad5315c45ce51bc83983" alt="alert" width="10" height="10" data-path="images/gdk/reference/note.gif" /> **Observação de desempenho:**\
Adicionar um item a uma fila precisa ser livre de bloqueios e de esperas para atender aos requisitos de desempenho do código upstream. As seguintes APIs são livres de bloqueios:

* [XTaskQueueSubmitCallback](/pt-BR/reference/system/xtaskqueue/functions/xtaskqueuesubmitcallback)
* [XTaskQueueSubmitDelayedCallback](/pt-BR/reference/system/xtaskqueue/functions/xtaskqueuesubmitdelayedcallback)
* [XTaskQueueDispatch](/pt-BR/reference/system/xtaskqueue/functions/xtaskqueuedispatch), desde que 0 seja passado para *timeoutInMs*

O exemplo a seguir demonstra como um retorno de chamada é enviado para a porta de trabalho ou de conclusão de uma fila de tarefas. Primeiro ele envia um retorno de chamada de trabalho e, no final desse retorno de chamada de trabalho, envia um retorno de chamada de conclusão, o que será o comportamento típico.

```cpp theme={null}
void CALLBACK SampleCompletionCallback(void*, bool cancel)
{
    printf("Completion invoked on thread %d.  Cancel? %d.\r\n", GetCurrentThreadId(), cancel);
}

void CALLBACK SampleWorkCallback(void* context, bool cancel)
{
    printf("Worker invoked on thread %d. Cancel? %d.\r\n", GetCurrentThreadId(), cancel);
    XTaskQueueHandle queueFromContext = static_cast<XTaskQueueHandle>(context);

    HRESULT hrCompletion = XTaskQueueSubmitCallback(
        queueFromContext, 
        XTaskQueuePort::Completion, 
        nullptr, 
        SampleCompletionCallback);

    if (FAILED(hrCompletion))
    {
        printf("Error 0x%x submitting completion.\r\n", hrCompletion);
    }
}

void SubmitCallbacks(XTaskQueueHandle queue)
{
    HRESULT hrWork = XTaskQueueSubmitCallback(
        queue, 
        XTaskQueuePort::Work, 
        queue, 
        SampleWorkCallback);

    if (FAILED(hrWork))
    {
        printf("Error 0x%x submitting work.\r\n", hrWork);
    }
}
```

## Requisitos

**Cabeçalho:** XTaskQueue.h

**Biblioteca:** xgameruntime.lib

**Plataformas compatíveis:** Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

[Membros de XTaskQueue](/pt-BR/reference/system/xtaskqueue/xtaskqueue_members)\
[Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model)\
[Design da fila de tarefas assíncrona](/pt-BR/build/core-features/common/async/async-task-queue-design)


## Related topics

- [XTaskQueueSubmitCallback](/reference/system/xtaskqueue/functions/xtaskqueuesubmitcallback.md)
- [XTaskQueueSubmitDelayedCallback](/reference/system/xtaskqueue/functions/xtaskqueuesubmitdelayedcallback.md)
- [XTaskQueueCallback](/reference/system/xtaskqueue/functions/xtaskqueuecallback.md)
