XPackageRegisterPackageInstalled

注册在安装完毕时要调用的回调。

语法

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 主机

另请参阅

XPackage