> ## 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.

# XPackageEnumeratePackages

> XPackageEnumeratePackages

# XPackageEnumeratePackages

查找已安装或正在安装且与调用进程相关的程序包。

## 语法

```cpp theme={null}
HRESULT XPackageEnumeratePackages(  
         XPackageKind kind,  
         XPackageEnumerationScope scope,  
         void* context,  
         XPackageEnumerationCallback* callback  
)  
```

### 参数

*kind*   \_In\_\
类型：[XPackageKind](/reference/system/xpackage/enums/xpackagekind)

要枚举的安装程序包的类型。

*scope*   \_In\_\
类型：[XPackageEnumerationScope](/reference/system/xpackage/enums/xpackageenumerationscope)

安装程序包的范围。

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

要传递给 *callback* 参数中指定的回调的上下文。

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

在完成时要调用的回调。

### 返回值

类型：HRESULT

HRESULT 成功或错误代码。

## 备注

<Note>此函数在时间敏感线程上调用不安全。有关详细信息，请参阅[时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)。</Note>

使用 **XPackageEnumeratePackages** 查找已安装或正在安装且与调用进程相关的程序包。此函数可以查找内容程序包以及应用程序包。它通过 XPackageDetails 结构提供有关安装的详细信息。

如果程序包仍在安装中，**installing** 属性将设置为 true，并且你可以创建安装监视器，让程序包的标识符监视安装进度。

没有通用的安装队列通知；其意图是使用 [XPackageEnumeratePackages](/reference/system/xpackage/functions/xpackageenumeratepackages) 来显示和跟踪正在进行的项。也没有停止、启动或取消安装的 API。从游戏的角度来看，安装应该自动进行。错误会自动重试，对游戏不可见。

使用值 [XPackageKind::Game](/reference/system/xpackage/enums/xpackagekind) 调用该 API 时，根据 [XPackageEnumerationScope](/reference/system/xpackage/enums/xpackageenumerationscope) 值，其输出为：

| 范围             | 特许经营游戏中心                                    | 支持中心的游戏                      | 不支持中心的游戏                      |
| -------------- | ------------------------------------------- | ---------------------------- | ----------------------------- |
| ThisOnly       | 仅特许经营游戏中心                                   | 仅该支持中心的游戏                    | 仅该不支持中心的游戏                    |
| ThisAndRelated | 特许经营游戏中心、与其关联的所有支持中心的游戏以及所有 RelatedProducts | 该支持中心的游戏及其所有 RelatedProducts | 该不支持中心的游戏及其所有 RelatedProducts |
| ThisPublisher  | 与当前进程属于同一发布者的所有游戏产品                         | 与当前进程属于同一发布者的所有游戏产品          | 与当前进程属于同一发布者的所有游戏产品           |

使用值 [XPackageKind::Content](/reference/system/xpackage/enums/xpackagekind) 调用该 API 时，根据 [XPackageEnumerationScope](/reference/system/xpackage/enums/xpackageenumerationscope) 值，其输出为：

| 范围             | 特许经营游戏中心                                        | 支持中心的游戏                                   | 不支持中心的游戏                                  |
| -------------- | ----------------------------------------------- | ----------------------------------------- | ----------------------------------------- |
| ThisOnly       | 与该特许经营游戏中心相关的 DLC                               | 与该支持中心的游戏相关的 DLC                          | 与该不支持中心的游戏相关的 DLC                         |
| ThisAndRelated | 与该特许经营游戏中心、其支持中心的游戏及其所有 RelatedProducts 相关的 DLC | 与该支持中心的游戏及其所有 RelatedProducts 相关的 DLC     | 与该不支持中心的游戏及其所有 RelatedProducts 相关的 DLC    |
| ThisPublisher  | 与当前进程属于同一发布者的基础游戏相关的所有 DLC（来自同一发布者或其他发布者）       | 与当前进程属于同一发布者的基础游戏相关的所有 DLC（来自同一发布者或其他发布者） | 与当前进程属于同一发布者的基础游戏相关的所有 DLC（来自同一发布者或其他发布者） |

示例：

```cpp theme={null}
bool CALLBACK ListDlcCallback(
    void* /* context */,
    const XPackageDetails* details)
{
    printf("Found dlc: %s\n", details->displayName);
    return true; // continue enumerating
}

HRESULT ListDlc()
{
    HRESULT hr = XPackageEnumeratePackages(
        XPackageKind::Content,                      /* Looking for content packages (DLC) */
        XPackageEnumerationScope::ThisAndRelated,   /* For this game and related games*/
        nullptr, ListDlcCallback);
    return hr;
}
```

## 要求

**头文件：** XPackage.h

**库：** xgameruntime.lib

**支持的平台：** Windows、XBOX One 系列主机和 XBOX Series 主机

## 概念性文档

* [智能交付：语言说明符](/build/core-features/common/packaging/intelligentdelivery-language)
* [GDK 可下载内容 (DLC) 程序包](/build/core-features/common/packaging/packaging-downloadable-content-dlc)
* [时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)
* [检查更新](https://learn.microsoft.com/gaming/gdk/docs/store/commerce/fundamentals/xstore-checking-for-updates)
* [管理和许可可下载内容 (DLC)](https://learn.microsoft.com/gaming/gdk/docs/store/commerce/fundamentals/xstore-manage-and-license-optional-packages)

## 另请参阅

[XPackage](/reference/system/xpackage/xpackage_members)\
[特许经营游戏中心](https://learn.microsoft.com/gaming/gdk/docs/store/franchise-game-hubs)\
[如何为 PC 和 XBOX One 创建和使用可下载内容程序包 (DLC)](/build/core-features/common/packaging/packaging-downloadable-content-dlc)


## Related topics

- [XPackageDetails](/zh-CN/reference/system/xpackage/structs/xpackagedetails.md)
- [XPackageEnumerationCallback](/zh-CN/reference/system/xpackage/functions/xpackageenumerationcallback.md)
- [XPackageRegisterPackageInstalled](/zh-CN/reference/system/xpackage/functions/xpackageregisterpackageinstalled.md)
- [XPackageChunkAvailabilityCallback](/zh-CN/reference/system/xpackage/functions/xpackagechunkavailabilitycallback.md)
- [XPackageMountWithUiAsync](/zh-CN/reference/system/xpackage/functions/xpackagemountwithuiasync.md)
