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

# XStoreQueryProductsAsync

> XStoreQueryProductsAsync

# XStoreQueryProductsAsync

Retorna informações de listagem para os produtos especificados que estão associados ao jogo atual, independentemente de os produtos estarem disponíveis para compra dentro do jogo.

## Sintaxe

```cpp theme={null}
HRESULT XStoreQueryProductsAsync(  
         const XStoreContextHandle storeContextHandle,  
         XStoreProductKind productKinds,  
         const char** storeIds,  
         size_t storeIdsCount,  
         const char** actionFilters,  
         size_t actionFiltersCount,  
         XAsyncBlock* async  
)  
```

### Parâmetros

*storeContextHandle*   \_In\_\
Tipo: XStoreContextHandle

O identificador de contexto da loja para o usuário retornado por [XStoreCreateContext](/pt-BR/reference/system/xstore/functions/xstorecreatecontext).

*productKinds*   \_In\_\
Tipo: [XStoreProductKind](/pt-BR/reference/system/xstore/enums/xstoreproductkind)

Os tipos de produtos a serem retornados.

*storeIds*   \_In\_z\_count\_(storeIdsCount)\
Tipo: char\*\*

Os identificadores da loja dos produtos a serem recuperados.

*storeIdsCount*   \_In\_\
Tipo: size\_t

O número de produtos na lista de **storeIds**.
Esse número não deve exceder 100.

*actionFilters*   \_In\_opt\_z\_count\_(actionFiltersCount)\
Tipo: char\*\*

Restringe os resultados por alguma ação armazenada no documento do produto.
Por padrão, esta API retorna todos os produtos, mesmo que não possam ser comprados, mas você pode usar filtros de ação para restringir os resultados.
Por exemplo, use "Purchase" se quiser apenas produtos que podem ser comprados, ou "License" se quiser apenas produtos licenciáveis.
Outros filtros de ação incluem "Fulfill", "Browse", "Curate", "Details" e "Redeem".

*actionFiltersCount*   \_In\_\
Tipo: size\_t

O número de filtros em **actionFilters**.

*async*   \_Inout\_\
Tipo: [XAsyncBlock\*](/pt-BR/reference/system/xasync/structs/xasyncblock)

Um [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock) que define o trabalho assíncrono que está sendo feito.
Use o [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock) para verificar o status da chamada e obter os resultados.
Para obter mais informações, confira [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock).

### Valor retornado

Tipo: HRESULT

Código de êxito ou de erro HRESULT.

## Comentários

Chame [XStoreQueryProductsResult](/pt-BR/reference/system/xstore/functions/xstorequeryproductsresult) para recuperar as informações de listagem e o resultado da execução desta função.

Esta API falhará se você fornecer mais de 100 storeIDs na solicitação.
Se você estiver trabalhando com um catálogo grande, limite cada consulta a menos de 100 produtos.

Para obter detalhes de todos os produtos que os jogadores podem comprar dentro do jogo atual, use [XStoreQueryAssociatedProductsAsync](/pt-BR/reference/system/xstore/functions/xstorequeryassociatedproductsasync).

O snippet de código a seguir mostra um exemplo de recuperação de informações de listagem para os produtos especificados que estão associados ao jogo atual.

```cpp theme={null}

void ProcessResults(XStoreProductQueryHandle queryHandle)
{
    HRESULT hr = XStoreEnumerateProductsQuery(
        queryHandle,
        nullptr,
        EnumerateProductsQueryCallback);

    if (FAILED(hr))
    {
        printf("Failed enumerate the product query handle: 0x%x\r\n", hr);
        XStoreCloseProductsQueryHandle(queryHandle);
        return;
    }

    XStoreCloseProductsQueryHandle(queryHandle);
}

void CALLBACK QueryProductsCallback(XAsyncBlock* asyncBlock)
{
    XStoreProductQueryHandle queryHandle = nullptr;

    HRESULT hr = XStoreQueryProductsResult(
        asyncBlock,
        &queryHandle);

    if (FAILED(hr))
    {
        printf("Failed retrieve the product query handle: 0x%x\r\n", hr);
        return;
    }

     ProcessResults(queryHandle);
}

void QueryProducts(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle)
{
    auto asyncBlock = std::make_unique<XAsyncBlock>();
    ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
    asyncBlock->queue = taskQueueHandle;

    asyncBlock->callback = QueryProductsCallback;

    XStoreProductKind allProductKinds =
        XStoreProductKind::Consumable |
        XStoreProductKind::Durable |
        XStoreProductKind::Game |
        XStoreProductKind::Pass |
        XStoreProductKind::UnmanagedConsumable;

    const char* storeIds[] =
    {
        "9YYYYYYYYYYY",
        "9ZZZZZZZZZZZ",
    };

    // This is only needed if you want to restrict to items that are currently purchasable.
    // If you want items that have been sold in the past,
    // but are no longer available for purchase, then
    // pass in nullptr or an empty array for the actionFilters.
    const char* actionFilters[] =
    {
        "Purchase"
    };

    HRESULT hr = XStoreQueryProductsAsync(
        storeContextHandle,
        allProductKinds,
        storeIds,
        ARRAYSIZE(storeIds),
        actionFilters,
        ARRAYSIZE(actionFilters),
        asyncBlock.get());

    if (FAILED(hr))
    {
        printf("Failed to get products: 0x%x\r\n", hr);
        return;
    }
}

```

## Requisitos

**Cabeçalho:** XStore.h (incluído em XGameRuntime.h)

**Biblioteca:** xgameruntime.lib

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

## Documentação conceitual

* [Operações básicas da loja](/pt-BR/publishing/xstore-commerce/xstore-basic-operations)
* [Conceder aos jogadores acesso ao conteúdo de complementos](/pt-BR/publishing/xstore-commerce/xstore-granting-access)
* [Limitação de taxa refinada para APIs da Microsoft Store](/pt-BR/publishing/xstore-commerce/xstore-fgrl)

## Confira também

[XStore](/pt-BR/reference/system/xstore/xstore_members)
[XStoreQueryProductsResult](/pt-BR/reference/system/xstore/functions/xstorequeryproductsresult)\
[XStoreQueryAssociatedProductsAsync](/pt-BR/reference/system/xstore/functions/xstorequeryassociatedproductsasync)\
[XStoreQueryEntitledProductsAsync](/pt-BR/reference/system/xstore/functions/xstorequeryentitledproductsasync)\
[XStoreQueryProductsAsync](/pt-BR/reference/system/xstore/functions/xstorequeryproductsasync)\
[XStoreQueryProductForCurrentGameAsync](/pt-BR/reference/system/xstore/functions/xstorequeryproductforcurrentgameasync)\
[XStoreQueryProductForPackageAsync](/pt-BR/reference/system/xstore/functions/xstorequeryproductforpackageasync)\
[Operações básicas da loja](/pt-BR/publishing/xstore-commerce/xstore-basic-operations)\
[Conceder aos jogadores acesso ao conteúdo de complementos](/pt-BR/publishing/xstore-commerce/xstore-granting-access)


## Related topics

- [XStoreQueryProductsAsync](/reference/system/xstore/functions/xstorequeryproductsasync.md)
- [XStoreQueryProductsResult](/reference/system/xstore/functions/xstorequeryproductsresult.md)
