このトピックでは、次のフラット 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;
関連項目
XblTitleStorageBlobMetadataResultCloseHandle
XblTitleStorageGetBlobMetadataAsync
XblTitleStorageGetBlobMetadataResult
XblTitleStorageBlobMetadataResultGetItems
XblTitleStorageBlobMetadataResultHasNext
XblTitleStorageBlobMetadataResultGetNextAsync