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ゲームのセーブ エラー