XStoreDownloadAndInstallPackagesAsync
指定された Microsoft Store パッケージをダウンロードしてインストールします。
構文
HRESULT XStoreDownloadAndInstallPackagesAsync(
const XStoreContextHandle storeContextHandle,
const char** storeIds,
size_t storeIdsCount,
XAsyncBlock* async
)
パラメーター
storeContextHandle _In_
型: XStoreContextHandle
XStoreCreateContext によって返されるユーザーの Microsoft Store コンテキスト ハンドル。
storeIds _In_z_count_(storeIdsCount)
型: char**
パッケージ ID 文字列のリスト。 パッケージ ID は、Microsoft Store からパッケージを一意に識別します。 パッケージ識別子の詳細については、「ダウンロード可能なコンテンツ (DLC) の管理とライセンス」を参照してください。
storeIdsCount _In_
型: size_t
storeIds 内の ID の数。
async _Inout_
型: XAsyncBlock*
行われている非同期処理が定義されている XAsyncBlock。 XAsyncBlock を使用して、呼び出しのステータスをポーリングし、呼び出しの結果を取得できます。 詳細については、「XAsyncBlock」を参照してください。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。
解説
この関数のダウンロードとインストールの結果を取得するには、この関数を呼び出した後で、XStoreDownloadAndInstallPackagesResult を呼び出します。 ダウンロードおよびインストールされたアイテムの数を取得するには、この関数を呼び出した後で、XStoreDownloadAndInstallPackagesResultCount を呼び出します。 結果関数に渡す配列の適切なサイズを判断できるので、結果の数の関数は重要です。
この API が実行中のゲームから呼び出される場合、ダウンロードは高い優先順位とみなされ、この API の storeIds パラメーターで指定された順序でキューの先頭に置かれます。
次のコード スニペットでは、Microsoft Store パッケージをダウンロードしてインストールする例を示します。
void CALLBACK DownloadAndInstallPackagesCallback(XAsyncBlock* asyncBlock)
{
uint32_t count;
HRESULT hr = XStoreDownloadAndInstallPackagesResultCount(
asyncBlock,
&count);
if (FAILED(hr))
{
printf("Failed retrieve the installing packages count: 0x%x\r\n", hr);
return;
}
printf("Number of updates: %d", count);
auto packageIdentifiers = new char[count][XPACKAGE_IDENTIFIER_MAX_LENGTH];
hr = XStoreDownloadAndInstallPackagesResult(
asyncBlock,
count,
&packageIdentifiers[0]);
if (FAILED(hr))
{
delete[] packageIdentifiers;
printf("Failed retrieve the installing packages results: 0x%x\r\n", hr);
return;
}
for (uint32_t index = 0; index < count; index++)
{
printf("packageIdentifier: %s\r\n", packageIdentifiers[index]);
}
delete[] packageIdentifiers;
}
void DownloadAndInstallPackages(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char** storeIds, size_t storeIdsCount)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = taskQueueHandle;
asyncBlock->callback = DownloadAndInstallPackagesCallback;
HRESULT hr = XStoreDownloadAndInstallPackagesAsync(
storeContextHandle,
storeIds,
storeIdsCount,
asyncBlock.get());
if (FAILED(hr))
{
printf("Failed to start download and install: 0x%x\r\n", hr);
return;
}
}
要件
ヘッダー: XStore.h (XGameRuntime.h に含まれます)
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体
関連項目
XStore
XStoreDownloadAndInstallPackagesResult
XStoreDownloadAndInstallPackagesResultCount