> ## Documentation Index
> Fetch the complete documentation index at: https://docs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XAsyncBegin

> XAsyncBegin

# XAsyncBegin

Inicializa um [XAsyncBlock](https://docs.xbox.com/pt-BR/reference/system/xasync/structs/xasyncblock.md) 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\*](https://docs.xbox.com/pt-BR/reference/system/xasync/structs/xasyncblock.md)

Um ponteiro para o [XAsyncBlock](https://docs.xbox.com/pt-BR/reference/system/xasync/structs/xasyncblock.md) 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](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata.md) passado para a função de retorno de chamada [XAsyncProvider](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider.md).

*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](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider.md)\*

Um ponteiro para a função de retorno de chamada [XAsyncProvider](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider.md) 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](https://docs.xbox.com/pt-BR/reference/errorcodes.md).

## 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](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/xasyncprovider_members.md), como [XAsyncGetResult](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncgetresult.md), fornecerão dados significativos.

Quando `XAsyncBegin` é invocado, a função de retorno de chamada especificada em *provider* é invocada, especificando [XAsyncOp::Begin](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/enums/xasyncop.md) no parâmetro *op* de [XAsyncProvider](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncprovider.md). Se a função de retorno de chamada implementar esse código de operação, ela deverá iniciar seu trabalho assíncrono chamando [XAsyncSchedule](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncschedule.md) 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.

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](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider.md)
* [Visão geral da biblioteca XAsyncProvider](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
* [Modelo de programação assíncrona](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-programming-model.md)

## Confira também

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


## Related topics

- [XAsyncComplete](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncschedule.md)
- [XAsyncGetResult](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [XAsyncProviderData](https://docs.xbox.com/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [Visão geral da biblioteca XAsyncProvider](https://docs.xbox.com/pt-BR/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
