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

# XAsyncBegin

> XAsyncBegin

# XAsyncBegin

Inicializa um [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock) e inicia o trabalho assíncrono de um provedor assíncrono.

## Sintaxe

```cpp theme={null}
HRESULT XAsyncBegin(  
         XAsyncBlock* asyncBlock,  
         void* context,  
         const void* identity,  
         const char* identityName,  
         XAsyncProvider* provider  
)  
```

### Parâmetros

*asyncBlock*   \_Inout\_\
Tipo: [XAsyncBlock\*](/pt-BR/reference/system/xasync/structs/xasyncblock)

Um ponteiro para o [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock) que contém os dados da chamada assíncrona.

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

Opcional. Um ponteiro de contexto a ser armazenado no objeto [XAsyncProviderData](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata) passado para a função de retorno de chamada [XAsyncProvider](/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider).

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

Opcional. Um ponteiro para um token arbitrário que pode ser usado para identificar a chamada assíncrona.

*identityName*   \_In\_opt\_\
Tipo: char\*

Opcional. Uma cadeia de caracteres que nomeia a função que fornece a chamada assíncrona. O valor deste parâmetro normalmente é definido como a macro de compilador `__FUNCTION__`.

*provider*   \_In\_\
Tipo: [XAsyncProvider](/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider)\*

Um ponteiro para a função de retorno de chamada [XAsyncProvider](/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider) a ser invocada para a chamada assíncrona.

### Valor retornado

Tipo: [HRESULT](https://learn.microsoft.com/openspecs/windows_protocols/ms-erref/0642cb2f-2075-4469-918c-4441e69c548a)

Retornará `S_OK` se for bem-sucedido; caso contrário, retornará um código de erro. Para obter uma lista de códigos de erro, consulte [Códigos de erro](/pt-BR/reference/errorcodes).

## Comentários

`XAsyncBegin` é invocado para indicar que o provedor assíncrono deve iniciar o trabalho assíncrono. Depois que `XAsyncBegin` é invocado, outras funções de [XAsyncProvider](/pt-BR/reference/system/xasyncprovider/xasyncprovider_members), como [XAsyncGetResult](/pt-BR/reference/system/xasyncprovider/functions/xasyncgetresult), fornecerão dados significativos.

Quando `XAsyncBegin` é invocado, a função de retorno de chamada especificada em *provider* é invocada, especificando [XAsyncOp::Begin](/pt-BR/reference/system/xasyncprovider/enums/xasyncop) no parâmetro *op* de [XAsyncProvider](/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider). Se a função de retorno de chamada implementar esse código de operação, ela deverá iniciar seu trabalho assíncrono chamando [XAsyncSchedule](/pt-BR/reference/system/xasyncprovider/functions/xasyncschedule) ou por meios externos. Depois que `XAsyncBegin` retorna, presume-se que a função de retorno de chamada iniciou o trabalho assíncrono em um thread definido pelo sistema.

<Note>A função de retorno de chamada especificada em *provider* é processada de forma síncrona na cadeia de chamadas de `XAsyncBegin`. O trabalho assíncrono realizado pela função de retorno de chamada não deve bloquear o thread.</Note>

Você pode usar os parâmetros *identity* e *identityName* para identificar e gerenciar chamadas `XAsyncOp::Begin` e `XAsyncOp::GetResult` incompatíveis para a função de retorno de chamada. Normalmente, o valor de *identity* é definido como o ponteiro de função da função que invocou `XAsyncBegin`, e o valor de *identityName* é definido como a macro de compilador `__FUNCTION__`.

## Requisitos

**Cabeçalho:** XAsyncProvider.h

**Biblioteca:** xgameruntime.lib

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Documentação conceitual

* [Configurar provedor personalizado](/pt-BR/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [Visão geral da biblioteca XAsyncProvider](/pt-BR/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model)

## Confira também

[Membros de XAsyncProvider](/pt-BR/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncProviderData](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[XAsyncProvider](/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider)\
[XAsyncGetResult](/pt-BR/reference/system/xasyncprovider/functions/xasyncgetresult)\
[Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncComplete](/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule.md)
