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

Initialise un [XAsyncBlock](https://docs.xbox.com/fr/reference/system/xasync/structs/xasyncblock.md) et démarre le travail asynchrone d'un fournisseur asynchrone.

## Syntaxe

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

### Paramètres

*asyncBlock*   \_Inout\_\
Type : [XAsyncBlock\*](https://docs.xbox.com/fr/reference/system/xasync/structs/xasyncblock.md)

Pointeur vers le [XAsyncBlock](https://docs.xbox.com/fr/reference/system/xasync/structs/xasyncblock.md) qui contient les données de l'appel asynchrone.

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

Facultatif. Pointeur de contexte à stocker dans l'objet [XAsyncProviderData](https://docs.xbox.com/fr/reference/system/xasyncprovider/structs/xasyncproviderdata.md) passé à la fonction de rappel [XAsyncProvider](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncprovider.md).

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

Facultatif. Pointeur vers un jeton arbitraire qui peut être utilisé pour identifier l'appel asynchrone.

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

Facultatif. Chaîne qui nomme la fonction fournissant l'appel asynchrone. La valeur de ce paramètre est généralement définie sur la macro de compilateur `__FUNCTION__`.

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

Pointeur vers la fonction de rappel [XAsyncProvider](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncprovider.md) à appeler pour l'appel asynchrone.

### Valeur de retour

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

Retourne `S_OK` en cas de réussite ; sinon, retourne un code d'erreur. Pour obtenir la liste des codes d'erreur, consultez [Codes d'erreur](https://docs.xbox.com/fr/reference/errorcodes.md).

## Remarques

`XAsyncBegin` est appelé pour indiquer que le fournisseur asynchrone doit démarrer le travail asynchrone. Une fois `XAsyncBegin` appelé, les autres fonctions [XAsyncProvider](https://docs.xbox.com/fr/reference/system/xasyncprovider/xasyncprovider_members.md), comme [XAsyncGetResult](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncgetresult.md), fournissent des données significatives.

Lorsque `XAsyncBegin` est appelé, la fonction de rappel spécifiée dans *provider* est appelée en spécifiant [XAsyncOp::Begin](https://docs.xbox.com/fr/reference/system/xasyncprovider/enums/xasyncop.md) dans le paramètre *op* de [XAsyncProvider](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncprovider.md). Si la fonction de rappel implémente ce code d'opération, elle doit démarrer son travail asynchrone, soit en appelant [XAsyncSchedule](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncschedule.md), soit par des moyens externes. Après le retour de `XAsyncBegin`, on suppose que la fonction de rappel a démarré le travail asynchrone sur un thread défini par le système.

> [!NOTE]
>
> La fonction de rappel spécifiée dans *provider* est traitée de manière synchrone dans la chaîne d'appels de `XAsyncBegin`. Le travail asynchrone effectué par la fonction de rappel ne doit pas bloquer le thread.

Vous pouvez utiliser les paramètres *identity* et *identityName* pour identifier et gérer les appels `XAsyncOp::Begin` et `XAsyncOp::GetResult` non concordants à la fonction de rappel. En général, la valeur de *identity* est définie sur le pointeur de la fonction qui a appelé `XAsyncBegin`, et la valeur de *identityName* est définie sur la macro de compilateur `__FUNCTION__`.

## Configuration requise

**En-tête :** XAsyncProvider.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Documentation conceptuelle

* [Configurer un fournisseur personnalisé](https://docs.xbox.com/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider.md)
* [Vue d'ensemble de la bibliothèque XAsyncProvider](https://docs.xbox.com/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
* [Modèle de programmation asynchrone](https://docs.xbox.com/fr/build/core-features/common/async/async-programming-model.md)

## Voir aussi

[Membres XAsyncProvider](https://docs.xbox.com/fr/reference/system/xasyncprovider/xasyncprovider_members.md)\
[XAsyncProviderData](https://docs.xbox.com/fr/reference/system/xasyncprovider/structs/xasyncproviderdata.md)\
[XAsyncProvider](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncprovider.md)\
[XAsyncGetResult](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncgetresult.md)\
[Modèle de programmation asynchrone](https://docs.xbox.com/fr/build/core-features/common/async/async-programming-model.md)


## Related topics

- [XAsyncComplete](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncschedule.md)
- [XAsyncGetResult](https://docs.xbox.com/fr/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [XAsyncProviderData](https://docs.xbox.com/fr/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [Vue d'ensemble de la bibliothèque XAsyncProvider](https://docs.xbox.com/fr/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
