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

# XAsyncComplete

> XAsyncComplete

# XAsyncComplete

非同期プロバイダーのコールバック関数が作業を完了し、結果を返すことができることを示します。

## Syntax

```cpp theme={null}
void XAsyncComplete(  
         XAsyncBlock* asyncBlock,  
         HRESULT result,  
         size_t requiredBufferSize  
)  
```

### Parameters

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

[XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin) に渡された [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) へのポインター。

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

コールバック関数によって実行された作業の結果。作業がキャンセルされた場合は、これを `E_ABORT` に設定します。さらに作業を行う必要がある場合は、これを `E_PENDING` に設定します。それ以外の場合は、適切な結果コードに設定します。

*requiredBufferSize*   \_In\_\
型: size\_t

コールバック関数によって返されるデータ ペイロードの必要なサイズ (バイト単位)。コールバック関数がデータ ペイロードを返さない場合、この値をゼロに設定します。コールバック関数がエラーを返す場合、このパラメーターは無視されます。

### Return value

型: void

## Remarks

<Note>この関数は、タイム センシティブ スレッドから呼び出しても安全ではありません。詳細については、[Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads) を参照してください。</Note>

この関数は、非同期作業を実行またはキャンセルするためにコールバック関数が呼び出されたときに呼び出されます。この関数は、適切な結果コードと、該当する場合はデータ ペイロードに関する情報を返します。[XAsyncOp](/reference/system/xasyncprovider/enums/xasyncop) 操作コード、非同期作業、およびコールバック関数のデータ ペイロードの組み合わせは通常、この関数を呼び出すときに *result* および *requiredBufferSize* に指定する必要のある値を決定します。

コールバック関数が `XAsyncOp::DoWork` 操作コードで呼び出された場合、コールバック関数は非同期作業を実行する必要があります。コールバック関数がすべての非同期作業を完了した場合は、*result* を適切なエラー コードに設定します。さらに作業を行う必要がある場合は、*result* を `E_PENDING` に設定します。関数がデータ ペイロードを返す場合は、データ ペイロードを返すのに必要なバッファーのサイズ (バイト単位) を *requiredBufferSize* に設定します。それ以外の場合は、*requiredBufferSize* をゼロに設定します。

コールバック関数が `XAsyncOp::Cancel` 操作コードで呼び出された場合、コールバック関数は非同期作業をキャンセルする必要があります。*result* を `E_ABORT` に、*requiredBufferSize* をゼロに設定します。

## Requirements

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

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

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

## Conceptual documentation

* [Set up cancelability](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-cancelability)
* [Set up custom provider](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [Set up return data](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data)
* [Asynchronous Programming Model](/build/core-features/common/async/async-programming-model)
* [Time-sensitive threads](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)

## See also

[XAsyncProvider Members](/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncBegin](/reference/system/xasyncprovider/functions/xasyncbegin)\
[Asynchronous Programming Model](/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncGetResult](/ja-jp/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [AsyncProviderData](/ja-jp/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [戻りデータのセットアップ例](/ja-jp/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data.md)
- [キャンセル可能性のセットアップ例](/ja-jp/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-cancelability.md)
- [非同期プログラミング モデル](/ja-jp/build/core-features/common/async/async-programming-model.md)
