这三个功能有什么区别以及何时使用它们?
Ahmed Said
问问题
15704 次
3 回答
10
WinMain 用于应用程序(以 .exe 结尾)来指示进程正在启动。它将为进程提供命令行参数,并作为进程的用户代码入口点。WinMain(或不同版本的 main)也是必需的功能。操作系统需要调用一个函数才能启动一个进程运行。
DllMain 用于 DLL 以表示许多不同的场景。最值得注意的是,它会在什么时候被调用
- DLL被加载到进程中:DLL_PROCESS_ATTACH
- DLL 从进程中卸载:DLL_PROCESS_DETACH
- 进程中启动了一个线程:DLL_THREAD_ATTACH
- 一个线程在进程中结束:DLL_THREAD_DETACH
DllMain 是一个可选构造,并且有很多与之相关的隐式契约。例如,您不应该调用会强制加载另一个 DLL 的代码。一般来说,要正确使用它是相当困难的功能,除非您有非常特殊的需要,否则应该避免使用它。
于 2009-01-06T14:36:40.780 回答
0
[您问题的补充]
也不要忘记 DllEntryPoint:
当涉及加载时间时,入口点是 DllMain。
(例如 COM 进程内服务器 DLL)。当涉及运行时间时,入口点是 DllEntryPoint。
(例如 LoadLibrary 被调用)。
于 2018-07-05T08:17:44.760 回答