在用户态如何访问内核中的一块静态内存

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:58:37
我在驱动中分配了一块共享空间,现在已知这块空间的内核虚拟地址,物理地址。应用程序也可以得到这块空间的虚拟地址和物理地址,但是却不能直接使用内核虚拟地址进行访问,因为每个应用程序有它自己独立的空间,所以需要将这块空间映射到用户的虚拟地址上,向高手请教应该如何做?
操作系统环境:Windows XP/2003
我的问题:在应用程序如何才能得到访问这块空间的用户虚拟地址?
补充说明:我的驱动程序可以提供需要的Support.

在ring3下是很难访问物理地址的,当然了,有一些特殊小窍门,但在各个版本的OS上都不通用.
一般来说,在ring3下操作物理地址需要让你自己的sys提供一个调用接口.
还有一个不太可靠的,办法,在有些版本OS上可能跑不起来:
去打开\\device\\physicalmemory,直接映射后操作.记得要把虚地址转化成物理地址.