> ## 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 un [XAsyncBlock](https://docs.xbox.com/es/reference/system/xasync/structs/xasyncblock.md) e inicia el trabajo asincrónico de un proveedor asincrónico.

## Sintaxis

```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/es/reference/system/xasync/structs/xasyncblock.md)

Un puntero al [XAsyncBlock](https://docs.xbox.com/es/reference/system/xasync/structs/xasyncblock.md) que contiene los datos de la llamada asincrónica.

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

Opcional. Un puntero de contexto que se almacenará en el objeto [XAsyncProviderData](https://docs.xbox.com/es/reference/system/xasyncprovider/structs/xasyncproviderdata.md) que se pasa a la función de devolución de llamada [XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md).

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

Opcional. Un puntero a un token arbitrario que se puede usar para identificar la llamada asincrónica.

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

Opcional. Una cadena que nombra la función que proporciona la llamada asincrónica. El valor de este parámetro se suele establecer en la macro del compilador `__FUNCTION__`.

*provider*   \_In\_\
Tipo: [XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md)\*

Un puntero a la función de devolución de llamada [XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md) que se invocará para la llamada asincrónica.

### Valor devuelto

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

Devuelve `S_OK` si se realiza correctamente; de lo contrario, devuelve un código de error. Para ver una lista de códigos de error, consulte [Códigos de error](https://docs.xbox.com/es/reference/errorcodes.md).

## Comentarios

`XAsyncBegin` se invoca para indicar que el proveedor asincrónico debe iniciar el trabajo asincrónico. Después de invocar `XAsyncBegin`, otras funciones de [XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/xasyncprovider_members.md), como [XAsyncGetResult](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncgetresult.md), proporcionarán datos significativos.

Cuando se invoca `XAsyncBegin`, se invoca la función de devolución de llamada especificada en *provider*, especificando [XAsyncOp::Begin](https://docs.xbox.com/es/reference/system/xasyncprovider/enums/xasyncop.md) en el parámetro *op* de [XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md). Si la función de devolución de llamada implementa este código de operación, debe iniciar su trabajo asincrónico, ya sea llamando a [XAsyncSchedule](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncschedule.md) o por medios externos. Después de que `XAsyncBegin` devuelva, se asume que la función de devolución de llamada ha iniciado el trabajo asincrónico en un subproceso definido por el sistema.

> [!NOTE]
>
> La función de devolución de llamada especificada en *provider* se procesa de forma sincrónica en la cadena de llamadas de `XAsyncBegin`. El trabajo asincrónico realizado por la función de devolución de llamada no debe bloquear el subproceso.

Puede usar los parámetros *identity* e *identityName* para identificar y administrar llamadas `XAsyncOp::Begin` y `XAsyncOp::GetResult` no coincidentes a la función de devolución de llamada. Normalmente, el valor de *identity* se establece en el puntero de función de la función que invocó `XAsyncBegin`, y el valor de *identityName* se establece en la macro del compilador `__FUNCTION__`.

## Requisitos

**Encabezado:** XAsyncProvider.h

**Biblioteca:** xgameruntime.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Documentación conceptual

* [Configurar un proveedor personalizado](https://docs.xbox.com/es/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider.md)
* [Información general de la biblioteca XAsyncProvider](https://docs.xbox.com/es/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
* [Modelo de programación asincrónica](https://docs.xbox.com/es/build/core-features/common/async/async-programming-model.md)

## Consulte también

[Miembros de XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/xasyncprovider_members.md)\
[XAsyncProviderData](https://docs.xbox.com/es/reference/system/xasyncprovider/structs/xasyncproviderdata.md)\
[XAsyncProvider](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncprovider.md)\
[XAsyncGetResult](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncgetresult.md)\
[Modelo de programación asincrónica](https://docs.xbox.com/es/build/core-features/common/async/async-programming-model.md)


## Related topics

- [XAsyncComplete](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncschedule.md)
- [XAsyncGetResult](https://docs.xbox.com/es/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [XAsyncProviderData](https://docs.xbox.com/es/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [Información general de la biblioteca XAsyncProvider](https://docs.xbox.com/es/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
