它可用于在Windows中运行任意动态链接库,
怎么可能知道任意dll的入口点?
答案 0 :(得分:1)
答案取决于您需要多少细节。基本上,它归结为:
DLL可以选择指定入口点函数。如果存在,只要进程或线程加载或卸载DLL,系统就会调用入口点函数。
[...] 如果您提供自己的入口点,请参阅DllMain功能。名称DllMain是用户定义函数的占位符。您必须指定构建DLL时使用的实际名称。
(摘自MSDN文章Dynamic-Link Library Entry-Point Function。)
基本上,可以在DLL中指定入口点,操作系统的DLL加载器知道如何查找它。
答案 1 :(得分:0)
IMAGE_OPTIONAL_HEADER
(Windows机器上可移植可执行文件标题的一部分)包含AddressOfEntryPoint
的RVA,该RVA由寻找要调用的入口点的程序(例如,加载程序)调用。
答案 2 :(得分:0)
“运行DLL”是什么意思? DLL不是普通程序,它们只是函数的集合。入口点本身通常除了初始化DLL中其他函数所需的内容之外没有太大作用。加载DLL时会自动调用入口点(您可以使用LoadLibrary
执行此操作)。
如果要在加载DLL后调用特定函数,可以使用GetProcAddress
获取指向所需函数的指针。