目录
题外话
虽然网上已经有很多驱动加载工具和相关代码,但自己实现一次有助于理解如何使用代码实现驱动加载。因此本篇文章只是一个学习总结。再说点题外话,不管之前耗费多久时间完成一个项目,事后最好写个总结,后期可以自己翻翻,重温一下~因为我之前完成任何一个项目,都是不懂就搜,但下次遇到相同问题时还是得上网搜(⊙o⊙)…所以想试试这种总结方法会不会让我下次遇到相同问题就不要搜百度,来搜自己博客就好啦~O(∩_∩)O哈哈~
罗里吧嗦了一堆,那开始进入正题吧!(〃'▽'〃)
一、了解驱动
如果对驱动已经有了初步的认识的同学可以跳过这部分~因为我当时是对“驱动”这个概念有点懵d(´ω`*)所以这里做个简单介绍,目的是加深自己对驱动的理解~
驱动程序是一个软件组件,可让操作系统和设备彼此通信。即驱动程序是设备驱动程序,是一种可以使计算机和设备通信的特殊程序。相当于硬件的接口,操作系统只有通过这个接口,才能控制硬件设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。如下图所示:
驱动文件一般由扩展名 CAT、 INF、 SYS、 DLL 等文件格式组成的。
二、驱动加载流程
编写代码加载驱动的原理相当于在注册表中写入相应的字段,因此设备驱动程序的动态加载主要由SCM(服务控制管理程序)系统组件完成。
2.1 加载和卸载NT驱动的4个步骤
Step1:安装——为NT驱动创建新的服务:LoadNTDriver(自定义的函数名)
Step2:运行——开启该服务:StartNTDriver(自定义的函数名)
Step3:停止——关闭此服务:StopNTDriver(自定义的函数名)
Step4:卸载——删除NT驱动所创建的服务:UnLoadNTDriver(自定义的函数名)