从内存中读取指针位置的值

时间:2011-08-12 19:43:17

标签: c# pointers

我需要从内存位置0到3个字节获取值,假设int使用4个字节的数据,如果long使用8个字节, 我想读取0到7个字节作为长数据并查看它返回的值。     任何人都可以帮我使用C#代码。

此致 VIX

1 个答案:

答案 0 :(得分:1)

这可能非常危险,如何获取地址以及您如何评估它是否有效?并非每个地址都有效,并且尝试从其中一些地址读取将导致例外。

但你可以使用Marshal.Read*方法来做到这一点。

int intValue = Marshal.ReadInt32(addr);
long longValue = Marshal.ReadInt64(addr);

您还需要捕获AccessViolationException。

您也尝试从虚拟地址或物理内存中读取数据。从C#开始,您只能阅读流程的virtual address space。您必须使用内核模式驱动程序才能直接访问计算机上的物理内存。