> ## 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>此函数在时间敏感线程上调用不安全。有关详细信息，请参阅[时间敏感线程](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

* [设置可取消性](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-cancelability)
* [设置自定义提供程序](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)
* [设置返回数据](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data)
* [异步编程模型](/build/core-features/common/async/async-programming-model)
* [时间敏感线程](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)\
[异步编程模型](/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncGetResult](/zh-CN/reference/system/xasyncprovider/functions/xasyncgetresult.md)
- [AsyncProviderData](/zh-CN/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [设置返回数据示例](/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-return-data.md)
- [设置可取消性示例](/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-cancelability.md)
- [XAsyncOp](/zh-CN/reference/system/xasyncprovider/enums/xasyncop.md)
