Skip to main content
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, 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. Caixa de diálogo: Há um problema temporário de rede.

Implicações da associação de jogos

Se o seu título usa associação de jogos 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. Configuração do Connected Storage no Partner Center.

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

Erros comuns

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.

Esteja ciente do seguinte:

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.

2. Use XMemTransferMemory como solução alternativa para transferir parte da memória para a partição do sistema.

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.

1. Não armazene dados dependentes entre contêineres.

2. Use menos blobs no contêiner para melhorar o desempenho.

Para obter mais informações, consulte Limites e cotas dos sistemas de armazenamento | | 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.

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.

Para obter mais informações, consulte Gerenciando o Game Saves pelo dispositivo. | | 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 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.

Para obter mais informações, consulte Ferramentas do Game Saves. | | 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.

Para obter mais informações, consulte Configurações do Partner Center. | | 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.

Para obter mais informações, consulte Interoperabilidade entre XGameSave e XGamesaveFiles | | 0x80831001 | E_GS_TERMINATEDTITLE_STALE_DATA
ou
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.

Documentação de referência da API

Confira também

Game Saves (conteúdo)
Last modified on October 6, 2026