从正确对齐的内存位置读取/写入机器字(32位模式下32位,64位模式下64位)时,ReadProcessMemory()
和WriteProcessMemory()
是否为原子?< / p>
PS。有一个标签&#39; readprocessmemory&#39;在SO中可用,但没有标记&#39; writeprocessmemory&#39;。也许它应该由拥有足够权利的人创建?
答案 0 :(得分:2)
如果MSDN没有说明它们在对齐的机器字读取上提供原子性&amp;写道(它没有),然后他们不会;即使他们的底层实现确实如此,无论是通过硬件还是软件机制,您都不能依赖于此,对于我在I-cache中并且必须使用FlushInstructionCache
刷新的代码尤其如此。
如果你想要一个原子读/写,你需要显式地使用一个,与VirtualProtect
一起使用,如果你在自己的地址空间之外写一些额外的技巧(即:进入调试对象的地址空间)