DllMain在exe文件?

是否有可能接收DllMain像关于线程附加/分离在独立的EXE通知没有使用任何额外的DLL

编辑:这只是一个理论问题,与我正在做的一些testing有关。 不是现实生活中的情况。

没有外部代码在线程上运行并加载可执行文件,因此没有线程挂接/分离通知[1]。 可执行程序中的代码通常控制线程[2]。

如果你描述你的情况,人们可能会给你一些想法如何实现它。


[1]大部分时间。 可以在另一个进程中加载​​可执行文件,但是人们通常不会这样做。
[2]线程模型和线程是由操作系统创建的,而不是可执行代码。 这些主要与COM / RPC有关。

有趣的问题。 我不知道什么内置到Win32中 – 我认为你可能不得不掀起一个DLL,它具有一个API,当它获得各种附加/分离消息时,发出事件或发布消息的信号。

另一种不需要单独的DLL,但需要一些黑客技巧的替代方法是使用调试API(特别是WaitForDebugEvent() )。 如果您的应用程序具有特殊的“测试”模式(可能由一个命令行选项指示)除了使用CreateProcess()DEBUG_ONLY_THIS_PROCESS标志重新执行exe DEBUG_ONLY_THIS_PROCESS ,父进程可以调用WaitForDebugEvent()线程开始和结束事件的通知以及一系列其他有趣的事件。 父进程可以将它们作为消息传递给子进程,或者通过信号传递事件(如果这就是你想要的),或者执行自己的日志记录,如果这就是你所需要的。

绝不是简单的事情,但它会工作,不会需要一个单独的DLL或图像,只是一个特殊的模式,当你想执行这些测试。

你的问题是在进程被加载和卸载时得到通知。 这更适用于DLL,因为它们正在被其他进程加载。

对于Exes,你有InitInstance和ExitInstance,你可以等价处理!