次の方法で共有


タイトル ストレージの BLOB メタデータを取得する

このトピックでは、次のフラット C コード例を使用して、Xbox タイトル ストレージから blob メタデータを取得する方法を示します。

フラット C

auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock };
    XblTitleStorageBlobMetadataResultHandle handle;
    HRESULT hr = XblTitleStorageGetBlobMetadataResult(asyncBlock, &handle);

    if (SUCCEEDED(hr))
    {
        if (blobMetadataResultHandle != nullptr)
        {
            XblTitleStorageBlobMetadataResultCloseHandle(blobMetadataResultHandle);
        }

        blobMetadataResultHandle = handle;
    }

};

HRESULT hr = XblTitleStorageGetBlobMetadataAsync(
    xboxLiveContext,
    scid,
    storageType,
    blobPath.c_str(),
    xboxUserId,
    skipItems,
    maxItems,
    asyncBlock.get()
);

if (SUCCEEDED(hr))
{
    asyncBlock.release();
}

XblTitleStorageBlobMetadata オブジェクトのページは 1 つだけ存在します

次のコード例は、XblTitleStorageBlobMetadataResultHandle を使用して XblTitleStorageBlobMetadata オブジェクトのリストの最初のページを取得する方法を示しています。

注意

タイトルがタイトル ストレージにある blob の数によっては、XblTitleStorageBlobMetadata のページが複数ある場合があります。

フラット C

XblTitleStorageBlobMetadataResultHandle handle = blobMetadataResultHandle;

const XblTitleStorageBlobMetadata* items;
size_t itemsSize;

HRESULT hr = XblTitleStorageBlobMetadataResultGetItems(handle, &items, &itemsSize);

XblTitleStorageBlobMetadata オブジェクトのページがさらに存在するかどうかを確認します

次のコード例では、タイトル ストレージから取得する XblTitleStorageBlobMetadata のページがさらにあるかどうかを確認する方法を示します。

フラット C

XblTitleStorageBlobMetadataResultHandle handle = blobMetadataResultHandle;

bool hasNext;

HRESULT hr = XblTitleStorageBlobMetadataResultHasNext(handle, &hasNext);

XblTitleStorageBlobMetadata オブジェクトのより多くのページを取得しています

次のコード例は、XblTitleStorageBlobMetadata オブジェクトの次のページを取得する方法を示しています。

フラット C

XblTitleStorageBlobMetadataResultHandle handle = blobMetadataResultHandle;

auto asyncBlock = std::make_unique<XAsyncBlock>();
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock };
    XblTitleStorageBlobMetadataResultHandle handle{ nullptr };
    
    HRESULT hr = XblTitleStorageBlobMetadataResultGetNextResult(asyncBlock, &handle);
};

HRESULT hr = XblTitleStorageBlobMetadataResultGetNextAsync(handle, maxItems, asyncBlock.get());

if (SUCCEEDED(hr))
{
    asyncBlock.release();
}

XblTitleStorageBlobMetadataResultHandle の複製

次のコード例は、XblTitleStorageBlobMetadataResultHandle の複製を作成する方法を示しています。

フラット C

XblTitleStorageBlobMetadataResultHandle handle = blobMetadataResultHandle;
XblTitleStorageBlobMetadataResultHandle duplicatedHandle;

HRESULT hr = XblTitleStorageBlobMetadataResultDuplicateHandle(handle, &duplicatedHandle);

XblTitleStorageBlobMetadataResultHandle を閉じる

次のコード例は、XblTitleStorageBlobMetadataResultHandle を閉じる方法を示しています。

注意

使い終わったら、このハンドルを閉じる必要があります。

フラット C

XblTitleStorageBlobMetadataResultHandle handle = blobMetadataResultHandle;
XblTitleStorageBlobMetadataResultCloseHandle(handle);
blobMetadataResultHandle = nullptr;

関連項目

XAsyncBlock

XblTitleStorageBlobMetadataResultCloseHandle

XblTitleStorageGetBlobMetadataAsync

XblTitleStorageGetBlobMetadataResult

XblTitleStorageBlobMetadata

XblTitleStorageBlobMetadataResultGetItems

XblTitleStorageBlobMetadataResultHasNext

XblTitleStorageBlobMetadataResultGetNextAsync

XblTitleStorageBlobMetadataResultGetNextResult

XblTitleStorageBlobMetadataResultDuplicateHandle