3

我有一个使用 CreateRemoteThread/LoadLibrary 方法注入自身的 DLL。

在调试和开发DLL时退出目标应用程序并重新启动它很麻烦(它的加载时间为10-20秒),所以我想在检查我的代码是否有效后卸载DLL,重新编译/重新注入它。

我想避免使用用于加载和卸载所述 DLL 的框架创建新的 DLL。

这怎么可能?

4

1 回答 1

3

DllMain产生一个线程的情况下,并且当该线程完成它正在做的任何事情时,您可以使用FreeLibraryAndExitThread

FreeLibraryAndExitThread 函数允许在 DLL 中执行的线程安全地释放它们正在执行的 DLL 并自行终止。如果他们分别调用 FreeLibrary 和 ExitThread,就会存在竞争条件。可以在调用 ExitThread 之前卸载库。

从那句话中,我用简单的英语声明你不应该在 DllMain 中调用这个函数

于 2012-08-07T14:10:45.303 回答