XPackageEnumerateChunkAvailability

检查安装包并枚举与指定选择器匹配的所有区块的可用性。

语法

HRESULT XPackageEnumerateChunkAvailability(  
         const char* packageIdentifier,  
         XPackageChunkSelectorType type,  
         void* context,  
         XPackageChunkAvailabilityCallback* callback  
)  

参数

packageIdentifier _In_z_
类型:char*

唯一标识磁盘上安装的包的字符串。 有关包标识符的详细信息,请参阅管理和许可可下载内容 (DLC)

type _In_
类型:XPackageChunkSelectorType

要枚举的属性的类型。

context _In_
类型:void*

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

callback _In_
类型:XPackageChunkAvailabilityCallback*

要在完成时调用的回调。

返回值

类型:HRESULT

HRESULT 成功或错误代码。

备注

注意

在时间敏感线程上调用此函数是不安全的。 有关详细信息,请参阅时间敏感线程

XPackageEnumerateChunkAvailability 用于检查包并枚举特定类型的所有选择器的可用性。 例如,使用 XPackageChunkSelectorType::Language 调用它将枚举包中的所有语言属性及其可用性。

在下面的示例中,游戏将显示它支持的所有语言,并允许用户安装或删除某种语言。 为执行此操作,游戏将查询包以确定哪些语言可用以及是否安装它们。

HRESULT GetPackageLanguages(_Out_ std::map<std::string, bool>& languages)
{
    char id[XPACKAGE_IDENTIFIER_MAX_LENGTH];

    HRESULT hr = XPackageGetCurrentProcessPackageIdentifier(_countof(id), id);
    if (FAILED(hr)) return hr;

    hr = XPackageEnumerateChunkAvailability(id,
        XPackageChunkSelectorType::Language, &languages,
        [](void* context, const XPackageChunkSelector* sel, XPackageChunkAvailability av)
    {
        auto languages = static_cast<std::map<std::string, bool>*>(context);
        switch (av)
        {
        case XPackageChunkAvailability::Ready:
        case XPackageChunkAvailability::Pending:
            languages->emplace(sel->language, true);
            break;

        case XPackageChunkAvailability::Installable:
            languages->emplace(sel->language, false);
            break;

        case XPackageChunkAvailability::Unavailable:
        default:
            break;
        }
        return true;
    });

    return hr;
}

要求

头文件:XPackage.h

库:xgameruntime.lib

支持平台:Windows、Xbox One 系列主机和 Xbox Series 主机

另请参阅

XPackage
流式安装和智能交付