XPackageInstallChunksResult
XPackageInstallChunksAsync の呼び出しの結果を取得します。
構文
HRESULT XPackageInstallChunksResult(
XAsyncBlock* asyncBlock,
XPackageInstallationMonitorHandle* installationMonitor
)
パラメーター
asyncBlock _Inout_
型: XAsyncBlock*
XPackageInstallChunksAsync に渡される XAsyncBlock。
installationMonitor _Out_
型: XPackageInstallationMonitorHandle*
戻ったとき、インストールに対するインストール モニターが格納されています。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。
解説
XPackageInstallChunks には、非同期バリエーションがあります。 チャンクのインストールでは、ダウンロード サイズを受け入れるようにユーザーに求めるメッセージが表示される場合があります。
この例では、非同期 API を使用して、BigMaps がどのようにインストールされるかを示します。
void CALLBACK BigMapsInstallProgress(
void* /* context */,
XPackageInstallationMonitorHandle monitor)
{
XPackageInstallationProgress progress;
XPackageGetInstallationProgress(monitor, &progress);
if (progress.completed)
{
printf("BigMaps Installed\n");
XPackageCloseInstallationMonitorHandle(monitor);
}
}
void CALLBACK BigMapsAsyncInstallComplete(XAsyncBlock* asyncBlock)
{
XPackageInstallationMonitorHandle monitor;
HRESULT hr = XPackageInstallChunksResult(asyncBlock, &monitor);
delete asyncBlock;
if (SUCCEEDED(hr))
{
XTaskQueueRegistrationToken token;
if (FAILED(XPackageRegisterInstallationProgressChanged(
monitor,
nullptr,
BigMapsInstallProgress, &token)))
{
XPackageCloseInstallationMonitorHandle(monitor);
}
}
}
HRESULT InstallBigMapsAsync(XTaskQueueHandle queue)
{
char id[XPACKAGE_IDENTIFIER_MAX_LENGTH];
HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id);
if (FAILED(hr)) return hr;
XPackageChunkSelector selector;
selector.type = XPackageChunkSelectorType::Tag;
selector.tag = "BigMaps";
XAsyncBlock* asyncBlock = new (std::nothrow) XAsyncBlock{};
asyncBlock->callback = BigMapsAsyncInstallComplete;
asyncBlock->queue = queue;
hr = XPackageInstallChunksAsync(
id, 1, &selector, 1000,
false, asyncBlock);
if (FAILED(hr))
{
delete asyncBlock;
}
return hr;
}
要件
ヘッダー: XPackage.h
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体