我正在从内存中的进程中读取数据。按预期工作。现在我只是在计时器中运行代码来检查更改。
我想知道是否有任何方法可以创建一个事件,只要内存在某个地址发生变化(我明显知道)就会触发。我不是整个计时器解决方案的忠实粉丝。
private static extern bool ReadProcessMemory(IntPtr hProcess,
UIntPtr lpBaseaddress, [Out] byte[] lpBuffer,
UIntPtr nSize, IntPtr lpNumberOfBytesRead);
public static int ReadInt(long address)
{
byte[] buffer = new byte[sizeof(int)];
ReadProcessMemory(PHandle, (UIntPtr)address, buffer, (UIntPtr)4,
IntPtr.Zero);
return BitConverter.ToInt32(buffer, 0);
}
答案 0 :(得分:2)
理论上有 - 它被称为数据断点 - 但没有用于设置它们的公共API。 Here是如何直接完成的,但你最好不要考虑利用WinDbg或ADPlus或其他现有的调试器。与CPU的调试寄存器混淆是一种快速,轻松的BSOD方式。