使用Python读取和写入物理内存

使用Python读取和写入物理内存,python,python-2.7,dma,memory-access,Python,Python 2.7,Dma,Memory Access,有没有办法使用Python直接访问物理内存?我使用的是Windows7x64和Python 2.7。例如,我想读取地址0xfb000000中的双字。然后写入相同/另一个内存地址。我尝试过执行下面的一段代码,这段代码使Python崩溃 import ctypes N=2 addr='0xfb000000' g = (ctypes.c_int*N).from_address(int(addr,16)) print g[0] 崩溃可能是由于权限问题。那么,有没有办法通过这种方式获得访问内存的权限?或

有没有办法使用Python直接访问物理内存?我使用的是Windows7x64和Python 2.7。例如,我想读取地址0xfb000000中的双字。然后写入相同/另一个内存地址。我尝试过执行下面的一段代码,这段代码使Python崩溃

import ctypes
N=2
addr='0xfb000000'
g = (ctypes.c_int*N).from_address(int(addr,16))
print g[0]

崩溃可能是由于权限问题。那么,有没有办法通过这种方式获得访问内存的权限?或者,是否有其他方法来完成读/写操作?我需要检查PCI express配置空间中的一些寄存器

也许您应该查看mmap模块,以映射一个虚拟地址,供您在用户空间中访问?您不能在Vista和更新的操作系统中直接访问ring0。

当您以管理员身份启动python时,您的代码是否正常工作?如果它是一个单词,它不是
ctypes.c_char*N
?如果这很重要,我自己也没有尝试过。为什么addr“0xfb000000”可以从您的进程访问该地址?不,即使我以管理员身份启动,仍然会崩溃。我需要检查PCI express配置空间中的一些寄存器。0xfb000000只是一个例子。