XStoreQueryPackageUpdatesAsync
引数で指定されたパッケージの使用可能な更新プログラムのリストを取得します。このリストを使用して、これらの更新プログラムをダウンロードしてインストールできます。
構文
HRESULT XStoreQueryPackageUpdatesAsync (
const XStoreContextHandle storeContextHandle,
const char** packageIdentifiers,
size_t packageIdentifiersCount,
XAsyncBlock* async
)
パラメーター
storeContextHandle _In_
型: XStoreContextHandle
XStoreCreateContext によって返されるユーザーの Microsoft Store コンテキスト ハンドル。
packageIdentifiers _In_z_count_(packageIdentifiersCount)
型: char**
パッケージ ID 文字列のリスト。 パッケージ ID は、Microsoft Store からパッケージを一意に識別します。 パッケージ識別子の詳細については、「ダウンロード可能なコンテンツ (DLC) の管理とライセンス」を参照してください。
packageIdentifiersCount _In_
型: size_t
packageIdentifiers 内の識別子の数。
async _Inout_
型: XAsyncBlock*
行われている非同期処理が定義されている XAsyncBlock。 XAsyncBlock を使用して、呼び出しのステータスをポーリングし、呼び出しの結果を取得できます。 詳細については、「XAsyncBlock」を参照してください。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。
解説
この関数の実行結果と利用可能な更新のリストを取得するには、この関数を呼び出した後で、XStoreQueryPackageUpdatesResult を呼び出します。 取得する更新プログラムの数を取得するには、この関数を呼び出した後で、XStoreQueryPackageUpdatesResultCount を呼び出します。 結果関数に渡す配列の適切なサイズを判断できるので、結果の数の関数は重要です。
次のコード スニペットでは、指定されたパッケージのゲームとオプションの更新を取得する例を示します。
void CALLBACK QueryPackageUpdatesCallback(XAsyncBlock* asyncBlock)
{
uint32_t count;
HRESULT hr = XStoreQueryPackageUpdatesResultCount(
asyncBlock,
&count);
if (FAILED(hr))
{
printf("XStoreQueryPackageUpdatesResultCount failed : 0x%x\n", hr);
return;
}
printf("Number of updates: %d", count);
if (count > 0)
{
XStorePackageUpdate* updates = new XStorePackageUpdate[count];
hr = XStoreQueryPackageUpdatesResult(
asyncBlock,
count,
updates);
if (FAILED(hr))
{
delete[] updates;
printf("XStoreQueryPackageUpdatesResult failed: 0x%x\n", hr);
return;
}
for (uint32_t index = 0; index < count; index++)
{
printf("Update found for packageIdentifier: %s\n", updates[index].packageIdentifier);
// Proceed to XStoreDownloadAndInstallPackageUpdates flow
}
delete[] updates;
}
}
void QueryPackageUpdates(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle)
{
std::vector<std::string> packageIds;
HRESULT hr = XPackageEnumeratePackages(
XPackageKind::Game,
XPackageEnumerationScope::ThisAndRelated,
&packageIds, [](void* context, const XPackageDetails* details) -> bool
{
auto packageIds = reinterpret_cast<std::vector<std::string>*>(context);
printf("Identifier: %s name: %s\n", details->packageIdentifier, details->displayName);
packageIds->push_back(details->packageIdentifier);
});
// packageIds now populated with ids for all installed packages
auto asyncBlock = new XAsyncBlock();
asyncBlock->queue = m_asyncQueue;
asyncBlock->callback = QueryPackageUpdatesCallback;
hr = XStoreQueryPackageUpdatesAsync(
m_storeContext,
packageIds.data(),
packageIds.size(),
asyncBlock);
if (FAILED(hr))
{
printf("XStoreQueryPackageUpdatesAsync failed: 0x%x\n", hr);
return;
}
}
要件
ヘッダー: XStore.h (XGameRuntime.h に含まれます)
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体
関連項目
XStore
XStoreQueryPackageUpdatesResult
XStoreQueryPackageUpdatesResultCount