Skip to main content
この記事では、デバッグが必要な Game Saves の一般的なシナリオと、その修正方法について取り上げます。

Game Saves の一般的なエラー シナリオ

誤って構成されたサービス構成識別子

XGameSaveFilesGetFolderWithUiAsync の呼び出し時にエラー 0x80830002 (E_GS_NO_ACCESS) が発生する場合、ソース コード内のサービス構成識別子 (SCID) が正しくない可能性があります。SCID が Microsoft パートナー センターに表示されているものと一致していることを確認してください。次のようなシステム エラー メッセージが表示されることがあります。

Game Binding への影響

タイトルが Game Binding を使用しており、後で Microsoft Game Development Kit (GDK) の PC バージョンを追加する場合、プライマリ製品の Microsoft アカウント (MSA) の AppID (MSAppID) を使用する必要があります。セカンダリ製品の MSAAppID を使用すると 0x80830002 エラーが発生します。

パートナー センター設定の構成ミス

パートナー センター設定の構成ミスは Game Saves エラーの一般的な原因になることがあります。ユーザーの Game Saves がクラウドに対して同期されるようにするには、パートナー センターの [Gameplay settings] > [Title Storage][Connected Storage] オプションを選択します。次の図は、Game Saves がクラウドに対して適切に同期できるようにするために必要なパートナー センターの Connected Storage 構成のセットアップを示しています。

ハンドルのクリーンアップ

Game Saves のクラウドとの同期は複数のハンドルで管理されます。これらのハンドルのライフタイムが適切に管理されていない場合、クラウドとの同期時に未定義の動作が発生する可能性があります。 XGameSaveFiles:
  • タイトルの起動時および再開時に XGameSaveFilesGetFolderWithUiAsync を呼び出します。この呼び出しは、Game Saves プロバイダー ハンドルを暗黙的に作成します。タイトルの中断または終了時に OS がそれを破棄します。
XGameSave:
  • 更新が成功したか失敗したかにかかわらず、XGameSaveSubmitUpdate の呼び出しの後に XGameSaveUpdateHandle を削除します。
  • タイトルが中断または終了したときに XGameSaveContainerHandle を削除します。
  • タイトルが中断または終了したときに XGameSaveProviderHandle を削除します。

Game Saves の確認

Game Saves がクラウドにアップロードされていることを確認するには、タイトルがそのタイトルへのロックの解放プロセスを開始し、その後データのアップロードを開始する必要があります。このトラフィックは、Fiddler で Game Saves ネットワーク トラフィックの検査 を行うことで確認できます。 Game Saves の同期フローの詳細については、Game Saves の同期フローについて を参照してください。

一般的なエラー

同期の試行が拒否された場合は、ローカルにファイル パスが書き込まれるように、XGameSaveFilesGetFolderWithUI を再度呼び出してください。この呼び出しは S_OK を返します。 このエラーは、古いプロバイダーを指定して XGameSaveFilesGetFolderWithUIResult を呼び出した場合にも発生します。このエラーは、Gaming Runtime Services (GRTS) がタイトルの中断時や他のシステム管理イベント発生時に Game Saves プロバイダーを初期化解除したときにも発生します。タイトルが再開したら、XGameSaveFilesGetFolderWithUiAsync を呼び出してプロバイダーを再初期化し、保存されたデータが最新であることを確認してください。この呼び出しを行わずにタイトルが再開すると、プロバイダーは初期化されていない状態のままになります。Game Saves の操作は失敗します。| | 0x8007000E | E_OUTOFMEMORY | 要求を処理するためのメモリが残っていません。 | このエラーは通常、いくつかの理由で発生します。PIX を使用してメモリの割り当てをキャプチャし、メモリ リークを確認できます。

次の点に注意してください:

1. ハンドルは参照カウントで管理されます。ハンドルのリークを確認します。更新の成功や失敗にかかわらず、更新されたハンドルを閉じてください。大量の保留中の更新がある状態を避けてください。

2. 回避策として、XMemTransferMemory を使用してシステム パーティションに一部のメモリを転送します。

3. メモリの深刻な断片化。 | | 0x80070057 | E_INVALIDARG | 無効な引数が指定されました。パラメーターが正しくありません。 | このエラーは、PC で XGameSaveFilesGetFolderWithUI に使用される SCID が有効な GUID でない場合に発生することがあります。 | | --- | --- | XGameSaveFilesGetFolderWithUI が無期限にハングまたは断続的に失敗する。 | 実行中のマシンで開いている GameSave システム ダイアログがないことを確認し、そのユーザーの他のコンソールでダイアログが表示されていないことも確認してください。サインインまたは同期のために開いているダイアログは、無視されると未定義の動作を引き起こす可能性があります。 | 0x80830006 | E_QUOTA_EXCEEDED | ゲームが、そのゲームのユーザーごとのクォータを超えました。既定では、このクォータは 256 MB です。 | Game Saves のデータ管理には次のベスト プラクティスを使用してください。

1. 依存関係のあるデータをコンテナー間で保存しないでください。

2. パフォーマンスを向上させるためにコンテナー内の BLOB を少なくしてください。

