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

# Depuração do Game Saves

> Corrija erros comuns do Game Saves do XBOX GDK, incluindo configuração incorreta do SCID, configuração do Connected Storage no Partner Center, limpeza de identificadores e códigos NTSTATUS.

Este artigo aborda cenários comuns do Game Saves que exigem depuração e como corrigi-los.

## Cenários de erro comuns do Game Saves

### Identificador de configuração de serviço configurado incorretamente

Se o erro 0x80830002 (E\_GS\_NO\_ACCESS) ocorrer quando você chamar [XGameSaveFilesGetFolderWithUiAsync](/pt-BR/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync), provavelmente o identificador de configuração de serviço (SCID) no seu código-fonte está incorreto. Verifique se o SCID corresponde ao que aparece no Microsoft Partner Center. A seguinte mensagem de erro do sistema pode ser exibida.

<img src="https://mintcdn.com/microsoft-4404708b/CwRBzaXvHw9zaPoe/images/gdk/features/common/temporary-network-error.png?fit=max&auto=format&n=CwRBzaXvHw9zaPoe&q=85&s=d43a9f64593871f84957ae415351e491" alt="Caixa de diálogo: Há um problema temporário de rede." width="2218" height="923" data-path="images/gdk/features/common/temporary-network-error.png" />

#### Implicações da associação de jogos

Se o seu título usa [associação de jogos](/pt-BR/services/xbox-services/fundamentals/game-binding/game-binding-overview) e posteriormente adiciona uma versão para PC do Microsoft Game Development Kit (GDK), ele deve usar o AppID da conta Microsoft (MSA) (MSAppID) do produto principal. Usar o MSAAppID do produto secundário causa erros 0x80830002.

### Configurações do Partner Center configuradas incorretamente

Configurações incorretas do Partner Center podem ser uma causa comum de erros do Game Saves. Para que os Game Saves do usuário sejam sincronizados de e para a nuvem, selecione a opção **Connected Storage** no Partner Center em **Gameplay settings** > **Title Storage**. A imagem a seguir ilustra a configuração do Connected Storage no Partner Center necessária para garantir que os Game Saves possam ser sincronizados corretamente de e para a nuvem.

<img src="https://mintcdn.com/microsoft-4404708b/UZTRJSf0emX1fheE/images/gdk/features/common/partner-center-config-setup.png?fit=max&auto=format&n=UZTRJSf0emX1fheE&q=85&s=3e538fa1fdfd3ea926e2dea68e8ed584" alt="Configuração do Connected Storage no Partner Center." width="2187" height="895" data-path="images/gdk/features/common/partner-center-config-setup.png" />

### Limpeza de identificadores

A sincronização do Game Saves de e para a nuvem é gerenciada com vários identificadores (handles). Se os tempos de vida desses identificadores não forem gerenciados corretamente, poderá ocorrer um comportamento indefinido durante a sincronização de e para a nuvem.

`XGameSaveFiles`:

* Chame [XGameSaveFilesGetFolderWithUiAsync](/pt-BR/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync) quando o título for iniciado e quando for retomado. Essa chamada cria implicitamente um identificador de provedor do Game Saves. O sistema operacional o descarta quando o título é suspenso ou encerrado.

`XGameSave`:

* Exclua `XGameSaveUpdateHandle` após uma chamada a [XGameSaveSubmitUpdate](/pt-BR/reference/system/xgamesave/functions/xgamesavesubmitupdate), quer a atualização tenha sido bem-sucedida ou não.
* Exclua `XGameSaveContainerHandle` quando o título for suspenso ou encerrado.
* Exclua `XGameSaveProviderHandle` quando o título for suspenso ou encerrado.

### Confirmação do Game Saves

Para confirmar que seus Game Saves estão sendo carregados na nuvem, o título precisa iniciar o processo de liberação do bloqueio do título e, em seguida, começar a carregar os dados. Você pode ver esse tráfego com o Fiddler [inspecionando o tráfego de rede do Game Saves](/pt-BR/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic).

Para obter mais informações sobre o fluxo de sincronização do Game Saves, consulte [Noções básicas sobre o fluxo de sincronização do Game Saves](/pt-BR/build/core-features/common/game-save/game-saves-syncing).

## Erros comuns

