找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 2548|回复: 0

实现MmIsAddressValid

[复制链接]

280

主题

203

回帖

0

精华

版主

积分
1808
发表于 2011-1-16 00:21:58 | 显示全部楼层 |阅读模式
BOOLEAN MmIsAddressValid ( PVOID VirtualAddress )
{
     BYTE PresentSign = 0x1;
   BYTE PageSizeSign = 0x80;
   BYTE PresentAndPageSizeSign = 0x81;
   PVOID lVirtualAddress;
   ULONG PDE,PDEContext;
   ULONG PTE,PTEContext;
   lVirtualAddress = VirtualAddress;
   PDE = (((ULONG)lVirtualAddress>>21)<<3) & 0x3FF8 + 0xC0600000;
   PDEContext = (ULONG)*(PVOID)PDE;
   if(!(PDEContext & PresentSign))
     return FALSE;

   if(PDEContext & PageSizeSign)
     return TRUE;

     PTE = (((ULONG)lVirtualAddress>>12)<<3) & 0x7FFFF8 + 0xC0000000;
   PTEContext = (ULONG)*(PVOID)PTE;
   if(!(PTEContext & PresentSign ))
     return FALSE;

   if(!(PTEContext & PageSizeSign))
     return TRUE;
   else
   {
          PDE = (ULONG)PTE & 0x3ff8   + 0xc0600000;
      PDEContext = (ULONG)*(PVOID)PDE;
      if(PDEContext & PresentAndPageSizeSign)
        return TRUE;

   }

     return FALSE;
}
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表