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

# 游戏存档工具

> 使用 Fiddler 检查 XBOX 游戏存档流量，并使用 xbstorage 和 gamesaveutil 命令行工具导出和导入本地存档数据。

本文介绍了使用 Fiddler 检查网络流量、调试的基本工具和技术，以及操作游戏存档。

## 检查游戏存档网络流量

使用 Fiddler 检查和调试进出你标题的网络流量。有关 Fiddler 设置的信息，请参阅以下文章：

* [XBOX 开发工具包上的 Fiddler](/build/console-features/networking/tools/fiddler-setup-networking)
* [Windows PC 上的 Fiddler](/build/console-features/networking/tools/fiddler-pc)

Fiddler 可确认标题是否获取或释放了标题锁，这决定了数据何时同步到云端和从云端同步。

以下是标题成功获取锁时的 `PUT` 请求。

```
PUT /connectedstorage/users/xuid(<XUID>)/scids/<TITLE SCID>/lock HTTP/1.1  
```

以下是标题释放锁时的请求。

```
DELETE /connectedstorage/users/xuid(<XUID>)/scids/<TITLE SCID>/lock HTTP/1.1
```

根据使用的游戏存档 API 不同，标题在不同时间点获取和释放锁。

| 游戏存档 API       | 锁获取                                                                                                                                                                                                           | 锁释放                                                                                    | 备注                                                                                                                                                                      |
| -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| XGameSaveFiles | [XGameSaveFilesGetFolderWithUiAsync](/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)                                                                                           | 当设备完成上传待处理更改时自动释放锁。此过程大约需要在标题退出后 15 到 30 秒。                                            | 当标题恢复时通过调用 [XGameSaveFilesGetFolderWithUiAsync](/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync) 重新获取锁。API 调用中的文件夹路径在会话间保持相同。锁可能不再处于活动状态。 |
| XGameSave      | [XGameSaveInitializeProvider](/reference/system/xgamesave/functions/xgamesaveinitializeprovider) 或 [XGameSaveInitializeProviderAsync](/reference/system/xgamesave/functions/xgamesaveinitializeproviderasync) | [XGameSaveCloseProvider](/reference/system/xgamesave/functions/xgamesavecloseprovider) | 标题调用 [XGameSaveCloseProvider](/reference/system/xgamesave/functions/xgamesavecloseprovider) 以释放提供程序的资源。不调用它会导致内存泄漏。                                                     |

有关同步过程的更多信息，请参阅[理解游戏存档同步流程](/build/core-features/common/game-save/game-saves-syncing)

## 操作游戏存档

有两个可用于直接与游戏存档交互的工具。

* `xbstorage`：用于主机上的本地游戏存档。有关更多信息，请参阅[在主机上管理游戏存档数据 (xbstorage.exe)](/tools/tools-console/commandlinetools/xbstorage)。
* `xgamesaveutil`：用于 PC 上的本地游戏存档。有关更多信息，请参阅[在 PC 上管理游戏存档数据 (xgamesaveutil.exe)](/tools/tools-pc/commandlinetools/gr-xgamesaveutil)。

这些工具使你能够通过 .xml 文件导入和导出各个用户或机器提供程序存储空间。
有关所有工具操作的列表，请参阅相应工具的文章。

<Info>导入和导出行为在主机和 PC 之间有所不同。请参阅下面的详细信息以及相应的工具页面以获取更多信息。</Info>

### 主机 (xbstorage)

在主机上，`xbstorage` 通过主机的游戏存档服务进行操作。当该工具执行操作时，系统的行为就像标题直接执行操作一样。

* **导入**数据会导致主机先与云端同步（获取锁并下载任何远程更改），将导入的数据写入本地，然后开始将导入的数据上传到云端。上传在后台完成后才释放锁。
* **导出**数据会导致主机先与云端同步，然后将本地数据复制到输出文件。

### PC (xgamesaveutil)

在 PC 上，`xgamesaveutil` 直接将数据写入本地磁盘，不经过游戏存档服务。

* **导入**数据将容器和 blob 写入本地磁盘。该工具在导入前后不与云端同步，并且不触发上传到云端。导入的数据将在标题下次启动并获取游戏存档提供程序时上传到云端。
* **导出**数据直接从本地磁盘读取容器。在读取之前不会与云端同步。

如果运行这些工具之一的设备无法获取锁或检测到云端与本地容器之间的冲突，则系统将该情况视为用户不打算解决冲突。在此状态下，设备保留容器的一个版本。设备的行为就像它处于离线状态，直到下次启动标题时。

## 参考 API 文档

* [XGameSave (API 内容)](/reference/system/xgamesave/xgamesave_members)
  * 函数
    * [XGameSaveInitializeProvider](/reference/system/xgamesave/functions/xgamesaveinitializeprovider)
    * [XGameSaveInitializeProviderAsync](/reference/system/xgamesave/functions/xgamesaveinitializeproviderasync)
    * [XGameSaveCloseProvider](/reference/system/xgamesave/functions/xgamesavecloseprovider)
* [XGameSaveFiles (API 内容)](/reference/system/xgamesavefiles/xgamesavefiles_members)
  * 函数
    * [XGameSaveFilesGetFolderWithUiAsync](/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)

## 另请参阅

[游戏存档目录](/build/core-features/common/game-save/game-saves-toc)


## Related topics

- [游戏存档概述](/zh-CN/build/core-features/common/game-save/game-saves-overview.md)
- [游戏存档](/zh-CN/build/core-features/common/game-save/index.md)
- [游戏存档系统对话框](/zh-CN/build/core-features/common/game-save/game-saves-dialogues.md)
- [游戏存档（目录）](/zh-CN/build/core-features/common/game-save/game-saves-toc.md)
- [游戏存档调试](/zh-CN/build/core-features/common/game-save/game-saves-debugging.md)
