注册在安装完毕时要调用的回调。
语法
HRESULT XPackageRegisterPackageInstalled(
XTaskQueueHandle queue,
void* context,
XPackageInstalledCallback* callback,
XTaskQueueRegistrationToken* token
)
参数
queue _In_
类型:XTaskQueueHandle
要对其运行回调的异步队列。
context _In_opt_
类型:void*
要传递给回调的上下文。
callback _In_
类型:XPackageInstalledCallback*
在安装完成时要调用的用户定义的回调。
token _Out_
类型:XTaskQueueRegistrationToken*
在返回时,包含一个令牌,该令牌标识可用于通过 XPackageUnregisterPackageInstalled 取消注册该回调的回调。
返回值
类型:HRESULT
HRESULT 成功或错误代码。
备注
PackageInstalled 通知可用于确定何时完全安装新包。
XPackageEnumeratePackages API 和 XPackageRegisterPackageInstalled API 两者都提供有关通过 XPackageDetails 结构进行的安装的详细信息。 如果软件包正在安装,则 installing 属性设置为 true,并且可以创建一个安装监视器以允许包的标识符监视安装进度。
没有通用安装队列通知;目的是使用 XPackageEnumeratePackages 显示和跟踪未完成的项目,并使用 PackageInstalled 宣布存在新的 DLC。 也没有用于停止、启动或取消安装的 API。 从游戏的角度看,安装应自行解决。 将自动重试错误,并且错误对游戏不可见。
在下面的示例中,XPackageRegisterPackageInstalled 用于在安装新的 DLC 包时打印一条消息:
void CALLBACK NewPackageAdded(void* /* context */, const XPackageDetails* details)
{
if (details->kind == XPackageKind::Content)
{
printf("Package added: %s\n", details->displayName);
}
}
HRESULT ListenForNewDlc(XTaskQueueHandle queue, XTaskQueueRegistrationToken* token)
{
HRESULT hr = XPackageRegisterPackageInstalled(queue, nullptr, NewPackageAdded, token);
return hr;
}
void StopListeningForDlc(XTaskQueueRegistrationToken token)
{
XPackageUnregisterPackageInstalled(token, false);
}
要求
头文件:XPackage.h
库:xgameruntime.lib
支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机