> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XPackageRegisterPackageInstalled

> XPackageRegisterPackageInstalled

# XPackageRegisterPackageInstalled

注册一个回调，在安装完成时调用。

## 语法

```cpp theme={null}
HRESULT XPackageRegisterPackageInstalled(  
         XTaskQueueHandle queue,  
         void* context,  
         XPackageInstalledCallback* callback,  
         XTaskQueueRegistrationToken* token  
)  
```

### 参数

*queue*   \_In\_\
类型：XTaskQueueHandle

要在其上运行回调的异步队列。

*context*   \_In\_opt\_\
类型：void\*

要传递给回调的上下文。

*callback*   \_In\_\
类型：XPackageInstalledCallback\*

安装完成时调用的用户定义回调。

*token*   \_Out\_\
类型：[XTaskQueueRegistrationToken\*](/reference/system/xtaskqueue/structs/xtaskqueueregistrationtoken)

返回时，包含一个标识回调的令牌，可用于通过 [XPackageUnregisterPackageInstalled](/reference/system/xpackage/functions/xpackageunregisterpackageinstalled) 注销回调。

### 返回值

类型：HRESULT

HRESULT 成功或错误代码。

## 备注

PackageInstalled 通知可用于确定新包何时完全安装完成。

[XPackageEnumeratePackages](/reference/system/xpackage/functions/xpackageenumeratepackages) API 和 [XPackageRegisterPackageInstalled](/reference/system/xpackage/functions/xpackageregisterpackageinstalled) API 都会通过 **XPackageDetails** 结构提供有关安装的详细信息。如果包正在安装，则 **installing** 属性将设为 true，你可以创建一个安装监视器，让包的标识符监视安装进度。

没有通用的安装队列通知；意图是使用 [XPackageEnumeratePackages](/reference/system/xpackage/functions/xpackageenumeratepackages) 显示和跟踪进行中的项目，并使用 **PackageInstalled** 宣告新 DLC 的存在。也没有停止、开始或取消安装的 API。从游戏的角度来看，安装应自行处理。错误将自动重试，且对游戏不可见。

在以下示例中，**XPackageRegisterPackageInstalled** 用于在安装新 DLC 包时打印一条消息：

```cpp theme={null}
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 主机

## 概念文档

* [流式安装：状态](/build/core-features/common/packaging/packaging-installstatus)

## 另请参阅

[XPackage](/reference/system/xpackage/xpackage_members)


## Related topics

- [XPackageUnregisterPackageInstalled](/zh-CN/reference/system/xpackage/functions/xpackageunregisterpackageinstalled.md)
- [XPackageInstalledCallback](/zh-CN/reference/system/xpackage/functions/xpackageinstalledcallback.md)
- [XPackageEnumerationCallback](/zh-CN/reference/system/xpackage/functions/xpackageenumerationcallback.md)
- [流式安装:状态](/zh-CN/build/core-features/common/packaging/packaging-installstatus.md)
- [XPackage](/zh-CN/reference/system/xpackage/xpackage_members.md)
