ReadProcessMemory()和WriteProcessMemory()在读/写机器字时是原子的(32位在32位模式下,64位在64位模式下)从/到正确对齐的内存位置?
PS。其中有一个标签“readprocessmemory”可用,但没有标记“写处理内存”。也许它应该由一个拥有足够权利的人创造?
发布于 2014-04-11 22:02:35
如果MSDN没有声明它们在对齐机器上提供原子性-字读写(但它没有),那么它们就不会;即使它们的底层实现是通过HW或软件机制提供的,您不能依赖这种机制,对于那些我在i-缓存中并且必须使用FlushInstructionCache刷新的代码来说尤其如此。
如果您想要原子读/写,则需要与VirtualProtect一起显式地使用原子读/写,如果您要在自己的地址空间之外(即:写入调试器地址空间),还需要使用一些额外的技巧。
https://stackoverflow.com/questions/23019432
复制相似问题