MddAddPackageDependency 函数 (msixdynamicdependency.h)

使用 MddTryCreatePackageDependency 方法添加前面创建的框架包依赖项的运行时引用和指定选项。 此方法成功返回后,应用可以激活类型并使用框架包中的内容。

语法

HRESULT MddAddPackageDependency(
  PCWSTR                         packageDependencyId,
  INT32                          rank,
  MddAddPackageDependencyOptions options,
  MDD_PACKAGEDEPENDENCY_CONTEXT  *packageDependencyContext,
  PWSTR                          *packageFullName
) noexcept;

参数

packageDependencyId

类型: PCWSTR

要解析并添加到调用进程的包图的包依赖项的 ID。 此参数必须与通过使用 TryCreatePackageDependency 函数通过 ScopeIsSystem 选项 (调用用户或系统) 定义的包依赖项匹配,否则将返回错误。

rank

类型: INT32

用于将解析的包添加到调用方包图的排名。 有关详细信息,请参阅备注。

options

类型: MddAddPackageDependencyOptions

添加包依赖项时要应用的选项。

packageDependencyContext

类型: PACKAGEDEPENDENCY_CONTEXT*

添加的包依赖项的句柄。 此句柄在传递到 RemovePackageDependency 之前有效。

packageFullName

类型: PCWSTR*

依赖项已解析到的包的全名。 使用 HeapAlloc 函数为此参数分配内存,并使用 HeapFree 解除分配内存。

返回值

类型: HRESULT

如果函数成功,则返回 ERROR_SUCCESS。 否则,函数将返回错误代码。 可能的错误代码包括以下内容。

返回代码 说明
E_INVALIDARG packageDependencyIdpackageDependencyContext 参数在输入时为 NULL。

注解

调用此方法会将框架包依赖项解析为系统上的特定包。 它还会通知 OS 框架包正在使用中,并以并行方式处理任何版本更新, (有效地延迟卸载或以其他方式维护旧版本,直到应用) 完成使用它。 包解析特定于用户,可以为系统上的不同用户返回不同的值。

每次成功的 MddAddPackageDependency 调用都会将解析的包添加到调用进程的包图中,即使已存在也是如此。 API (没有应用重复的检测或筛选,即来自包的多个引用) 无害。 解析完成后,包依赖项将一直为该用户解析,直到通过 MddRemovePackageDependency 删除该用户所有进程中的最后一个引用或进程终止为止。 成功调用此方法会更改 MddGetGenerationId 返回的生成 ID 值。

此方法成功返回后,应用可以激活类型并使用框架包中的内容,直到调用 MddRemovePackageDependency

如果包图中存在多个包,其排名与调用 MddAddPackageDependency 相同,则默认情况下 (已解析的包) 添加到同一级别的其他包之后。 若要在相同级别的其他包之前添加包,请为 options 参数指定 PrependIfRankCollision

有关详细信息,请参阅 在运行时使用动态依赖项 API 引用 MSIX 包

要求

要求
最低受支持的客户端 使用 Windows 应用 SDK 1.0 或更高版本的 Windows 10 版本 1809 ()
标头 msixdynamicdependency.h

另请参阅

MddRemovePackageDependency

MddTryCreatePackageDependency

使用动态依赖项 API 在运行时引用 MSIX 包