다음을 통해 공유


XGameSaveContainerInfoCallback

XGameSave에서 데이터를 호출한 후 작업을 완료하기 위한 콜백 함수입니다.

구문

bool XGameSaveContainerInfoCallback(  
         const XGameSaveContainerInfo* info,  
         void* context  
)  

매개 변수

info _In_
형식: XGameSaveContainerInfo*

XGameSaveGetContainerInfo, XGameSaveEnumerateContainerInfo 또는 XGameSaveEnumerateContainerInfoByName에 수행된 호출에서 전달한 XGameSaveContainerInfo입니다.

context _In_opt_
형식: void*

XGameSaveGetContainerInfo, XGameSaveEnumerateContainerInfo 또는 XGameSaveEnumerateContainerInfoByName에 전달된 개체입니다. 컨텍스트 포인터에는 콜백 함수에 필요할 수 있는 개체에 대한 정보가 포함됩니다.

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); 
    } 
} 

반환 값

형식: bool

열거를 중지하려면 false를 반환합니다.

비고

XGameSaveGetContainerInfo, XGameSaveEnumerateContainerInfo 또는 XGameSaveEnumerateContainerInfoByName 호출에 매개 변수로 전달됩니다. 이 함수는 XGameSave 정보를 가져오는 동안 다른 프로세스가 계속될 수 있도록 콜백으로 사용됩니다. 이 콜백 패턴은 또한 데이터가 섹션에 반환되도록 허용합니다. 콜백 함수가 개별적으로 또는 인라인으로 선언되는지 여부에 관계없이, 함수에 XGameSaveContainerInfoCallback과 동일한 부울 반환 값 및 매개 변수가 포함되어야 합니다.

요구 사항

헤더: XGameSave.h

라이브러리: xgameruntime.lib

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

참고 항목

XGameSave
XGameSaveGetContainerInfo
XGameSaveEnumerateContainerInfo
XGameSaveEnumerateContainerInfoByName게임 저장 오류