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

# XAsyncProvider

> XAsyncProvider function

# XAsyncProvider function

表示异步提供程序的异步调用回调函数。

## Syntax

```cpp theme={null}
HRESULT XAsyncProvider(  
         XAsyncOp op,  
         const XAsyncProviderData* data  
)  
```

### Parameters

*op*   \_In\_\
类型：[XAsyncOp](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/enums/xasyncop.md)

回调函数要执行的操作代码。

*data*   \_Inout\_\
类型：[XAsyncProviderData\*](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/structs/xasyncproviderdata.md)

指向用于存储异步调用数据和跟踪异步调用的 [XAsyncProviderData](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/structs/xasyncproviderdata.md) 结构的指针。

### Return value

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

成功时返回 `S_OK`；否则，返回错误代码。有关错误代码列表，请参阅[错误代码](https://docs.xbox.com/zh-CN/reference/errorcodes.md)。

## Remarks

`XAsyncProvider` 回调函数由异步提供程序实现，以执行异步工作。XAsync API 会反复调用异步提供程序的回调函数，该回调函数对每次调用应执行的操作由每次调用中 *op* 指定的 [XAsyncOp](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/enums/xasyncop.md) 操作代码决定。回调函数每次调用使用的数据（包括用于跟踪该回调函数的 [XAsyncBlock](https://docs.xbox.com/zh-CN/reference/system/xasync/structs/xasyncblock.md)）在 *data* 中指定。

回调函数应仅实现执行异步工作所需的 `XAsyncOp` 中的那些操作代码。例如，执行不需要清理的、不可取消的异步 I/O 工作的异步提供程序，只需在该异步提供程序的回调函数中实现 `XAsyncOp::GetResult`。

有关实现 `XAsyncOp` 中 `DoWork`、`GetResult` 和 `Cleanup` 操作代码并返回数据负载的异步提供程序示例，请参阅[异步编程模型](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-programming-model.md#heading-7)中的"异步库"部分。

## Requirements

**头文件：** XAsyncProvider.h

**库：** xgameruntime.lib

**受支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## Conceptual documentation

* [设置自定义提供程序](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider.md)

## See also

[XAsyncProvider Members](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/xasyncprovider_members.md)\
[XAsyncOp](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/enums/xasyncop.md)\
[XAsyncProviderData](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/structs/xasyncproviderdata.md)\
[异步编程模型](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-programming-model.md)


## Related topics

- [XAsyncProvider（API 内容）](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/xasyncprovider_members.md)
- [XAsyncProvider 库概述](https://docs.xbox.com/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
- [XAsyncProviderData](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncBegin](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [XAsyncOp](https://docs.xbox.com/zh-CN/reference/system/xasyncprovider/enums/xasyncop.md)
