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

[XAsyncBlock](/reference/system/xasync/structs/xasyncblock) を初期化し、非同期プロバイダーによる非同期作業を開始します。

## Syntax

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

### Parameters

*asyncBlock*   \_Inout\_\
型: [XAsyncBlock\*](/reference/system/xasync/structs/xasyncblock)

非同期呼び出しのデータを保持する [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) へのポインター。

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

省略可能。[XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider) コールバック関数に渡される [XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata) オブジェクトに格納されるコンテキスト ポインター。

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

省略可能。非同期呼び出しを識別するために使用できる任意のトークンへのポインター。

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

省略可能。非同期呼び出しを提供する関数の名前を表す文字列。このパラメーターの値は、通常 `__FUNCTION__` コンパイラ マクロに設定されます。

*provider*   \_In\_\
型: [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider)\*

非同期呼び出しに対して呼び出される [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider) コールバック関数へのポインター。

### Return value

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

成功した場合は `S_OK` を返します。それ以外の場合はエラー コードを返します。エラー コードの一覧については、[Error Codes](/reference/errorcodes) を参照してください。

## Remarks

`XAsyncBegin` は、非同期プロバイダーが非同期作業を開始する必要があることを示すために呼び出されます。`XAsyncBegin` が呼び出された後、[XAsyncGetResult](/reference/system/xasyncprovider/functions/xasyncgetresult) などの他の [XAsyncProvider](/reference/system/xasyncprovider/xasyncprovider_members) 関数は、意味のあるデータを提供します。

`XAsyncBegin` が呼び出されると、*provider* に指定されたコールバック関数が [XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider) の *op* パラメーターに [XAsyncOp::Begin](/reference/system/xasyncprovider/enums/xasyncop) を指定して呼び出されます。コールバック関数がこの操作コードを実装している場合は、[XAsyncSchedule](/reference/system/xasyncprovider/functions/xasyncschedule) を呼び出すか、外部の手段を通じて非同期作業を開始する必要があります。`XAsyncBegin` が戻った後、コールバック関数がシステム定義のスレッド上で非同期作業を開始したと見なされます。

<Note>*provider* に指定されたコールバック関数は、`XAsyncBegin` の呼び出しチェーン内で同期的に処理されます。コールバック関数が実行する非同期作業は、スレッドをブロックしてはなりません。</Note>

*identity* および *identityName* パラメーターを使用して、コールバック関数への `XAsyncOp::Begin` と `XAsyncOp::GetResult` の呼び出しが一致しないケースを識別および管理できます。通常、*identity* の値は `XAsyncBegin` を呼び出した関数の関数ポインターに設定され、*identityName* の値は `__FUNCTION__` コンパイラ マクロに設定されます。

## Requirements

**ヘッダー:** XAsyncProvider.h

**ライブラリ:** xgameruntime.lib

**サポートされているプラットフォーム:** Windows、XBOX One ファミリー本体および XBOX Series 本体

## Conceptual documentation

* [Set up custom provider](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [XAsyncProvider library overview](/build/core-features/common/async/async-libraries/async-library-xasyncprovider)
* [Asynchronous Programming Model](/build/core-features/common/async/async-programming-model)

## See also

[XAsyncProvider Members](/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[XAsyncProvider](/reference/system/xasyncprovider/functions/xasyncprovider)\
[XAsyncGetResult](/reference/system/xasyncprovider/functions/xasyncgetresult)\
[Asynchronous Programming Model](/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncComplete](/ja-jp/reference/system/xasyncprovider/functions/xasynccomplete.md)
- [XAsyncSchedule](/ja-jp/reference/system/xasyncprovider/functions/xasyncschedule.md)
- [XAsyncGetResult](/ja-jp/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [AsyncProviderData](/ja-jp/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncProvider ライブラリの概要](/ja-jp/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
