摘要: 一、内存管理概念1. 物理内存概念(Physical Memory Address) PC上有三条总线,分别是数据总线、地址总线和控制总线。32位CPU的寻址能力为4GB(2的32次方)个字节。用户最多可以使用4GB的真实物理内存。PC中很多设备都提供了自己的设备内存。这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实读写的是设备内存地址,而不是物理内存地址。2. 虚拟内存概念 虽然可以寻址4GB的内存,但是PC中往往没有如此多的真实物理内存。操作系统和硬件(主要是CPU中的内存管理单元MMU)为使用者提供了虚拟内存的概念。Windows的所有程序可以操作的都是虚拟内存。对虚.. 阅读全文
posted @ 2013-09-11 12:08 huhu0013 阅读(2109) 评论(0) 推荐(0) 编辑
摘要: 一、NT式驱动的基本例程1. 驱动入口函数——DriverEntry[cpp]view plaincopy//驱动程序的一般性定义NTSTATUSDriverEntry(INPDRIVER_OBJECTpDriverObject,INPUNICODE_STRINGpRegistryPath);//DriverEntry的主要工作是对驱动程序进行初始化。它由系统进程System调用的。驱动被加载的时候会创建一个驱动对象,查询此驱动程序对应的注册表项。DriverEntry被调用的时候会传进两个参数。他们分别是刚才创建的驱动对象的指针和指向设备服务键的键名字符串指针。这个字符串的内容一般是\RES 阅读全文
posted @ 2013-09-11 12:07 huhu0013 阅读(3162) 评论(0) 推荐(1) 编辑
摘要: 本节主要介绍驱动开发的一些基础知识。 1. 驱动程序的基本组成 1.1.最经常见到的数据结构 a.DRIVER_OBJECT驱动对象[cpp]view plaincopy//WDK中对驱动对象的定义//每个驱动程序都会有一个唯一的驱动对象与之对应//它是在驱动加载时被内核对象管理程序创建的typedefstruct_DRIVER_OBJECT{CSHORTType;CSHORTSize;////Thefollowinglinksallofthedevicescreatedbyasingledriver//togetheronalist,andtheFlagswordprovi... 阅读全文
posted @ 2013-09-11 12:01 huhu0013 阅读(1063) 评论(0) 推荐(0) 编辑
摘要: 笔者学习驱动编程是从两本书入门的。它们分别是《寒江独钓——内核安全编程》和《Windows驱动开发技术详解》。两本书分别从不同的角度介绍了驱动程序的制作方法。 在我理解,驱动程序可分为两类三种: 第一类:传统型驱动 传统型驱动的特点就是所有的IRP都需要自己去处理,自己实现针对不同IRP的派发函数。其可以分为以下两种: 1. Nt式驱动:此驱动通过注册系统服务来加载,并且不支持即插即用功能(即没有处理IRP_MJ_PNP这个IRP)。 2. WDM驱动:此驱动不通过注册系统服务来加载,需啊哟自己编写inf文件。同时,它与NT式驱动相比最大的特点就是支持即插即用功能。 第二类:微... 阅读全文
posted @ 2013-09-11 11:55 huhu0013 阅读(559) 评论(0) 推荐(0) 编辑