现在的位置: 首页 > 综合 > 正文

windows内核学习02

2013年08月21日 ⁄ 综合 ⁄ 共 722字 ⁄ 字号 评论关闭

今天是周六,几个月周六就没休息过,连做了2个项目,第一个项目3个人,第二个项目就我一个人,是在是无聊啊。充其量大学生毕设难度的web程序,搞得那么复杂。OK不说了,既然这样就更要好好学习内核编程方面的知识,过2月换个地搞一搞。

这周看了一下一些WDM驱动的基础例程,I/O管理器是如何管理例程等等。在学习的过程中,给我一种感觉,就是编写windows这些驱动和ring3层下,用win32编写的上层应用程序有很多类似点。就比如他们最重要的,实际干事的那部分,驱动层叫做派遣,分发或者是dispatch函数,应用层也是用switch...case...来实现处理不同操作。他们同样是回调函数这种方式调用,而且看高手的博客,从只言片语中也能发现,都是微软一套路的东西,应该相似程度是很大的。所以在今后学习中,要联系起来,互相比较着学习,效率可能会高一点吧。

下面具体总结一下,然后来个小例子跑一跑,深刻理解一下。

DriverEntry例程

1.找到DriverEntry例程所控制的硬件

2.初始化。通过入口参数(指针)

3.IoCreateController穿件一个控制对象

4.IoCreateDevice为它控制的物理或者逻辑设备穿件一个设备对象,并且初始化Extension设备

5.使用IoCreateSymbolicLink函数,为win32应用层“暴露”一个关联名字。

6.联系“设备”和终端对象

7.重复4-6步

8.DriverEntry返回Success_Status

如果是WDM的驱动程序,则1,3-6步放在AddDevice中去。即插即用。

分享一个blog:http://www.zeroplace.cn/article.asp?id=394

抱歉!评论已关闭.