詳細については、ストレージ システムの上限とクォータ を参照してください。 | | 0x80830005 | E_GS_UPDATE_TOO_BIG | セーブ更新のサイズが大きすぎます。 | 更新コンテキスト内の BLOB の総数に関係なく、XGameSave 更新の合計サイズは GS_MAX_BLOB_SIZE (16 MB) より小さい必要があります。 | | 0x8924010c | E_GAMERUNTIME_INVALID_HANDLE | このハンドルの値は無効です。 | このエラーは、前のユーザーの閉じられていないハンドルを再利用しようとしたときに発生します。使用されなくなったハンドルは閉じてください。 | | 0x80830001 | E_GS_INVALID_CONTAINER_NAME | コンテナーの名前が無効です。 | パス部分 (最終スラッシュを含むまで) に有効な文字には、大文字 (A-Z)、小文字 (a-z)、数字 (0-9)、アンダースコア (_)、およびスラッシュ (/) が含まれます。パス部分は空でも構いません。

ファイル名部分 (最終スラッシュ以降のすべて) に有効な文字には、大文字 (A-Z)、小文字 (a-z)、数字 (0-9)、アンダースコア (_)、ピリオド (.)、およびハイフン (-) が含まれます。ファイル名は空、ピリオドで終わる、または連続する 2 つのピリオドを含むことはできません。 | | 0x80830003 | E_GS_OUT_OF_LOCAL_STORAGE | デバイスにゲームを保存するのに十分なストレージ容量がありません。 | ユーザーはデバイス上の Game Save ストレージ容量を確保する必要があります。このエラーは、ユーザーごとのクォータを超えていない場合でも発生することがあります。

詳細については、デバイスを介した Game Saves の管理 を参照してください。 | | 0x80830007 | E_GS_PROVIDED_BUFFER_TOO_SMALL | API に提供されたバッファーが小さすぎます。 | このエラーは、呼び出し元が Game Save API に、読み取られる BLOB データのサイズよりも小さいバッファーを渡した場合に発生します。Async 呼び出しを使用している場合は、正しいバッファー サイズが使用されるように XAsyncGetResultSize を呼び出してください。 | | 0x80830008 | E_GS_BLOB_NOT_FOUND | 指定された BLOB が見つかりません。 | BLOB が存在することを確認するには、xbstorage または gamesaveutil ツールを使用して BLOB をダウンロードしてください。未定義の動作を防ぐため、この手順はタイトルがロックを解放した後 (終了または中断時) に実行してください。

詳細については、Game Saves のツール を参照してください。 | | 0x80830009 | E_GS_NO_SERVICE_CONFIGURATION | タイトルが Connected Storage 用に正しく構成されていません。 | このエラーは、SCID が正しくないか、タイトルがパートナー センターで正しく構成されていない場合に発生します。

詳細については、パートナー センターの構成 を参照してください。 | | 0x8083000A | E_GS_CONTAINER_NOT_IN_SYNC | コンテナーがまだ同期されていません。 | 更新を送信する前に、XGameSave コンテナーが同期されていることを確認してください。 | | 0x8083000B | E_GS_CONTAINER_SYNC_FAILED | コンテナーの同期に失敗しました。 | クラウドからデータを同期する際にインターネット接続が安定していることを確認してください。 | | 0x8083000C | E_GS_USER_NOT_REGISTERED_IN_SERVICE | ユーザーの MSA がまだ XBOX services アカウントになっていないことを示します。 | 使用しているユーザーがパートナー センターに正しく登録されていることを確認してください。 | | 0x8083000D | E_GS_HANDLE_EXPIRED | 関数で使用されたハンドルの有効期限が切れており、再取得する必要があります。 | XGameSaveUpdateHandle は、送信後またはタイトルが中断された後は再利用できません。 | | 0x8083000E | E_GS_ASYNC_FUNCTION_REQUIRED | 関数がタイム センシティブ スレッドで呼び出されており、デッドロックのリスクがあります。 | 代わりに非同期の実装を使用してください。 | | 0x8083000F | E_GS_PROVIDER_MISMATCH | ゲームが XGameSaveXGameSaveFiles の呼び出しを混在させていますが、これはサポートされていません。 | 1 つのタイトル内では一度に 1 種類の Game Saves API のみを初期化できます。また、タイトルには 1 つの Game Saves API を使用してください。複数のタイトルで作業する場合には、異なる API 間の相互運用のためのメソッドがあります。

詳細については、XGameSave と XGamesaveFiles の相互運用 を参照してください。 | | 0x80831001 | E_GS_TERMINATEDTITLE_STALE_DATA
または
TerminateApplicationAfterSuspend| この情報はユーザー向け API を通じては公開されません。この動作は想定されています。プロセス ライフタイム管理 (PLM) は、古いデータを検出し、デバイスがインターネットに再接続したときにタイトルを停止します。中断イベントの後、アプリケーションは閉じられます。 | このデバッグ出力はバグではありません。ゲームが初期化時に Game Saves のロックを取得できないために終了された場合 (たとえば、オフライン プレイ中や競合ダイアログの選択時など)、OS は次回起動時のクリーンな状態を確保するために中断時にゲームを終了させます。 |

Win32 NTSTATUS コード

XGameSaveFiles では、次のステータス コードが表示されることがあります。

リファレンス API ドキュメント

関連項目

Game Saves 目次
最終更新日 2026年8月24日