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

# XStoreCreateContext

> XStoreCreateContext

# XStoreCreateContext

Cria um contexto da loja para o usuário especificado.

## Sintaxe

```cpp theme={null}
HRESULT XStoreCreateContext(  
         const XUserHandle user,  
         XStoreContextHandle* storeContextHandle  
)  
```

### Parâmetros

*user*   \_In\_opt\_\
Tipo: XUserHandle

O usuário para o qual o contexto da loja será criado.\
Este parâmetro é opcional somente para jogos de PC: basta passar um valor nullptr. No PC, o usuário conectado à Microsoft Store é usado automaticamente e este parâmetro é ignorado.
Um XUser válido é necessário para jogos de console.

*storeContextHandle*   \_Out\_\
Tipo: XStoreContextHandle\*

Em caso de êxito, contém o contexto da loja criado.

### Valor retornado

Tipo: HRESULT

Código de êxito ou de erro HRESULT.

## Comentários

**OBSERVAÇÃO:** Nos consoles, o XStoreContextHandle criado por esta função é invalidado após um evento de suspensão ou de Quick Resume. Para lidar com essas condições com segurança, recomendamos fechar o XStoreContextHandle e recriá-lo sempre que o jogo for retomado de um estado suspenso.

<Note>Não é seguro chamar esta função em um thread sensível ao tempo. Para obter mais informações, consulte [Threads sensíveis ao tempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads).</Note>

Quando terminar de usar o **XStoreContextHandle** criado por esta função, você deverá fechá-lo com [XStoreCloseContextHandle](/pt-BR/reference/system/xstore/functions/xstoreclosecontexthandle). Não fechar o identificador causará um vazamento de memória. O contexto da loja é usado para identificar o usuário cujas informações serão recuperadas em várias chamadas da API **XStore**. O snippet de código a seguir mostra um exemplo de criação de um contexto da loja.

```cpp theme={null}
void CALLBACK GameLicenseChangedCallback(void* context)
{
    UNREFERENCED_PARAMETER(context);
    printf("**** License Changed ****\r\n");
}

void CreateStoreContextHandle(XUserHandle userHandle, XTaskQueueHandle taskQueueHandle)
{
    // As a rule, it would be a good idea to create one of these
    // and keep it alive through the lifetime of the game
    XStoreContextHandle storeContextHandle;

    HRESULT hr = XStoreCreateContext(userHandle, &storeContextHandle);
    if (FAILED(hr))
    {
        printf("Failed creating store context: 0x%x\r\n", hr);
        return;
    }

    XTaskQueueRegistrationToken gameLicenseChangedToken = { 0 };
    hr = XStoreRegisterGameLicenseChanged(
        storeContextHandle,
        taskQueueHandle,
        storeContextHandle,
        GameLicenseChangedCallback,
        &gameLicenseChangedToken);

    if (FAILED(hr))
    {
        printf("Failed register for game license changed callback: 0x%x\r\n", hr);
        XStoreCloseContextHandle(storeContextHandle);
        return;
    }

    //Unregistering the license changed event and closing the XStoreContextHandle would usually go in the cleanup/shutdown sections of your game code. 
    XStoreUnregisterGameLicenseChanged(
        storeContextHandle,
        gameLicenseChangedToken,
        true);

    XStoreCloseContextHandle(storeContextHandle);
}

```

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

* [Threads sensíveis ao tempo](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)
* [Operações básicas da loja](/pt-BR/publishing/xstore-commerce/xstore-basic-operations)

## Confira também

[XStore](/pt-BR/reference/system/xstore/xstore_members)\
[XStoreCloseContextHandle](/pt-BR/reference/system/xstore/functions/xstoreclosecontexthandle)\
[XStoreRegisterGameLicenseChanged](/pt-BR/reference/system/xstore/functions/xstoreregistergamelicensechanged)


## Related topics

- [XStoreCreateContext](/zh-CN/reference/system/xstore/functions/xstorecreatecontext.md)
- [XStoreCloseContextHandle](/reference/system/xstore/functions/xstoreclosecontexthandle.md)
- [Basic store operations](/publishing/xstore-commerce/xstore-basic-operations.md)
- [XStoreQueryGameLicenseAsync](/reference/system/xstore/functions/xstorequerygamelicenseasync.md)
- [XStoreQueryConsumableBalanceRemainingAsync](/reference/system/xstore/functions/xstorequeryconsumablebalanceremainingasync.md)