| Código de erro | Nome | Descrição | Solução de problemas |
| - | - | - | - |
| 0x80830002 | E\_GS\_NO\_ACCESS | A operação falhou porque o título não tem acesso aos espaços de armazenamento de contêineres. | Esse erro ocorre se o SCID e o TitleID não estiverem configurados corretamente, fazendo com que as chamadas de API falhem. Verifique se o arquivo .config do seu jogo tem o TitleID correto e se o seu código-fonte tem o SCID correto. <br /><br />A mensagem de erro exibida no prompt do sistema do console é: "Pode haver uma interrupção do serviço. Verifique o status do serviço. Se houver uma interrupção do serviço, aguarde um pouco e tente novamente, ou use este jogo ou aplicativo offline." <br /> <br />O erro ocorre quando há uma tentativa de acessar um título diferente que não recebeu as políticas de acesso entre títulos apropriadas. Configure as políticas de acesso necessárias no Partner Center para habilitar o carregamento e o salvamento entre títulos. |
| 0x000000DF | ERROR\_FILE\_TOO\_LARGE | O tamanho do arquivo excede o limite permitido e não pode ser salvo. | Esse erro ocorre quando há uma tentativa de gravar dados em um caminho `XGameSaveFiles` que ultrapassa a cota de 256 MB do título. Esse erro é o mesmo que E\_QUOTA\_EXCEEDED. <br /><br />Para obter mais informações, consulte [Limites e cotas dos sistemas de armazenamento](/pt-BR/build/core-features/common/game-save/game-saves-storage-systems#limits-and-quotas). |
| 0x80830004 | E\_GS\_USER\_CANCELED | O usuário cancelou o download dos seus jogos salvos. | Esse erro ocorre se um usuário cancela uma tentativa de sincronização, forçando o provedor a falhar ao tentar obter o bloqueio. |

Se a tentativa de sincronização for negada, chame `XGameSaveFilesGetFolderWithUI` novamente para que o caminho do arquivo seja gravado localmente. Essa chamada retorna `S_OK`.

Esse erro também ocorre ao chamar `XGameSaveFilesGetFolderWithUIResult` com um provedor obsoleto. Esse erro também ocorre quando o Gaming Runtime Services (GRTS) desinicializa um provedor do Game Saves ao suspender um título ou quando ocorrem outros eventos gerenciados pelo sistema. Quando o título for retomado, chame `XGameSaveFilesGetFolderWithUiAsync` para reinicializar o provedor e garantir que os dados salvos estejam atualizados. Se o título for retomado sem fazer essa chamada, o provedor permanecerá não inicializado. As operações do Game Saves falharão.| | 0x8007000E | E\_OUTOFMEMORY | Não há memória restante para atender à sua solicitação.  | Esse erro geralmente ocorre por vários motivos. Você pode capturar alocações de memória com o PIX e verificar se há vazamentos de memória.  <br />  <br />Esteja ciente do seguinte:<br />  <br />1. Os identificadores têm contagem de referências. Verifique se há vazamentos de identificadores. Feche os identificadores de atualização após uma atualização bem-sucedida ou malsucedida. Evite ter grandes quantidades de atualizações pendentes.<br />  <br />2. Use `XMemTransferMemory` como solução alternativa para transferir parte da memória para a partição do sistema.<br />  <br />3. Fragmentação intensa da memória. | | 0x80070057 | E\_INVALIDARG | Um argumento inválido foi fornecido. O parâmetro está incorreto. | Esse erro pode ocorrer se o SCID usado em `XGameSaveFilesGetFolderWithUI` no PC não for um GUID válido. | | ---        | ---  | `XGameSaveFilesGetFolderWithUI` está travando indefinidamente ou falhando esporadicamente. | Verifique se não há caixas de diálogo do sistema GameSave abertas na máquina em que você está executando ou em outros consoles do usuário. Uma caixa de diálogo de entrada ou sincronização aberta pode causar comportamento indefinido se for ignorada. | 0x80830006 | E\_QUOTA\_EXCEEDED | O jogo excedeu a cota por usuário do jogo. Por padrão, essa cota é de 256 MB. | Use as seguintes práticas recomendadas para o gerenciamento de dados do Game Saves. <br />  <br />1. Não armazene dados dependentes entre contêineres.<br />  <br />2. Use menos blobs no contêiner para melhorar o desempenho. <br /><br />Para obter mais informações, consulte [Limites e cotas dos sistemas de armazenamento](/pt-BR/build/core-features/common/game-save/game-saves-storage-systems#limits-and-quotas) | | 0x80830005 | E\_GS\_UPDATE\_TOO\_BIG  | O tamanho da atualização do salvamento é muito grande. | O tamanho total de uma atualização de `XGameSave` deve ser menor que GS\_MAX\_BLOB\_SIZE (16 MB), independentemente do número total de blobs no contexto da atualização. | | 0x8924010c | E\_GAMERUNTIME\_INVALID\_HANDLE  | Este valor de identificador não é mais válido.  | Esse erro ocorre quando há uma tentativa de reutilizar identificadores não fechados de um usuário anterior. Feche os identificadores que não estão mais em uso. | | 0x80830001 | E\_GS\_INVALID\_CONTAINER\_NAME | O nome do contêiner é inválido. | Os caracteres válidos para a parte do caminho (até e incluindo a última barra) incluem letras maiúsculas (A-Z), letras minúsculas (a-z), números (0-9), sublinhados (\_) e barras (/). A parte do caminho pode estar vazia.<br /> <br />Os caracteres válidos para a parte do nome do arquivo (tudo após a última barra) incluem letras maiúsculas (A-Z), letras minúsculas (a-z), números (0-9), sublinhados (\_), pontos (.) e hifens (-). O nome do arquivo não pode estar vazio, terminar com ponto ou conter dois pontos consecutivos.  | | 0x80830003 | E\_GS\_OUT\_OF\_LOCAL\_STORAGE  | O dispositivo não tem capacidade de armazenamento suficiente para salvar o jogo.  | Os usuários devem disponibilizar espaço de armazenamento de Game Save no dispositivo. Esse erro pode ocorrer mesmo que a cota por usuário não seja excedida. <br /><br />Para obter mais informações, consulte [Gerenciando o Game Saves pelo dispositivo](/pt-BR/build/core-features/common/game-save/game-saves-walkthroughs-and-samples#managing-game-saves-through-the-device).  | | 0x80830007 | E\_GS\_PROVIDED\_BUFFER\_TOO\_SMALL  | O buffer fornecido à API era muito pequeno.  | Esse erro ocorre se o chamador passa para as APIs de Game Save um buffer menor que o tamanho dos dados do blob lidos. Chame [XAsyncGetResultSize](/pt-BR/reference/system/xasync/functions/xasyncgetresultsize) se estiver usando chamadas `Async` para garantir que o tamanho de buffer correto seja usado.  | | 0x80830008 | E\_GS\_BLOB\_NOT\_FOUND | O blob especificado não foi encontrado.  | Para confirmar que um blob existe, use as ferramentas `xbstorage` ou `gamesaveutil` para baixá-lo. Execute esta etapa depois que o título liberar o bloqueio (quando for encerrado ou suspenso) para evitar comportamento indefinido.<br /><br />Para obter mais informações, consulte [Ferramentas do Game Saves](/pt-BR/build/core-features/common/game-save/game-saves-tools).  | | 0x80830009 | E\_GS\_NO\_SERVICE\_CONFIGURATION  | O título não está configurado corretamente para o armazenamento conectado.   | Esse erro ocorre quando o SCID está incorreto ou quando o título não está configurado corretamente no Partner Center.<br /><br />Para obter mais informações, consulte [Configurações do Partner Center](/pt-BR/build/core-features/common/game-save/game-saves-walkthroughs-and-samples#partner-center-configurations).  | | 0x8083000A | E\_GS\_CONTAINER\_NOT\_IN\_SYNC  | O contêiner ainda não está sincronizado.   | Verifique se o contêiner XGameSave está sincronizado antes de enviar atualizações para ele.  | | 0x8083000B | E\_GS\_CONTAINER\_SYNC\_FAILED  | A sincronização do contêiner falhou. | Confirme se a conexão com a internet está estável ao sincronizar dados da nuvem.  | | 0x8083000C | E\_GS\_USER\_NOT\_REGISTERED\_IN\_SERVICE | Indica que a MSA do usuário ainda não é uma conta do XBOX services.      | Confirme se o usuário que você está usando está registrado corretamente no Partner Center.   | | 0x8083000D | E\_GS\_HANDLE\_EXPIRED  | O identificador usado pela função expirou e deve ser obtido novamente.  | `XGameSaveUpdateHandle` não pode ser reutilizado após um envio ou quando o título é suspenso | | 0x8083000E | E\_GS\_ASYNC\_FUNCTION\_REQUIRED  | A função está sendo chamada em um thread sensível ao tempo, com risco de deadlocks.  | Use a implementação assíncrona em vez disso.  | | 0x8083000F | E\_GS\_PROVIDER\_MISMATCH | O jogo está misturando chamadas de `XGameSave` e `XGameSaveFiles`, o que não é suportado.   | Somente um tipo de API do Game Saves pode ser inicializado por vez em um título. Além disso, use uma única API do Game Saves por título. No caso de você trabalhar com vários títulos, há métodos para interoperar entre APIs diferentes. <br /><br />Para obter mais informações, consulte [Interoperabilidade entre XGameSave e XGamesaveFiles](/pt-BR/build/core-features/common/game-save/game-saves-walkthroughs-and-samples#interop-between-xgamesave-and-xgamesavefiles)  | | 0x80831001 | E\_GS\_TERMINATEDTITLE\_STALE\_DATA<br />ou<br />`TerminateApplicationAfterSuspend`| Essas informações não são expostas por meio de APIs voltadas ao usuário. O comportamento é esperado. O Gerenciamento do Tempo de Vida do Processo (PLM) interrompe o título quando detecta dados obsoletos e o dispositivo se reconecta à internet. Após um evento de suspensão, o aplicativo é fechado. | Essa saída de depuração não é um bug. Quando o jogo é encerrado por não ter obtido o bloqueio do Game Saves no momento da inicialização (por exemplo, durante o jogo offline ou na escolha da caixa de diálogo de conflito), o sistema operacional encerra o jogo na suspensão para garantir um estado limpo na próxima inicialização.  |

### Códigos NTSTATUS do Win32

Com `XGameSaveFiles`, os seguintes códigos de status podem aparecer.

| Valor | Nome | Descrição de `XGameSaveFiles` |
| - | - | - |
| 0xC0000106 | STATUS\_NAME\_TOO\_LONG | O nome do diretório é muito longo. |
| 0xC0000033 | STATUS\_OBJECT\_NAME\_INVALID | O nome do diretório contém caracteres que não são válidos no serviço de nuvem. |
| 0xC0000106 | STATUS\_NAME\_TOO\_LONG | O nome do arquivo, incluindo o caminho da pasta, é muito longo. |
| 0xC0000904 | STATUS\_FILE\_TOO\_LARGE | O tamanho do arquivo excedeu 64 MB ou o jogo excedeu sua cota máxima por usuário para jogos salvos. |
| 0xC000009A | STATUS\_INSUFFICIENT\_RESOURCES | O jogo excedeu o espaço de armazenamento alocado no dispositivo. |

## Documentação de referência da API

* [XGameSave (conteúdo da API)](/pt-BR/reference/system/xgamesave/xgamesave_members)
  * Funções
    * [XGameSaveSubmitUpdate](/pt-BR/reference/system/xgamesave/functions/xgamesavesubmitupdate)
* [XGameSaveFiles (conteúdo da API)](/pt-BR/reference/system/xgamesavefiles/xgamesavefiles_members)
  * Funções
    * [XGameSaveFilesGetFolderWithUiAsync](/pt-BR/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)
* [xasync (conteúdo da API)](/pt-BR/reference/system/xasync/xasync_members)
  * Funções
    * [XAsyncGetResultSize](/pt-BR/reference/system/xasync/functions/xasyncgetresultsize)

## Confira também

[Game Saves (conteúdo)](/pt-BR/build/core-features/common/game-save/game-saves-toc)


## Related topics

- [Game Saves walkthroughs and samples](/build/core-features/common/game-save/game-saves-walkthroughs-and-samples.md)
- [Acesse recursos e downloads do GDK](/pt-BR/home/onboarding-access/access-resources.md)
- [Visão geral do Unity](/pt-BR/paths/unity/overview.md)
- [Compile e execute seu primeiro título de console com o GDKX](/pt-BR/home/build-first-title/first-console-title-walkthrough.md)
- [Visão geral do XBOX Series X|S](/pt-BR/paths/series-xs/overview.md)
