DismEnableFeature 函数

启用映像中的功能。 功能由名称标识,并且可以选择绑定到包。

语法

HRESULT WINAPI DismEnableFeature(
  _In_     DismSession            Session,
  _In_     PCWSTR                 FeatureName,
  _In_opt_ PCWSTR                 Identifier,
  _In_opt_ DismPackageIdentifier  PackageIdentifier,
  _In_     BOOL                   LimitAccess,
  _In_opt_ PCWSTR                 *SourcePaths,
  _In_opt_ UINT                   SourcePathCount,
  _In_     BOOL                   EnableAll,
  _In_opt_ HANDLE                 CancelEvent,
  _In_opt_ DISM_PROGRESS_CALLBACK Progress,
  _In_opt_ PVOID                  UserData
);

参数

Session [in]
一个有效的 DismSession。 DismSession 必须关联一个映像。 可以使用 DismOpenSession 将会话与映像关联。

FeatureName [in]
所启用的功能的名称。 若要启用多个功能,请用分号分隔每个功能名称。

Identifier [in,可选]
可选。 要启用的功能的 .cab 文件的绝对路径或父包的包名称。

PackageIdentifier [in,可选]
可选。 有效的 DismPackageIdentifier 枚举值。 当 Identifier 参数指向包名称时,应使用 DismPackageName;当 Identifier 指向 .cab 文件的绝对路径时,应使用 DismPackagePath。 如果 Identifier 字段不为 NULL,则必须指定有效的 PackageIdentifier 参数。 如果 Identifier 字段为 NULL,则忽略 PackageIdentifier 参数。

LimitAccess [in]
从 Windows 8.1 和 Windows Server 2012 R2 开始忽略此参数。

Windows 8 和 Windows Server 2012:

一个布尔值,指示是否应将 Windows 更新 (WU) 作为源位置来访问以下载文件,前提是未在其他指定位置找到任何相关内容。 在检查 WU 之前,DISM 将按组策略检查提供的 SourcePaths 和注册表中指定的任何位置中的文件。 如果启用该功能所需的文件仍存在于计算机上,则会忽略此标志。

说明
TRUE 请勿检查用于修复文件的 WU。
FALSE 默认。 针对修复文件检查 WU。

SourcePaths [in, optional]
从 Windows 8.1 和 Windows Server 2012 R2 开始忽略此参数。

Windows 8 和 Windows Server 2012:

源位置的列表,用于检查启用该功能所需的文件。

SourcePathCount [in, optional]
从 Windows 8.1 和 Windows Server 2012 R2 开始忽略此参数。

Windows 8 和 Windows Server 2012:

指定的源位置数。

EnableAll [in]
启用该功能的所有依赖项。 如果无法启用指定的功能或其依赖项中的任何一个,则它们都不会改变其现有状态。

说明
TRUE 启用该功能的所有依赖项。
FALSE 仅启用指定的功能。

CancelEvent [in,可选]
可选。 可以设置此函数的 CancelEvent,以便在客户端发出信号时取消正在进行的操作。 如果在无法取消操作的阶段收到 CancelEvent,则该操作将继续并返回成功代码。 如果在收到 CancelEvent 后取消操作,则映像状态为未知。 应在继续操作之前验证映像状态,或者放弃更改并重新开始。

Progress [in,可选]
可选。 指向客户端定义的 DismProgressCallback 的指针。

UserData [in,可选]
可选。 用户定义的自定义数据。

返回值

成功时返回 S_OK

注解

如果此功能存在于基础包中,则不需指定任何包信息。 如果此功能位于已安装在映像中的可选包或功能包中,请在 Identifier 参数中指定包名称,并指定 DismPackageName 作为 PackageIdentifier。如果由于父功能未启用而无法启用此功能,则会返回特殊错误代码。 可以使用 EnableAll 在启用指定功能时启用父功能,也可以使用 DismGetFeatureParent 来枚举父功能并首先启用它们。

重要

如果要启用的功能不是基础包的组件,则必须在启用此功能之前,使用 DismAddPackage 添加父可选包。 请勿在 Identifier 参数中指定尚未添加到映像的可选包的 .cab 文件的路径。 如果指定尚未添加的包,并将 DismPackagePath 指定为 PackageIdentifier,则函数会成功完成,但该功能不会获得启用。

注意

LimitAccess、SourcePaths、SourcePathCount 和 EnableAll 仅在 Windows 8 和 Windows Server 2012 上受支持。

示例

HRESULT hr = S_OK;
hr = DismEnableFeature(Session, “WindowsMediaPlayer”, NULL, PackageNone, TRUE, NULL, 0, FALSE, NULL, NULL, NULL);

要求

要求 说明
支持的主机平台 DISM API 可在 Windows 评估和部署工具包 (Windows ADK) 支持的任何操作系统上使用。 有关详细信息,请参阅 Windows ADK 技术参考
支持的映像平台 Windows 7、Windows Server 2008 R2、Windows PE 3.0、Windows 8、Windows Server 2012、Windows 预安装环境 (Windows PE) 4.0、Windows 8.1、Windows Server 2012 R2、Windows 10、Windows Server 2016
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
标头 DismAPI.h
Library DismAPI.lib
DLL DismAPI.dll

另请参阅

DismAddPackage

DismDisableFeature

DismGetFeatures

DismGetFeatureInfo