最近因为公司的要求,需要看windows 下面的driver,下面就我在这几天看的几点体会:
开发windows 驱动首先需要两个开发工具:visual studio 、WDK
visual studio 是micro soft 提供的IDE 开发工具,WDK 主要包含一些我们开发所用的库文件
驱动的入口函数:DriverEntry
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
… … … …
return STATUS_SUCCESS;
}
一:操作系统是如何安装我们的驱动程序的呢??
1、我们用2012 的visuall新建一个WDF 的kenel 模式的driver 的时候,我们会自动生成一个.inf 文件,我们安装驱动的时候,就是通过这个文件来指导OS进行安装的,一般安装在了(windows\system32\drivers子目录下)目录下面
2、这个.inf 里面包括哪些内容呢??
设备类型、设备型号、厂商信息、程序版本号…。
对操作系统版本和CPU类型的要求…
源文件(.sys文件)的文件名和所在位置
安装目标子目录
在注册表中添加哪些内容
硬件配置信息
安全配置信息
包括以上等的一些信息
二:设备驱动的加载过程:
OS查找到该设备的硬件键之后,再通过硬件键的Service子键查到该设备的服务键(HKLM\SYSTEM \CurrentControlSet\Services的某个子目录)通过服务键的ImagePath子键的值就可以找到该设备所对应的驱动程序。OS扫描内存,看该驱动是否已被加载,如果没有,则立即加载该驱动,并调用该驱动的“DiverEnry”回调函数。加载完毕之后,OS调用该驱动的“AddDevice”回调函数通知驱动程序有新的设备到来。
关于键值的寻找我们直接进入windows 的cmd 窗口下,输入regedit 就是打来注册表就可以找到了,不知道的可以自己去尝试下
三:学习windows driver 的资料
1、学习windows driver 要多多光顾msdn 网站,上面提供了很多的最新的microsoft 动态:http://msdn.microsoft.com/en-us/library/ff557573%28vs.85%29.aspx
2、还有就是要多看microsoft 提供的wdlk document 的这个文档,这里面提供了很多的windows driver 的函数查询方法,通过这个手册可以找到windows driver 里面调用的函数的意思,这个很重要,下载的地址是:http://msdn.microsoft.com/zh-cn/library/gg487458.aspx,这个里面也提供了很多的windows上的driver开关的前人开发的文档,感觉还是挺不错的
3、要使用visual studio 进行经常的操作,多看,就慢慢熟悉了
我也只是看了几天,知道的也不多,希望对刚学windows driver 开发的人有一点给的帮助