XPackageInstallChunks
开始区块的安装。
语法
HRESULT XPackageInstallChunks(
const char* packageIdentifier,
uint32_t selectorCount,
XPackageChunkSelector* selectors,
uint32_t minimumUpdateIntervalMs,
bool suppressUserConfirmation,
XTaskQueueHandle queue,
XPackageInstallationMonitorHandle* installationMonitor
)
参数
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 显示它。
queue _In_opt_
类型:XTaskQueueHandle
将对其执行工作的异步队列。
installationMonitor _Out_
类型:XPackageInstallationMonitorHandle*
在返回时,包含一个句柄,该句柄指向一个将监视与选择器匹配的区块安装的安装监视器。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
如果安装被拒绝,将返回一个取消错误。
备注
注意
在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程。
安装区块可能涉及提示用户接受下载大小。
- 如果您使用此 API 的同步版本,它将阻止,直到用户接受或拒绝下载。 如果用户拒绝,则调用将失败,并显示取消错误 E_ABORT。 这将返回您可用于监视安装状态的安装监视器。 监视器最终必须通过调用 XPackageCloseInstallationMonitorHandle 来关闭。
- 将 suppressUserConfirmation 设置为 true 可让您提供将提示用户进行下载的自定义 UI。
此示例将安装与“BigMaps”标记对应的区块:
void CALLBACK BigMapsInstallProgress(
void* /* context */,
XPackageInstallationMonitorHandle monitor)
{
XPackageInstallationProgress progress;
XPackageGetInstallationProgress(monitor, &progress);
if (progress.completed)
{
printf("BigMaps Installed\n");
XPackageCloseInstallationMonitorHandle(monitor);
}
}
HRESULT InstallBigMaps(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";
XPackageInstallationMonitorHandle monitor;
hr = XPackageInstallChunks(id, 1, &selector, 1000, false, queue, &monitor);
if (SUCCEEDED(hr))
{
XTaskQueueRegistrationToken token;
hr = XPackageRegisterInstallationProgressChanged(
monitor,
nullptr,
BigMapsInstallProgress,
&token);
if (FAILED(hr))
{
XPackageCloseInstallationMonitorHandle(monitor);
}
}
return hr;
}
要求
头文件:XPackage.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机