|
|
1
10
最有效的方法是在应用程序的进程中根本不加载该DLL。相反,创建第二个进程,该进程的唯一任务是代表应用程序使用该dll。您可以使用共享内存区域、本地套接字或其他IPC机制来控制代理进程。 这样,当有问题的DLL崩溃时,您可以简单地让代理进程死掉,而不必担心(几乎不可能的)任务,即试图确保DLL在下降过程中不会损坏任何重要的东西。您的主进程只需要启动代理进程的一个新实例并继续进行。 |
|
|
2
4
我不是Windows专家,但我认为总的想法应该是可行的。 FreeLibrary负责将一个dll映射到进程内存空间。您看到的损坏可能是由于DLL中的一些代码做了一些“坏”的事情,并且几乎可以肯定地损坏了进程内存。现在,如果它崩溃了,它几乎肯定会杀死正在运行的线程——如果不是整个进程。 我相信,可靠地恢复和确保未损坏的内存的唯一方法是运行一个牺牲的过程,将其作为包绕恶意DLL。我认为远程处理接口是实现这一点的一种方法。可能还有其他的。 |
|
|
3
0
loadlibrary和freelibrary是一个开始,但是如果你想在dll中避免崩溃,那么你需要在seh(结构化异常处理)中把所有调用包装到dll中。这与C++异常和Test/catch块有很大的不同。有关详细信息,请参阅msdn。 |
|
|
4
0
如果动态链接库本身正在崩溃,而您的公司将为此付出代价,那么可能值得花时间重新创建它。最好是解决问题,而不是只是帮它解决问题。 |
|
AstralHex · 矩阵乘法代码工作不正常 8 月前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 8 月前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 8 月前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 8 月前 |