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

# Game Saves 偵錯

> 修正常見的 XBOX GDK Game Saves 錯誤，包括 SCID 設定錯誤、Partner Center Connected Storage 設定、控制代碼清除，以及 NTSTATUS 代碼。

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

## 常見的 Game Saves 錯誤案例

### 服務設定識別碼設定錯誤

如果呼叫 [XGameSaveFilesGetFolderWithUiAsync](/zh-TW/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync) 時發生錯誤 0x80830002 (E\_GS\_NO\_ACCESS)，原始程式碼中的服務設定識別碼 (SCID) 可能不正確。請確定 SCID 與 Microsoft Partner Center 中顯示的相符。可能會出現下列系統錯誤訊息。

<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="對話方塊：發生暫時性的網路問題。" width="2218" height="923" data-path="images/gdk/features/common/temporary-network-error.png" />

#### 遊戲繫結的影響

如果您的遊戲使用[遊戲繫結](/zh-TW/services/xbox-services/fundamentals/game-binding/game-binding-overview)，之後又新增 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 設定。

<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="Partner Center Connected Storage 設定。" width="2187" height="895" data-path="images/gdk/features/common/partner-center-config-setup.png" />

### 控制代碼清除

Game Saves 與雲端之間的雙向同步是透過多個控制代碼來管理。如果未正確管理這些控制代碼的存留期，與雲端雙向同步時可能會導致未定義的行為。

`XGameSaveFiles`：

* 在遊戲啟動和繼續時呼叫 [XGameSaveFilesGetFolderWithUiAsync](/zh-TW/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)。此呼叫會隱含建立 Game Saves 提供者控制代碼。當遊戲暫停或終止時，OS 會處置它。

`XGameSave`：

* 在 [XGameSaveSubmitUpdate](/zh-TW/reference/system/xgamesave/functions/xgamesavesubmitupdate) 呼叫之後刪除 `XGameSaveUpdateHandle`，無論更新成功或失敗。
* 在遊戲暫停或終止時刪除 `XGameSaveContainerHandle`。
* 在遊戲暫停或終止時刪除 `XGameSaveProviderHandle`。

### 確認 Game Saves

若要確認 Game Saves 正在上傳至雲端，遊戲需要開始釋放遊戲鎖定的程序，然後開始上傳資料。您可以透過[檢查 Game Saves 網路流量](/zh-TW/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic)，使用 Fiddler 查看此流量。

如需 Game Saves 同步流程的詳細資訊，請參閱[了解 Game Saves 同步流程](/zh-TW/build/core-features/common/game-save/game-saves-syncing)。

## 常見錯誤

