C++ 执行注入过程';对于通过注入的DLL/代码创建的锁,是否保持真实?

C++ 执行注入过程';对于通过注入的DLL/代码创建的锁,是否保持真实?,c++,multithreading,dll,locking,dll-injection,C++,Multithreading,Dll,Locking,Dll Injection,我已经创建了一个DLL,它注入到一个软件中,这个DLL的目的是在运行时加密一些其他人不应该访问的数据 无论如何,我们遇到了一个问题,加密/解密过程出错了,因为另一个线程(我假设)访问“这个过程是为了它自己的加密/解密(以错误的顺序)” 我无法访问软件的本机代码 我的问题是 如果我要创建一个std::mutex来在一个类中执行锁定操作,这个类是在注入的DLL中创建的,但从原始软件线程调用的。。。这些线程会遵守DLL的锁定方案吗?我想答案是肯定的,我只是想确定 如果我要创建一个std::mutex来

我已经创建了一个DLL,它注入到一个软件中,这个DLL的目的是在运行时加密一些其他人不应该访问的数据

无论如何,我们遇到了一个问题,加密/解密过程出错了,因为另一个线程(我假设)访问“这个过程是为了它自己的加密/解密(以错误的顺序)”

我无法访问软件的本机代码

我的问题是

如果我要创建一个std::mutex来在一个类中执行锁定操作,这个类是在注入的DLL中创建的,但从原始软件线程调用的。。。这些线程会遵守DLL的锁定方案吗?我想答案是肯定的,我只是想确定

如果我要创建一个std::mutex来在一个类中执行锁定操作,这个类是在注入的DLL中创建的,但从原始软件线程调用的


不,因为旧代码中的另一个线程不知道互斥,更不用说遵守它了。(互斥锁不会神奇地锁定资源,它们只是两个或多个代码段相互“发出信号”,表示他们的“组”中的某些代码段需要独占访问资源。如果任何代码段忽略了这一规则,互斥锁就不会阻止它)

是的,但所有被锁定的数据都来自DLL。我假设互斥的工作原理是。。。任何包装在互斥锁中的代码都不能与包装在同一互斥锁中的任何其他代码一起运行(我的DLL就是这样做的)。DLL有自己的类,该类具有互斥锁(以及其他数据)。原始线程创建了这个类的一个实例,只有一个。然后他们调用这个DLL,而DLL又调用这个类。通过这些方法,这个类中任何用互斥锁锁定的东西都是安全的吗?如果你“说服”旧线程使用你控制下的类,那么是的,如果你让你的类使用互斥锁,它应该是有效的。