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

# XAsyncProvider function

> XAsyncProvider function

# XAsyncProvider function

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

## Syntax

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

### Parameters

*op*   \_In\_\
类型：[XAsyncOp](/reference/system/xasyncprovider/enums/xasyncop)

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

*data*   \_Inout\_\
类型：[XAsyncProviderData\*](/reference/system/xasyncprovider/structs/xasyncproviderdata)

指向用于存储异步调用数据和跟踪异步调用的 [XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata) 结构的指针。

### Return value

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

成功时返回 `S_OK`；否则，返回错误代码。有关错误代码列表，请参阅[错误代码](/reference/errorcodes)。

## Remarks

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

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

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

## Requirements

**头文件：** XAsyncProvider.h

**库：** xgameruntime.lib

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

## Conceptual documentation

* [设置自定义提供程序](/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)

## See also

[XAsyncProvider Members](/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncOp](/reference/system/xasyncprovider/enums/xasyncop)\
[XAsyncProviderData](/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[异步编程模型](/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncProvider](/zh-CN/reference/system/xasyncprovider/xasyncprovider_members.md)
- [XAsyncProvider 库概述](/zh-CN/build/core-features/common/async/async-libraries/async-library-xasyncprovider.md)
- [XAsyncBegin](/zh-CN/reference/system/xasyncprovider/functions/xasyncbegin.md)
- [AsyncProviderData](/zh-CN/reference/system/xasyncprovider/structs/xasyncproviderdata.md)
- [XAsyncComplete](/zh-CN/reference/system/xasyncprovider/functions/xasynccomplete.md)
