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

# 게임 저장 디버깅

> SCID 잘못된 구성, 파트너 센터 연결된 스토리지 설정, 핸들 정리 및 NTSTATUS 코드를 포함하여 일반적인 XBOX GDK 게임 저장 오류를 해결합니다.

이 문서에서는 디버깅이 필요한 일반적인 게임 저장 시나리오와 해결 방법을 다룹니다.

## 일반적인 게임 저장 오류 시나리오

### 잘못 구성된 서비스 구성 식별자

[XGameSaveFilesGetFolderWithUiAsync](/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)를 호출할 때 오류 0x80830002(E\_GS\_NO\_ACCESS)가 발생하면 소스 코드의 서비스 구성 식별자(SCID)가 잘못되었을 가능성이 큽니다. SCID가 Microsoft 파트너 센터에 표시된 것과 일치하는지 확인합니다. 다음 시스템 오류 메시지가 나타날 수 있습니다.

<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" />

#### 게임 바인딩 관련 사항

타이틀에서 [게임 바인딩](/services/xbox-services/fundamentals/game-binding/game-binding-overview)을 사용하고 나중에 Microsoft Game Development Kit(GDK)의 PC 버전을 추가하는 경우, 기본 제품의 Microsoft 계정(MSA) AppID(MSAppID)를 사용해야 합니다. 보조 제품의 MSAAppID를 사용하면 0x80830002 오류가 발생합니다.

### 잘못 구성된 파트너 센터 설정

잘못 구성된 파트너 센터 설정이 게임 저장 오류의 일반적인 원인일 수 있습니다. 사용자 게임 저장이 클라우드에 동기화되고 클라우드에서 동기화되려면 파트너 센터의 **게임 플레이 설정** > **타이틀 스토리지**에서 **연결된 스토리지** 옵션을 선택합니다. 다음 이미지는 게임 저장이 클라우드에 그리고 클라우드에서 제대로 동기화될 수 있도록 하는 데 필요한 파트너 센터 연결된 스토리지 구성 설정을 보여 줍니다.

<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="파트너 센터 연결된 스토리지 구성 설정." width="2187" height="895" data-path="images/gdk/features/common/partner-center-config-setup.png" />

### 핸들 정리

게임 저장의 클라우드 동기화는 여러 핸들로 관리됩니다. 이러한 핸들의 수명이 올바르게 관리되지 않으면 클라우드와의 동기화 시 정의되지 않은 동작이 발생할 수 있습니다.

`XGameSaveFiles`:

* 타이틀이 실행되고 재개될 때 [XGameSaveFilesGetFolderWithUiAsync](/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)를 호출합니다. 이 호출은 암시적으로 게임 저장 공급자 핸들을 만듭니다. 타이틀이 일시 중단되거나 종료되면 OS가 이를 폐기합니다.

`XGameSave`:

* 업데이트의 성공 여부와 관계없이 [XGameSaveSubmitUpdate](/reference/system/xgamesave/functions/xgamesavesubmitupdate) 호출 후 `XGameSaveUpdateHandle`을 삭제합니다.
* 타이틀이 일시 중단되거나 종료되면 `XGameSaveContainerHandle`을 삭제합니다.
* 타이틀이 일시 중단되거나 종료되면 `XGameSaveProviderHandle`을 삭제합니다.

### 게임 저장 확인

