XGameSaveGetContainerInfo
XGameSaveProvider 内のコンテナーに関する情報を取得します。
構文
HRESULT XGameSaveGetContainerInfo(
XGameSaveProviderHandle provider,
const char* containerName,
void* context,
XGameSaveContainerInfoCallback* callback
)
パラメーター
provider _In_
型: XGameSaveProviderHandle
目的のコンテナーの XGameSaveProvider ハンドル。
containerName _In_z_
型: char*
情報を取得するコンテナーの名前。見つかった結果が 1 つだけ返されます。 複数のコンテナーを対象にする場合は、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 を使用して、そのコンテナーだけの情報を取得できます。 これは、情報が必要になるたびにすべてのプレイヤーについて呼び出すのではなく、1 人のプレイヤーに関する特定の情報を取得するのに便利です。 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
ゲームのセーブ エラー