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

# Função XAsyncProvider

> Função XAsyncProvider

# Função XAsyncProvider

Representa a função de retorno de chamada de uma chamada assíncrona para um provedor assíncrono.

## Sintaxe

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

### Parâmetros

*op*   \_In\_\
Tipo: [XAsyncOp](/pt-BR/reference/system/xasyncprovider/enums/xasyncop)

O código de operação a ser executado pela função de retorno de chamada.

*data*   \_Inout\_\
Tipo: [XAsyncProviderData\*](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata)

Um ponteiro para a estrutura [XAsyncProviderData](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata) usada para armazenar dados da chamada assíncrona e acompanhá-la.

### Valor retornado

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

Retornará `S_OK` se for bem-sucedido; caso contrário, retornará um código de erro. Para obter uma lista de códigos de erro, consulte [Códigos de erro](/pt-BR/reference/errorcodes).

## Comentários

A função de retorno de chamada `XAsyncProvider` é implementada por um provedor assíncrono para realizar trabalho assíncrono. A função de retorno de chamada de um provedor assíncrono é chamada repetidamente pela API XAsync, e o que essa função de retorno de chamada deve fazer em cada chamada é determinado pelo código de operação [XAsyncOp](/pt-BR/reference/system/xasyncprovider/enums/xasyncop) especificado em *op* para cada chamada. Os dados usados pela função de retorno de chamada em cada chamada, incluindo o [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock) usado para acompanhar essa função de retorno de chamada, são especificados em *data*.

A função de retorno de chamada deve implementar apenas os códigos de operação de `XAsyncOp` necessários para realizar o trabalho assíncrono. Por exemplo, um provedor assíncrono que realiza trabalho de E/S assíncrona não cancelável e que não requer limpeza só precisa implementar `XAsyncOp::GetResult` na função de retorno de chamada desse provedor assíncrono.

Para obter um exemplo de provedor assíncrono que implementa os códigos de operação `DoWork`, `GetResult` e `Cleanup` de `XAsyncOp` e retorna um conteúdo de dados, consulte a seção "Biblioteca assíncrona" em [Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model#heading-7).

## Requisitos

**Cabeçalho:** XAsyncProvider.h

**Biblioteca:** xgameruntime.lib

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Documentação conceitual

* [Configurar provedor personalizado](/pt-BR/build/core-features/common/async/async-libraries/async-library-xasyncprovider-example-setup-custom-provider)

## Confira também

[Membros de XAsyncProvider](/pt-BR/reference/system/xasyncprovider/xasyncprovider_members)\
[XAsyncOp](/pt-BR/reference/system/xasyncprovider/enums/xasyncop)\
[XAsyncProviderData](/pt-BR/reference/system/xasyncprovider/structs/xasyncproviderdata)\
[Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model)


## Related topics

- [XAsyncProvider](/reference/system/xasyncprovider/xasyncprovider_members.md)
- [XAsyncProvider function](/reference/system/xasyncprovider/functions/xasyncprovider.md)
- [Función XAsyncProvider](/es/reference/system/xasyncprovider/functions/xasyncprovider.md)
