> ## Documentation Index
> Fetch the complete documentation index at: https://docs.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](https://docs.xbox.com/zh-CN/reference/system/xpackage/enums/xpackagekind.md)

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

*scope*   \_In\_\
类型：[XPackageEnumerationScope](https://docs.xbox.com/zh-CN/reference/system/xpackage/enums/xpackageenumerationscope.md)

安装程序包的范围。

*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)。

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

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

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

使用值 [XPackageKind::Game](https://docs.xbox.com/zh-CN/reference/system/xpackage/enums/xpackagekind.md) 调用该 API 时，根据 [XPackageEnumerationScope](https://docs.xbox.com/zh-CN/reference/system/xpackage/enums/xpackageenumerationscope.md) 值，其输出为：

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

使用值 [XPackageKind::Content](https://docs.xbox.com/zh-CN/reference/system/xpackage/enums/xpackagekind.md) 调用该 API 时，根据 [XPackageEnumerationScope](https://docs.xbox.com/zh-CN/reference/system/xpackage/enums/xpackageenumerationscope.md) 值，其输出为：

| 范围 | 系列游戏中心 | 支持中心的游戏 | 不支持中心的游戏 |
| - | - | - | - |
| 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 主机

## 概念性文档

* [Intelligent Delivery：语言说明符](https://docs.xbox.com/zh-CN/build/core-features/common/packaging/intelligentdelivery-language.md)
* [GDK 可下载内容 (DLC) 程序包](https://docs.xbox.com/zh-CN/build/core-features/common/packaging/packaging-downloadable-content-dlc.md)
* [时间敏感线程](https://learn.microsoft.com/gaming/gdk/docs/gdk-dev/console-dev/overviews/threads/time-sensitive-threads)
* [检查更新](https://docs.xbox.com/zh-CN/publishing/xstore-commerce/xstore-checking-updates.md)
* [管理和许可可下载内容 (DLC)](https://docs.xbox.com/zh-CN/publishing/xstore-commerce/xstore-dlc.md)

## 另请参阅

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


## Related topics

- [XPackageGetPackageKind](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackagegetpackagekind.md)
- [XPackageDetails](https://docs.xbox.com/zh-CN/reference/system/xpackage/structs/xpackagedetails.md)
- [XPackageEnumerationCallback](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackageenumerationcallback.md)
- [XPackageRegisterPackageInstalled](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackageregisterpackageinstalled.md)
- [XPackageChunkAvailabilityCallback](https://docs.xbox.com/zh-CN/reference/system/xpackage/functions/xpackagechunkavailabilitycallback.md)
