阻止访问Windows上的物理地址

时间:2010-03-11 09:10:59

标签: c++ c windows memory

我正在通过PC上的设备专用物理内存访问我的内存映射设备。 这是使用一个驱动程序完成的,该驱动程序将特定的物理地址映射到我的进程地址空间的线性内存中的指针。

我想知道是否有任何方法可以获取阻止特定物理地址并阻止其他进程或设备访问此物理地址?

使用第三方驱动程序完成物理地址到线性地址的映射:TVicHW32

编辑:如果我使用不同的标志运行我的应用程序的2个实例,我可以重现该方案。这两个实例都可以访问同一个特定的物理内存,而这些内存不属于任何一个进程的内存空间。

1 个答案:

答案 0 :(得分:2)

Youd驱动程序必须通过公开检查范围是否已映射的服务(DeviceIoContro)来完成工作,如果它是空闲的,则映射它,并记录预留。服务还可以释放保存区域并取消映射。当然,您应该关闭与特定句柄相关的所有区域。遗憾的是,映射/取消映射服务存在轻微的不对称性,因为“映射”服务是通过DeviceIoControl完成的,因此它取得了在CreateFile时获得的句柄,但映射区域不再直接连接到设备句柄。当然,您可以安排驱动程序的“关闭”方法来自动取消映射(ZwUnmapViewOfSection ...)。