XGameSaveContainerInfoCallback
调用来自 XGameSave 的数据后用于完成工作的回调函数。
语法
bool XGameSaveContainerInfoCallback(
const XGameSaveContainerInfo* info,
void* context
)
参数
info _In_
类型:XGameSaveContainerInfo*
XGameSaveContainerInfo 从对 XGameSaveGetContainerInfo、XGameSaveEnumerateContainerInfo 或 XGameSaveEnumerateContainerInfoByName 的调用传入。
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游戏保存错误