게임 저장이 클라우드에 업로드되고 있는지 확인하려면 타이틀이 잠금을 해제하는 프로세스를 시작한 다음 데이터 업로드를 시작해야 합니다. [게임 저장 네트워크 트래픽 검사](/build/core-features/common/game-save/game-saves-tools#inspecting-game-saves-network-traffic)를 사용하여 Fiddler로 이 트래픽을 확인할 수 있습니다.

게임 저장 동기화 흐름에 대한 자세한 내용은 [게임 저장 동기화 흐름 이해](/build/core-features/common/game-save/game-saves-syncing)를 참조하세요.

## 일반적인 오류

| 오류 코드      | 이름                      | 설명                                        | 문제 해결                                                                                                                                                                                                                                                                                                                                                                        |
| ---------- | ----------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0x80830002 | E\_GS\_NO\_ACCESS       | 타이틀이 컨테이너 저장 공간에 접근할 수 없기 때문에 작업이 실패했습니다. | 이 오류는 SCID와 TitleID가 올바르게 구성되지 않아 API 호출이 실패할 때 발생합니다. 올바른 TitleID는 게임의 .config 파일에서, 올바른 SCID는 소스 코드에서 확인하세요. <br /><br />콘솔 시스템 프롬프트에 나타나는 오류 메시지는 "서비스 중단이 있을 수 있습니다. 서비스 상태를 확인하세요. 서비스 중단이 있다면 잠시 후 다시 시도하거나, 이 게임 또는 앱을 오프라인으로 사용하세요."입니다. <br /> <br />이 오류는 적절한 크로스 타이틀 접근 정책이 제공되지 않은 다른 타이틀에 접근하려고 시도할 때 발생합니다. 크로스 타이틀 로드 및 저장을 활성화하려면 파트너 센터에서 필요한 접근 정책을 구성하세요. |
| 0x000000DF | ERROR\_FILE\_TOO\_LARGE | 파일 크기가 허용된 한도를 초과하여 저장할 수 없습니다.           | 이 오류는 256MB 타이틀 할당량을 초과한 `XGameSaveFiles` 경로에 데이터를 쓰려고 시도할 때 발생합니다. 이 오류는 E\_QUOTA\_EXCEEDED와 동일한 오류입니다. <br /><br />자세한 내용은 [스토리지 시스템 제한 및 할당량](/build/core-features/common/game-save/game-saves-storage-systems#limits-and-quotas)을 참조하세요.                                                                                                                                 |
| 0x80830004 | E\_GS\_USER\_CANCELED   | 사용자가 저장된 게임의 다운로드를 취소했습니다.                | 이 오류는 사용자가 동기화 시도를 취소하여 공급자가 잠금을 얻으려 할 때 실패하도록 만들 때 발생합니다.                                                                                                                                                                                                                                                                                                                   |

동기화 시도가 거부되면 파일 경로가 로컬로 쓰이도록 `XGameSaveFilesGetFolderWithUI`를 다시 호출합니다. 이 호출은 `S_OK`를 반환합니다.

이 오류는 오래된 공급자로 `XGameSaveFilesGetFolderWithUIResult`를 호출할 때도 발생합니다. 이 오류는 또한 게이밍 런타임 서비스(GRTS)가 타이틀을 일시 중단하거나 다른 시스템 관리 이벤트가 발생할 때 게임 저장 공급자를 초기화 취소할 때도 발생합니다. 타이틀이 재개되면 `XGameSaveFilesGetFolderWithUiAsync`를 호출하여 공급자를 다시 초기화하고 저장된 데이터가 최신 상태인지 확인합니다. 타이틀이 이 호출 없이 재개되면 공급자는 초기화되지 않은 상태로 유지됩니다. 게임 저장 작업이 실패합니다.| | 0x8007000E | E\_OUTOFMEMORY | 요청을 처리할 남은 메모리가 없습니다.  | 이 오류는 일반적으로 여러 가지 이유로 발생합니다. PIX로 메모리 할당을 캡처하고 메모리 누수를 확인할 수 있습니다.  <br />  <br />다음 사항에 유의하세요.<br />  <br />1. 핸들은 참조 카운트됩니다. 핸들 누수를 확인하세요. 성공적이든 실패든 업데이트 후 업데이트된 핸들을 닫습니다. 대기 중인 업데이트를 많이 두지 마세요.<br />  <br />2. `XMemTransferMemory`를 해결 방법으로 사용하여 일부 메모리를 시스템 파티션으로 전송하세요.<br />  <br />3. 심각한 메모리 조각화. | | 0x80070057 | E\_INVALIDARG | 잘못된 인수가 제공되었습니다. 매개 변수가 잘못되었습니다. | 이 오류는 PC의 `XGameSaveFilesGetFolderWithUI`에 사용된 SCID가 유효한 GUID가 아닐 때 발생할 수 있습니다. | | ---        | ---  | `XGameSaveFilesGetFolderWithUI`가 무한정 중지되거나 산발적으로 실패합니다. | 실행 중인 컴퓨터에 열려 있는 게임 저장 시스템 대화상자가 없거나 사용자의 다른 콘솔에 대화상자가 나타나지 않는지 확인하세요. 로그인 또는 동기화용 열려 있는 대화상자를 무시하면 정의되지 않은 동작이 발생할 수 있습니다. | 0x80830006 | E\_QUOTA\_EXCEEDED | 게임이 게임의 사용자당 할당량을 초과했습니다. 기본적으로 이 할당량은 256MB입니다. | 게임 저장 데이터 관리를 위해 다음 모범 사례를 사용하세요. <br />  <br />1. 컨테이너 간에 종속 데이터를 저장하지 마세요.<br />  <br />2. 성능 향상을 위해 컨테이너에서 더 적은 blob을 사용하세요. <br /><br />자세한 내용은 [스토리지 시스템 제한 및 할당량](/build/core-features/common/game-save/game-saves-storage-systems#limits-and-quotas)을 참조하세요. | | 0x80830005 | E\_GS\_UPDATE\_TOO\_BIG  | 저장 업데이트의 크기가 너무 큽니다. | `XGameSave` 업데이트의 총 크기는 업데이트 컨텍스트의 전체 blob 수와 관계없이 GS\_MAX\_BLOB\_SIZE(16MB)보다 작아야 합니다. | | 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  | 디바이스에 게임을 저장할 저장 공간이 부족합니다.  | 사용자는 디바이스에서 게임 저장 저장 공간을 사용할 수 있게 해야 합니다. 이 오류는 사용자당 할당량을 초과하지 않은 경우에도 발생할 수 있습니다. <br /><br />자세한 내용은 [디바이스를 통한 게임 저장 관리](/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에 제공된 버퍼가 너무 작습니다.  | 이 오류는 호출자가 읽는 blob 데이터 크기보다 작은 버퍼를 게임 저장 API에 전달할 때 발생합니다. 올바른 버퍼 크기가 사용되고 있는지 확인하기 위해 `Async` 호출을 사용하는 경우 [XAsyncGetResultSize](/reference/system/xasync/functions/xasyncgetresultsize)를 호출하세요.  | | 0x80830008 | E\_GS\_BLOB\_NOT\_FOUND | 지정한 blob을 찾을 수 없습니다.  | blob이 존재하는지 확인하려면 `xbstorage` 또는 `gamesaveutil` 도구를 사용하여 blob을 다운로드하세요. 정의되지 않은 동작을 방지하기 위해 타이틀이 잠금을 해제한 후(종료되거나 일시 중단될 때) 이 단계를 수행하세요.<br /><br />자세한 내용은 [게임 저장 도구](/build/core-features/common/game-save/game-saves-tools)를 참조하세요.  | | 0x80830009 | E\_GS\_NO\_SERVICE\_CONFIGURATION  | 타이틀이 연결된 스토리지에 대해 올바르게 구성되지 않았습니다.   | 이 오류는 SCID가 잘못되었거나 타이틀이 파트너 센터에서 올바르게 구성되지 않았을 때 발생합니다.<br /><br />자세한 내용은 [파트너 센터 구성](/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 서비스 계정이 아님을 나타냅니다.      | 사용하는 사용자가 파트너 센터에 올바르게 등록되어 있는지 확인하세요.   | | 0x8083000D | E\_GS\_HANDLE\_EXPIRED  | 함수에서 사용한 핸들이 만료되어 다시 획득해야 합니다.  | `XGameSaveUpdateHandle`은 제출 후 또는 타이틀이 일시 중단되었을 때 다시 사용할 수 없습니다. | | 0x8083000E | E\_GS\_ASYNC\_FUNCTION\_REQUIRED  | 함수가 시간에 민감한 스레드에서 호출되어 교착 상태의 위험이 있습니다.  | 대신 비동기 구현을 사용하세요.  | | 0x8083000F | E\_GS\_PROVIDER\_MISMATCH | 게임이 `XGameSave`와 `XGameSaveFiles` 호출을 혼용하고 있으며, 이는 지원되지 않습니다.   | 타이틀 내에서 한 번에 한 유형의 게임 저장 API만 초기화할 수 있습니다. 또한 타이틀에는 하나의 게임 저장 API를 사용하세요. 여러 타이틀을 다루는 경우 서로 다른 API 간 상호 운용성을 위한 메서드가 있습니다. <br /><br />자세한 내용은 [XGameSave와 XGamesaveFiles 간 상호 운용성](/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)는 오래된 데이터를 감지하고 디바이스가 인터넷에 다시 연결되면 타이틀을 중지합니다. 일시 중단 이벤트 후 애플리케이션이 닫힙니다. | 이 디버그 출력은 버그가 아닙니다. 초기화 시 게임 저장 잠금을 놓치기 때문에 게임이 종료될 때(예: 오프라인 플레이 또는 충돌 대화상자 선택 중), 다음 시작 상태를 깨끗하게 유지하기 위해 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        | 파일 크기가 64MB를 초과하거나 게임이 게임 저장을 위한 사용자당 최대 할당량을 초과했습니다. |
| 0xC000009A | STATUS\_INSUFFICIENT\_RESOURCES | 게임이 디바이스에 할당된 저장 공간을 초과했습니다.                          |

## 참고 API 문서

* [XGameSave(API 콘텐츠)](/reference/system/xgamesave/xgamesave_members)
  * 함수
    * [XGameSaveSubmitUpdate](/reference/system/xgamesave/functions/xgamesavesubmitupdate)
* [XGameSaveFiles(API 콘텐츠)](/reference/system/xgamesavefiles/xgamesavefiles_members)
  * 함수
    * [XGameSaveFilesGetFolderWithUiAsync](/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync)
* [xasync(API 콘텐츠)](/reference/system/xasync/xasync_members)
  * 함수
    * [XAsyncGetResultSize](/reference/system/xasync/functions/xasyncgetresultsize)

## 참고 항목

[게임 저장 TOC](/build/core-features/common/game-save/game-saves-toc)


## Related topics

- [게임 저장 개요](/ko/build/core-features/common/game-save/game-saves-overview.md)
- [게임 저장](/ko/build/core-features/common/game-save/index.md)
- [게임 저장(콘텐츠)](/ko/build/core-features/common/game-save/game-saves-toc.md)
- [오류 코드](/ko/reference/errorcodes.md)
- [XGameSaveFilesGetFolderWithUiAsync](/ko/reference/system/xgamesavefiles/functions/xgamesavefilesgetfolderwithuiasync.md)
