EPROCESS DirBase如何生成“VAD树根”?

时间:2016-09-11 17:17:11

标签: windbg windows-kernel

我转储了一些流程数据。 我得到DirBase值为00030000 Windows如何生成此值? 内核开头的任何AVL Tree数据结构都会给出这些数据吗? 我想学习如何在内核上创建进程。 什么样的全局变量分配DirBase,ObjectTable等值。

以下是一些示例windbg: !进程fb667a00 7 PROCESS fb667a00 Cid:0002 Peb:00000000 ParentCid:0000   DirBase:00030000 ObjectTable:e1000f88 TableSize:112。

When a process created by system.
System creates new pagedirectory for process and assigns a number to process page directory.
How can windows assigns that number ? is there an AVL Tree data structure that has free page tables and busy page tables trees.
And system allocates one page directory from that AVL Tree ?
There is no documentation how this mechanism works ?
I want to learn how page directory  gets its data ?

1 个答案:

答案 0 :(得分:0)

DirBase是页面目录的物理地址。 每个进程都有自己的页面目录,它放在struct KPROCESS :: DirectoryTableBase中。当OS激活进程时,KPROCESS :: DirectoryTableBase中的值将加载到CR3寄存器。

页面目录具有“英特尔开发人员手册”中描述的结构 http://wiki.osdev.org/Paging