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>
指定。 按它们在清单中的显示顺序搜索依赖项。 搜索过程如下:
- 函数首先搜索已加载的模块。 如果指定的模块最初是从进程的包依赖项关系图加载的,则函数将返回已加载模块的句柄。 如果未从进程的包依赖项关系图加载指定的模块,则该函数将返回 NULL。
- 如果尚未加载模块,该函数将搜索进程的包依赖项关系图。
- 如果函数找不到指定的模块或其依赖项之一,则函数将失败。
注意
在 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 |