다음을 통해 공유


XGameSaveGetContainerInfo

XGameSaveProvider에 있는 컨테이너에 대한 정보를 검색합니다.

구문

HRESULT XGameSaveGetContainerInfo(  
         XGameSaveProviderHandle provider,  
         const char* containerName,  
         void* context,  
         XGameSaveContainerInfoCallback* callback  
)  

매개 변수

provider _In_
형식: XGameSaveProviderHandle

원하는 컨테이너가 포함된 XGameSaveProvider 핸들입니다.

containerName _In_z_
형식: char*

정보를 검색할 컨테이너 이름입니다. 결과가 검색되면 하나만 반환합니다. 둘 이상의 컨테이너가 필요하다면 XGameSaveEnumerateContainerInfo 또는 XGameSaveEnumerateContainerInfoByName을 사용합니다.

context _In_opt_
형식: void*

컨텍스트에 대한 호출 개체의 포인터입니다.

callback _In_
형식: XGameSaveContainerInfoCallback*

결과를 확인하고 XGameSaveContainerInfo 호출에서 데이터를 수집하기 위한 콜백 함수입니다.

반환 값

형식: HRESULT

함수 결과입니다.

일반적인 오류

  • E_GS_INVALID_CONTAINER_NAME
  • E_GS_USER_CANCELED
  • E_GS_CONTAINER_NOT_IN_SYNC
  • E_GS_CONTAINER_SYNC_FAILED
  • E_GS_HANDLE_EXPIRED

비고

참고 항목

이 함수는 시간에 민감한 스레드에서 호출하는 것이 안전하지 않습니다. 자세한 내용은 시간에 민감한 스레드를 참조하세요.

컨테이너는 메타데이터의 컬렉션 및 그 안에 있는 blob 집합에 대한 참조 포인터입니다. 컨테이너 이름이 미리 알려진 경우, 이 API를 사용해서 해당 컨테이너에 대한 정보만 반환하는 것이 가능합니다. 이 방법은 정보가 필요할 때마다 이를 모두 호출하는 대신 플레이어에 대해 특정 정보만 가져올 때 유용합니다. XGameSaveContainerInfo 구조에서 XGameSaveContainer의 구성을 찾을 수 있습니다.

void Sample::_GetContainerInfo(const char* name) 
{ 
    XGameSaveContainerInfoCallback* callback = [](_In_ const XGameSaveContainerInfo* info, _In_ void* ctx) -> bool 
    { 
        auto self = reinterpret_cast<Sample*>(ctx); 
        self->_UpdateContainerList(info); 
        return true; 
    }; 
  
    HRESULT hr = XGameSaveGetContainerInfo(_provider, name, this, callback); 
    if (FAILED(hr)) 
    { 
        _HandleContainerErrors(name, hr); 
    } 
} 
 
void Sample::_UpdateContainerList(const XGameSaveContainerInfo* container) 
{ 
    //update UX 
    printf("%s - %s: %I64dbytes %d blobs\n", container->name, container->displayName, container->totalSize, container->blobCount); 
    if (strcmp(container->name, "AutoSave") == 0) 
    { 
        _ReadContainerBlobsAsync(container); 
    } 
} 
 
void Sample::_HandleContainerErrors(const char* name, HRESULT hr) 
{ 
    switch (hr) 
    { 
    case E_GS_INVALID_CONTAINER_NAME: 
        printf("\'%s\' name is invalid for a container", name); 
        break; 
    case E_GS_USER_CANCELED: 
        printf("Container %s failed to sync user canceled hr=0x%08x\n", name, hr); 
        break; 
    case E_GS_CONTAINER_NOT_IN_SYNC: 
    case E_GS_CONTAINER_SYNC_FAILED: 
        printf("Container %s failed to sync hr=0x%08x\n", name, hr); 
        break; 
    case E_GS_HANDLE_EXPIRED: 
        printf("Container %s failed, re-initialize provider", name); 
        break; 
    case S_OK: 
        break; 
    default: 
        printf("Unknown Container error %s hr=0x%08X\n", name, hr); 
    } 
}

요구 사항

헤더: XGameSave.h

라이브러리: xgameruntime.lib

지원되는 플랫폼: Windows, Xbox One 패밀리 콘솔 및 Xbox Series 콘솔

참고 항목

XGameSave
XGameSaveCreateContainer
XGameSaveContainerInfo
게임 저장 오류