ReadProcessMemory和WriteProcessMemory原子性

时间:2014-04-11 17:54:26

标签: winapi

从正确对齐的内存位置读取/写入机器字(32位模式下32位,64位模式下64位)时,ReadProcessMemory()WriteProcessMemory()是否为原子?< / p>

PS。有一个标签&#39; readprocessmemory&#39;在SO中可用,但没有标记&#39; writeprocessmemory&#39;。也许它应该由拥有足够权利的人创建?

1 个答案:

答案 0 :(得分:2)

如果MSDN没有说明它们在对齐的机器字读取上提供原子性&amp;写道(它没有),然后他们不会;即使他们的底层实现确实如此,无论是通过硬件还是软件机制,您都不能依赖于此,对于我在I-cache中并且必须使用FlushInstructionCache刷新的代码尤其如此。

如果你想要一个原子读/写,你需要显式地使用一个,与VirtualProtect一起使用,如果你在自己的地址空间之外写一些额外的技巧(即:进入调试对象的地址空间)