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 | packageDependencyId 或 packageDependencyContext 参数在输入时为 NULL。 |
注解
调用此方法会将框架包依赖项解析为系统上的特定包。 它还会通知 OS 框架包正在使用中,并以并行方式处理任何版本更新, (有效地延迟卸载或以其他方式维护旧版本,直到应用) 完成使用它。 包解析特定于用户,可以为系统上的不同用户返回不同的值。
每次成功的 MddAddPackageDependency 调用都会将解析的包添加到调用进程的包图中,即使已存在也是如此。 API (没有应用重复的检测或筛选,即来自包的多个引用) 无害。 解析完成后,包依赖项将一直为该用户解析,直到通过 MddRemovePackageDependency 删除该用户所有进程中的最后一个引用或进程终止为止。 成功调用此方法会更改 MddGetGenerationId 返回的生成 ID 值。
此方法成功返回后,应用可以激活类型并使用框架包中的内容,直到调用 MddRemovePackageDependency 。
如果包图中存在多个包,其排名与调用 MddAddPackageDependency 相同,则默认情况下 (已解析的包) 添加到同一级别的其他包之后。 若要在相同级别的其他包之前添加包,请为 options 参数指定 PrependIfRankCollision。
有关详细信息,请参阅 在运行时使用动态依赖项 API 引用 MSIX 包。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 使用 Windows 应用 SDK 1.0 或更高版本的 Windows 10 版本 1809 () |
标头 | msixdynamicdependency.h |