我刚刚偶然发现,执行此 GetModuleHandle("ntdll.dll")
无需先前调用 LoadLibrary("ntdll.dll")
即可工作。
这意味着 ntdll.dll
已经加载到我的进程中。
假设 ntdll.dll
将始终加载到 Win32 应用程序上,因此不需要调用 LoadLibrary
是否安全?
最佳答案
来自 MSDN on LoadLibrary()(强调我的):
换句话说,继续调用 LoadLibrary() 并确保您获得 ntdll.dll
的句柄是安全的——但是系统几乎肯定会增加引用计数,因为它应该已经加载了。
至于“它真的总是加载吗?”,请参阅 Windows Internals on the Image Loader(简短的回答是肯定的,ntdll.dll
是加载器本身的一部分,并且始终存在)。
相关段落是:
关于windows - Win32 应用程序是否自动链接到 ntdll.dll?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43617617/