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게임 저장 오류