> ## 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 un [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) 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\*](/reference/system/xasync/structs/xasyncblock)

Un puntero al [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) 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](/reference/system/xasyncprovider/structs/xasyncproviderdata) que se pasa a la función de devolución de llamada [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider).

*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](/reference/system/xasyncprovider/functions/xasyncprovider)\*

Un puntero a la función de devolución de llamada [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider) 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](/reference/errorcodes).

## 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](/reference/system/xasyncprovider/xasyncprovider_members), como [XAsyncGetResult](/reference/system/xasyncprovider/functions/xasyncgetresult), proporcionarán datos significativos.

Cuando se invoca `XAsyncBegin`, se invoca la función de devolución de llamada especificada en *provider*, especificando [XAsyncOp::Begin](/reference/system/xasyncprovider/enums/xasyncop) en el parámetro *op* de [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider). 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](/reference/system/xasyncprovider/functions/xasyncschedule) 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.</Note>

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](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [Información general de la biblioteca XAsyncProvider](/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model)

## Consulte también

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


## Related topics

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