XPackageInstallChunksAsync
チャンクのインストールを開始します。
構文
HRESULT XPackageInstallChunksAsync(
const char* packageIdentifier,
uint32_t selectorCount,
XPackageChunkSelector* selectors,
uint32_t minimumUpdateIntervalMs,
bool suppressUserConfirmation,
XAsyncBlock* asyncBlock
)
パラメーター
packageIdentifier _In_z_
型: char*
ディスクにインストールされているパッケージを一意に識別する文字列。 パッケージ識別子の詳細については、「ダウンロード可能なコンテンツ (DLC) の管理とライセンス」を参照してください。
selectorCount _In_
型: uint32_t
selectors パラメーター内のセレクターの数。
selectors _In_reads_(selectorCount)
型: XPackageChunkSelector*
インストールするチャンクを指定するセレクターの配列。
minimumUpdateIntervalMs _In_
型: uint32_t
更新間の間隔 (ミリ秒単位)。
suppressUserConfirmation _In_
型: bool
インストールするチャンクがプリセット サイズを超えると、確認プロンプトが表示されます。 suppressUserConfirmation が true の場合、プロンプトは表示されず、ユーザーが受け入れた場合と同様にインストールは進行します。 これにより、ゲームで独自の UI を表示できます。 ゲームでこれを使用する場合は、ユーザーに提示されるサイズを取得するために、XPackageEstimateDownloadSize も呼び出す必要があります。 XPackageEstimateDownloadSize では、プロンプトを表示するのに十分なサイズかどうかを示すブール値も返されます。 ダウンロードの確認が必要な場合は、ゲーム独自の UI で表示するか、XPackageInstallChunks で表示する必要があります。
asyncBlock _Inout_
型: XAsyncBlock*
非同期呼び出しのステータスを監視するための XAsyncBlock。
戻り値
型: 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 本体