从一个线性地址得到pde怎么可以这么做?是不是错了?
从一个线性地址得到pde怎么可以这么做?是不是错了?
EXPORT DWORD*
GetPde(void*Address)
/*++
Routine Description:
Returns pointer to PDE for the given page
See MiGetPdeAddress in HAL.DLL
Arguments:
None
Return Value:
None
--*/
{
// See also Gloomy's mem.txt
//这里是不是错的 ?
return (DWORD*)(MmSystemPteBase+ ( ((DWORD)Address>>20) & 0xFFC) + ((DWORD)MmSystemPteBase>>10));
}
我能理解的方式:
PDE_Address=(VirtualAddress>>22)*4+0xC0300000