首页 > Windows开发 > 详细

《Windows驱动开发技术详解》之HelloDDK

时间:2016-05-19 23:11:02      阅读:253      评论:0      收藏:0      [点我收藏+]

编写如下代码:

技术分享

运行会报错:

技术分享

这里的原因是有没有引用到的形参,需要添加如下代码即可:

技术分享

记得在系统启动时按F8禁用掉数字签名:

技术分享

将编译好的驱动拖入虚拟机,以管理员身份运行DbgView捕捉内核态输出数据,以管理员身份运行InstDrv以加载驱动,我们就可以看到启动和停止时,DriverEntry和DriverUnload中输出的数据了:

技术分享

 

下面,来对上面的实验进行简单的说明:

Windows驱动程序的入口函数并不是main函数,而是DriverEntry函数,这个函数由内核中的I/O管理器负责调用。参数pDriverObject是I/O管理器传递进来的驱动对象;参数pRegistryPath是驱动程序在注册表中的路径。

 

I/O管理器的作用:

I/O管理器在内存中创建一个IRP来代表一个I/O操作,传递一个指向IRP的指针到正确的驱动程序,当此I/O操作完成时再处理该请求包。相反地,驱动程序接收一个IRP,执行该IRP指定的操作,然后将IRP传回给I/O管理器,这是因为:所请求的I/O操作已经完成,或者必须将其传给另一个驱动程序以作进一步处理。

I/O管理器也提供一些对于不同驱动程序都通用的代码,例如,I/O管理器提供了这样一个功能:允许一个驱动程序调用其它驱动程序。它也为I/O请求管理缓冲区、为驱动程序提供超时支持、记录下哪些可安装的文件系统被加载到操作系统中。在I/O管理器中有将近100个不同的例程可供设备驱动程序调用。

 

《Windows驱动开发技术详解》之HelloDDK

原文:http://www.cnblogs.com/predator-wang/p/5510501.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!