次の方法で共有


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