Skip to main content
本文說明需要偵錯的常見 Game Saves 案例以及修正方式。

常見的 Game Saves 錯誤案例

服務設定識別碼設定錯誤

如果呼叫 XGameSaveFilesGetFolderWithUiAsync 時發生錯誤 0x80830002 (E_GS_NO_ACCESS),原始程式碼中的服務設定識別碼 (SCID) 可能不正確。請確定 SCID 與 Microsoft Partner Center 中顯示的相符。可能會出現下列系統錯誤訊息。 對話方塊:發生暫時性的網路問題。

遊戲繫結的影響

如果您的遊戲使用遊戲繫結,之後又新增 Microsoft Game Development Kit (GDK) 的 PC 版本,則必須使用主要產品的 Microsoft 帳戶 (MSA) AppID (MSAppID)。使用次要產品的 MSAAppID 會導致 0x80830002 錯誤。

Partner Center 設定錯誤

Partner Center 設定錯誤可能是 Game Saves 錯誤的常見原因。若要讓使用者的 Game Saves 與雲端雙向同步,請在 Partner Center 的 Gameplay settings > Title Storage 中選取 Connected Storage 選項。下圖說明確保 Game Saves 能夠正確與雲端雙向同步所需的 Partner Center Connected Storage 設定。 Partner Center Connected Storage 設定。

控制代碼清除

Game Saves 與雲端之間的雙向同步是透過多個控制代碼來管理。如果未正確管理這些控制代碼的存留期,與雲端雙向同步時可能會導致未定義的行為。 XGameSaveFiles:
  • 在遊戲啟動和繼續時呼叫 XGameSaveFilesGetFolderWithUiAsync。此呼叫會隱含建立 Game Saves 提供者控制代碼。當遊戲暫停或終止時,OS 會處置它。
XGameSave:
  • 在 XGameSaveSubmitUpdate 呼叫之後刪除 XGameSaveUpdateHandle,無論更新成功或失敗。
  • 在遊戲暫停或終止時刪除 XGameSaveContainerHandle。
  • 在遊戲暫停或終止時刪除 XGameSaveProviderHandle。

確認 Game Saves

若要確認 Game Saves 正在上傳至雲端,遊戲需要開始釋放遊戲鎖定的程序,然後開始上傳資料。您可以透過檢查 Game Saves 網路流量,使用 Fiddler 查看此流量。 如需 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)、底線 (_)、句點 (.) 和連字號 (-)。檔案名稱不能是空的、不能以句點結尾,也不能包含兩個連續的句點。 | | 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 不正確或遊戲未在 Partner Center 中正確設定時,就會發生此錯誤。

如需詳細資訊,請參閱 Partner Center 設定。 | | 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 帳戶。 | 請確認您使用的使用者已在 Partner Center 中正確註冊。 | | 0x8083000D | E_GS_HANDLE_EXPIRED | 函式使用的控制代碼已過期,必須重新取得。 | XGameSaveUpdateHandle 在提交之後或遊戲暫停時無法重複使用 | | 0x8083000E | E_GS_ASYNC_FUNCTION_REQUIRED | 函式是在時間敏感的執行緒上呼叫,有發生死結的風險。 | 請改用非同步實作。 | | 0x8083000F | E_GS_PROVIDER_MISMATCH | 遊戲混用了 XGameSave 和 XGameSaveFiles 呼叫,這是不支援的。 | 在一個遊戲內,一次只能初始化一種類型的 Game Saves API。此外,一個遊戲請使用一種 Game Saves API。如果您要處理多個遊戲,有一些方法可以在不同的 API 之間進行互通。

如需詳細資訊,請參閱 XGameSave 與 XGamesaveFiles 之間的互通 | | 0x80831001 | E_GS_TERMINATEDTITLE_STALE_DATA
或
TerminateApplicationAfterSuspend| 此資訊不會透過面向使用者的 API 公開。此行為是預期的。處理程序生命週期管理 (PLM) 在偵測到過時資料且裝置重新連線到網際網路時,會停止遊戲。在暫停事件之後,應用程式會關閉。 | 此偵錯輸出不是錯誤。當遊戲因為在初始化時未取得 Game Saves 鎖定 (例如在離線遊玩或選擇衝突對話方塊選項期間) 而終止時,OS 會在暫停時終止遊戲,以確保下次啟動時處於乾淨的狀態。 |

Win32 NTSTATUS 代碼

使用 XGameSaveFiles 時,可能會出現下列狀態碼。

參考 API 文件

另請參閱

Game Saves 目錄
Last modified on October 6, 2026