loadPackagedLibrary 函数 (winbase.h)

将指定的打包模块及其依赖项加载到调用进程的地址空间中。

语法

HMODULE LoadPackagedLibrary(
  [in] LPCWSTR lpwLibFileName,
       DWORD   Reserved
);

参数

[in] lpwLibFileName

要加载的打包模块的文件名。 该模块可以是 (.dll文件) 的库模块,也可以是) (.exe文件的可执行模块。

如果此参数指定模块名称而不指定路径,并且省略文件扩展名,则函数会将默认库扩展.dll追加到模块名称。 若要防止函数将.dll追加到模块名称,请在模块名称字符串中包含尾随点字符 (.) 。

如果此参数指定路径,则函数将搜索该路径来查找模块。 路径不能是绝对路径,也不能是路径中包含“..”的相对路径。 指定路径时,请务必使用反斜杠 (\) ,而不是使用 /) (正斜杠。 有关路径的详细信息,请参阅 命名文件、路径和命名空间

如果指定的模块已在进程中加载,则函数将返回已加载模块的句柄。 模块必须最初是从进程的包依赖项关系图加载的。

如果加载指定的模块导致系统加载其他关联的模块,则该函数首先搜索已加载的模块,然后搜索进程的包依赖项关系图。 有关详细信息,请参阅“备注”。

Reserved

此参数为保留参数。 它必须为 0。

返回值

如果函数成功,则返回值是已加载模块的句柄。

如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。

注解

LoadPackagedLibrary 函数是 LoadLibraryEx 的简化版本。 打包的应用可以使用 LoadPackagedLibrary 来加载打包的模块。 未打包的应用程序无法使用 LoadPackagedLibrary;如果未打包的应用程序调用此函数,它将失败并 APPMODEL_ERROR_NO_PACKAGE

LoadPackagedLibrary 返回指定模块的句柄,并递增其引用计数。 如果模块已加载,则函数将返回已加载模块的句柄。 调用进程可以使用 LoadPackagedLibrary 返回的句柄来标识 对 GetProcAddress 函数的调用中的模块。 使用 FreeLibrary 函数释放加载的模块并递减其引用计数。

如果函数必须搜索指定的模块或其依赖项,则它仅搜索进程的包依赖项关系图。 这是应用程序的包以及应用程序包清单的 节中指定的<Dependencies>任何依赖项<PackageDependency>。 按它们在清单中的显示顺序搜索依赖项。 包依赖项关系图在应用程序包清单的 节中 <Dependencies> 指定。 按它们在清单中的显示顺序搜索依赖项。 搜索过程如下:

  1. 函数首先搜索已加载的模块。 如果指定的模块最初是从进程的包依赖项关系图加载的,则函数将返回已加载模块的句柄。 如果未从进程的包依赖项关系图加载指定的模块,则该函数将返回 NULL
  2. 如果尚未加载模块,该函数将搜索进程的包依赖项关系图。
  3. 如果函数找不到指定的模块或其依赖项之一,则函数将失败。
DllMain 调用 LoadPackagedLibrary 是不安全的。 有关详细信息,请参阅 DllMain 中的“备注”部分。

注意

在 Windows Phone,必须从 PhoneAppModelHost.dll调用 LoadPackagedLibrary。 不支持使用 Kernel32.dll

要求

   
最低受支持的客户端 Windows 8 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2012 [桌面应用 |UWP 应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

动态链接库搜索顺序