canmeng50401的专栏

统计

留言簿

阅读排行榜

评论排行榜

第5章 Windows内存管理

P119 Windows的所有程序(包括Ring0和Ring3层的程序)可以操作的都是虚拟内存。
         4GB的虚拟内存会被分割成1M个(220个)页,每个页的大小为4KB(212个字节)。其中,有一部分单元会和物理内存对应起来;还有一部分单元会被映射成磁盘上的文件;还有一部分单元什么也没有对应,即空的。
P120 Windows操作系统在进程切换时,保持内核模式地址是完全相同的。也就是说,所有进程的内核地址映射完全一致,进程切换的时候,只改变用户模式地址的映射。
P121 驱动程序可以看成是一个特殊的DLL文件被应用程序加载到虚拟内存中,只不过加载地址是内核模式地址,而不是用户模式地址,它能访问的只是这个进程的虚拟内存,而不是其它进程的虚拟内存。需要指出的是,Windows驱动程序里的不同例程运行在不同的进程中
         使用如下代码可以看出当前代码运行在哪个进程的上下文中:

VOID DisplayItsProcessName()
{
    
//得到当前进程
    PEPROCESS peProcess = PsGetCurrentProcess();
    
//得到当前进程名称
    PTSTR ProcessName = (PTSTR)((ULONG)peProcess + 0x174);
    KdPrint((
"%s",ProcessName));
}

P122 Windows规定有些虚拟内存页面是可以交换到文件中的,这类内存被称为分页内存;而有些虚拟内存永远不会交换到文件中,这些内存被称为非分页内存。
P124 双向链表(这个数据结构在程序中常常用到,比较重要)
P140 LARGE_INTEGER数据结构的定义。这个结构也常常用到,很重要。


 

posted on 2011-06-20 23:26 纪灿萌 阅读(100) 评论(0)  编辑 收藏 引用 所属分类: windows驱动开发技术详解 笔记


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理