| 錯誤碼 | 名稱 | 描述 | 疑難排解 |
| - | - | - | - |
| 0x80830002 | E\_GS\_NO\_ACCESS | 作業失敗，因為遊戲無法存取容器儲存空間。 | 如果 SCID 和 TitleID 設定不正確，導致 API 呼叫失敗，就會發生此錯誤。請檢查遊戲的 .config 檔案中的 TitleID 是否正確，以及原始程式碼中的 SCID 是否正確。 <br /><br />主機系統提示中顯示的錯誤訊息為：「可能發生服務中斷。請檢查服務狀態。如果發生服務中斷，請稍候再試，或離線使用此遊戲或應用程式。」 <br /> <br />當嘗試存取未提供適當跨遊戲存取原則的其他遊戲時，就會發生此錯誤。請在 Partner Center 中設定必要的存取原則，以啟用跨遊戲載入和儲存。 |
| 0x000000DF | ERROR\_FILE\_TOO\_LARGE | 檔案大小超過允許的限制，因此無法儲存。 | 當嘗試將資料寫入超過 256 MB 遊戲配額的 `XGameSaveFiles` 路徑時，就會發生此錯誤。此錯誤與 E\_QUOTA\_EXCEEDED 相同。 <br /><br />如需詳細資訊，請參閱[儲存系統限制與配額](/zh-TW/build/core-features/common/game-save/game-saves-storage-systems#limits-and-quotas)。 |
| 0x80830004 | E\_GS\_USER\_CANCELED | 使用者取消了存檔的下載。 | 如果使用者取消同步嘗試，強制提供者在嘗試取得鎖定時失敗，就會發生此錯誤。 |

如果同步嘗試遭拒，請再次呼叫 `XGameSaveFilesGetFolderWithUI`，讓檔案路徑寫入本機。此呼叫會傳回 `S_OK`。

使用過時的提供者呼叫 `XGameSaveFilesGetFolderWithUIResult` 時，也會發生此錯誤。當 Gaming Runtime Services (GRTS) 在暫停遊戲時或發生其他系統管理的事件時取消初始化 Game Saves 提供者，也會發生此錯誤。遊戲繼續時，請呼叫 `XGameSaveFilesGetFolderWithUiAsync` 以重新初始化提供者，並確保儲存的資料是最新的。如果遊戲繼續時未進行此呼叫，提供者會維持未初始化狀態。Game Saves 作業會失敗。| | 0x8007000E | E\_OUTOFMEMORY | 沒有剩餘的記憶體可處理您的要求。  | 此錯誤通常有多種原因。您可以使用 PIX 擷取記憶體配置，並檢查是否有記憶體流失。  <br />  <br />請注意下列事項：<br />  <br />1. 控制代碼採用參考計數。請檢查是否有控制代碼流失。在更新成功或失敗後關閉已更新的控制代碼。避免有大量擱置中的更新。<br />  <br />2. 使用 `XMemTransferMemory` 作為因應措施，將部分記憶體轉移至系統分割區。<br />  <br />3. 嚴重的記憶體片段化。 | | 0x80070057 | E\_INVALIDARG | 提供了無效的引數。參數不正確。 | 如果在 PC 上 `XGameSaveFilesGetFolderWithUI` 中使用的 SCID 不是有效的 GUID，就可能會發生此錯誤。 | | ---        | ---  | `XGameSaveFilesGetFolderWithUI` 無限期停止回應或偶爾失敗。 | 請確定您執行的電腦上沒有開啟的 GameSave 系統對話方塊，且使用者的其他主機上也沒有出現對話方塊。如果忽略開啟的登入或同步對話方塊，可能會導致未定義的行為。 | 0x80830006 | E\_QUOTA\_EXCEEDED | 遊戲超過了每位使用者的遊戲配額。根據預設，此配額為 256 MB。 | 請使用下列 Game Saves 資料管理的最佳做法。 <br />  <br />1. 不要跨容器儲存相依的資料。<br />  <br />2. 在容器中使用較少的 Blob 以改善效能。 <br /><br />如需詳細資訊，請參閱[儲存系統限制與配額](/zh-TW/build/core-features/common/game-save/game-saves-storage-systems#limits-and-quotas) | | 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)、底線 (\_) 和正斜線 (/)。路徑部分可以是空的。<br /> <br />檔案名稱部分 (最後一個正斜線之後的所有內容) 的有效字元包括大寫字母 (A-Z)、小寫字母 (a-z)、數字 (0-9)、底線 (\_)、句點 (.) 和連字號 (-)。檔案名稱不能是空的、不能以句點結尾，也不能包含兩個連續的句點。  | | 0x80830003 | E\_GS\_OUT\_OF\_LOCAL\_STORAGE  | 裝置沒有足夠的儲存容量來儲存遊戲。  | 使用者必須在裝置上提供 Game Save 儲存空間。即使未超過每位使用者的配額，也可能發生此錯誤。 <br /><br />如需詳細資訊，請參閱[透過裝置管理 Game Saves](/zh-TW/build/core-features/common/game-save/game-saves-walkthroughs-and-samples#managing-game-saves-through-the-device)。  | | 0x80830007 | E\_GS\_PROVIDED\_BUFFER\_TOO\_SMALL  | 提供給 API 的緩衝區太小。  | 如果呼叫端傳入 Game Save API 的緩衝區小於讀取的 Blob 資料大小，就會發生此錯誤。如果您使用 `Async` 呼叫，請呼叫 [XAsyncGetResultSize](/zh-TW/reference/system/xasync/functions/xasyncgetresultsize) 以確保使用正確的緩衝區大小。  | | 0x80830008 | E\_GS\_BLOB\_NOT\_FOUND | 找不到指定的 Blob。  | 若要確認 Blob 是否存在，請使用 `xbstorage` 或 `gamesaveutil` 工具下載 Blob。請在遊戲釋放鎖定之後 (遊戲終止或暫停時) 執行此步驟，以避免未定義的行為。<br /><br />如需詳細資訊，請參閱 [Game Saves 工具](/zh-TW/build/core-features/common/game-save/game-saves-tools)。  | | 0x80830009 | E\_GS\_NO\_SERVICE\_CONFIGURATION  | 遊戲未針對 Connected Storage 正確設定。   | 當 SCID 不正確或遊戲未在 Partner Center 中正確設定時，就會發生此錯誤。<br /><br />如需詳細資訊，請參閱 [Partner Center 設定](/zh-TW/build/core-features/common/game-save/game-saves-walkthroughs-and-samples#partner-center-configurations)。  | | 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 之間進行互通。 <br /><br />如需詳細資訊，請參閱 [XGameSave 與 XGamesaveFiles 之間的互通](/zh-TW/build/core-features/common/game-save/game-saves-walkthroughs-and-samples#interop-between-xgamesave-and-xgamesavefiles)  | | 0x80831001 | E\_GS\_TERMINATEDTITLE\_STALE\_DATA<br />或<br />`TerminateApplicationAfterSuspend`| 此資訊不會透過面向使用者的 API 公開。此行為是預期的。處理程序生命週期管理 (PLM) 在偵測到過時資料且裝置重新連線到網際網路時，會停止遊戲。在暫停事件之後，應用程式會關閉。 | 此偵錯輸出不是錯誤。當遊戲因為在初始化時未取得 Game Saves 鎖定 (例如在離線遊玩或選擇衝突對話方塊選項期間) 而終止時，OS 會在暫停時終止遊戲，以確保下次啟動時處於乾淨的狀態。  |

### Win32 NTSTATUS 代碼

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

| 值 | 名稱 | `XGameSaveFiles` 描述 |
| - | - | - |
| 0xC0000106 | STATUS\_NAME\_TOO\_LONG | 目錄名稱太長。 |
| 0xC0000033 | STATUS\_OBJECT\_NAME\_INVALID | 目錄名稱包含雲端服務中無效的字元。 |
| 0xC0000106 | STATUS\_NAME\_TOO\_LONG | 檔案名稱 (包括資料夾路徑) 太長。 |
| 0xC0000904 | STATUS\_FILE\_TOO\_LARGE | 檔案大小超過 64 MB，或遊戲超過其每位使用者的存檔最大配額。 |
| 0xC000009A | STATUS\_INSUFFICIENT\_RESOURCES | 遊戲超過其在裝置上分配的儲存空間。 |

## 參考 API 文件

* [XGameSave (API 內容)](/zh-TW/reference/system/xgamesave/xgamesave_members)
  * 函式
    * [XGameSaveSubmitUpdate](/zh-TW/reference/system/xgamesave/functions/xgamesavesubmitupdate)
* [XGameSaveFiles (API 內容)](/zh-TW/reference/system/xgamesavefiles/xgamesavefiles_members)
  * 函式
    * [XGameSaveFilesGetFolderWithUiAsync](/zh-TW/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)
* [xasync (API 內容)](/zh-TW/reference/system/xasync/xasync_members)
  * 函式
    * [XAsyncGetResultSize](/zh-TW/reference/system/xasync/functions/xasyncgetresultsize)

## 另請參閱

[Game Saves 目錄](/zh-TW/build/core-features/common/game-save/game-saves-toc)


## Related topics

- [Save](/ko/reference/system/Wrappers/classes/provider/methods/xgamesave_wrapper_provider_save.md)
- [Game save](/build/core-features/common/game-save/index.md)
- [Game Save](/ja-jp/build/core-features/common/game-save/index.md)
- [XGameSave](/reference/system/xgamesave/xgamesave_members.md)
- [Game Saves debugging](/build/core-features/common/game-save/game-saves-debugging.md)
