首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 驱动开发 >

windows kernel环境下提供操作PTE的routine吗?解决方法

2012-03-04 
windows kernel环境下提供操作PTE的routine吗?app环境下有virtualProtect()之类的API来改变PTE的属性,那在

windows kernel环境下提供操作PTE的routine吗?
app环境下有virtualProtect()之类的API来改变PTE的属性,那在kernel环境下类似的操作该如何实现。
或者更简单一点,有提供通过virtual address查找对应PTE的函数吗?

谢谢!

[解决办法]
http://www.pediy.com/bbshtml/bbs8/pediy8-730.htm

建议LZ看一下,希望能够帮到你!
[解决办法]
windows下的pte是连续存放的,因此不需要逐级查找.
以64bit的PTE为例,
#define MiGetPteAddress(va) ((PMMPTE)(((((ULONG_PTR)(va) & VIRTUAL_ADDRESS_MASK) >> PTI_SHIFT) << PTE_SHIFT) + PTE_BASE))

其中PTE_BASE是定值,代表所有PTE的起始地址.
[解决办法]
再解释一下,对4k的page来说PTI_SHIFT=12
PTE_SHIFT=3因为64bit页表项为8个字节.
以上为读出,写入同理.

热点排行