gpt4 book ai didi

c++ - 什么是 "api-ms-win-*-*-lx-x-x.dll"伞形库?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:47 24 4
gpt4 key购买 nike

我经常遇到长文件名的 DLL,就这样。例如只有两个:"api-ms-win-appmodel-runtime-l1-1-1.dll""api-ms-win-appmodel-identity-l1-2- 0.dll"。显然微软称它们为“umbrella libraries”。

我最初的理解是它们只是具有新文件名的新 D​​LL,但后来我尝试搜索这些文件。好吧,我找不到它们作为磁盘上的物理文件...

所以我很好奇,它们是磁盘上不存在的某种虚拟 DLL 文件名吗?

WCHAR buff[MAX_PATH];
buff[0] = 0;
GetSystemDirectory(buff, MAX_PATH);
StringCchCat(buff, MAX_PATH, L"\\api-ms-win-appmodel-runtime-l1-1-1.dll");

HMODULE hModule = LoadLibrary(buff);
//'hModule' is NULL & error code is ERROR_MOD_NOT_FOUND

但以下工作:

HMODULE hModule = LoadLibrary(L"api-ms-win-appmodel-runtime-l1-1-1.dll");

最佳答案

这是“虚拟 DLL”名称。加载程序,当我们调用 LoadLibrary (LdrLoadDll) 检查众所周知的名称前缀(比如 api- ),如果名称以此开头 - 使用 ApiSetSchema mechanism用于将虚拟 dll 名称(即 api-ms-win.. )转换为真实的 dll 名称(文件名,如 kernel32.dllkernelbase.dll等)。此映射在 system32 文件夹中的 ApiSetSchema.dll 中实现。

enter image description here

关于内部实现——阅读 Runtime DLL name resolution: ApiSetSchema - Part II The API Set Schema

关于c++ - 什么是 "api-ms-win-*-*-lx-x-x.dll"伞形库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com