windows驱动开发学习笔记

来源:互联网 发布:优创数据 编辑:程序博客网 时间:2024/06/11 09:46

编写程序,是一件什么一样的事情?
是一件很奇妙的事情吗?
它可以带来什么?
它能带给人什么感受?
它能带给人创造和控制的欲望吗?
每当一个人在阅读或者写一段代码时,脑子里会怎么想的?
脑子会想象那段代码怎样完成预定逻辑。
对于写代码或者维护代码的人来说,体现能力的地方不在代码本身,而是对下层开发平台的理解和驾驭能力。
怎么样子算熟练掌握windows驱动开发?
windows驱动是个什么?
是什么代码?
一般的键盘鼠标显示器是怎么驱动的?
驱动的英文名字是driver。
驱动是项重要和关键的代码,在内核环境中运行,负责处理用户程序请求。
操作系统在内核中提供了许多接口,用户程序没法使用,
但driver可以用那些接口来实现自己功能,和硬件交互。
比如U盘,在用户程序,到read\write文件就结束了,但内核还有许多事情要做。驱动程序是NT内核的补充。
内核很重要也很脆弱,能实现功能,也会出现蓝屏。
所以不出蓝屏首先,然后功能。
驱动安装需对号入座,一个设备驱动对应一个设备id。
这个id是写在设备固件里的,操作系统根据这个id寻找匹配的驱动进行安装。
可以查看inf文件,看看它是否支持自己的设备,
可以通过设备管理器查看系统中设备id,两者匹配才行。
有两个不同的windows,一个是基于dos的win9x,
另一个是参考dec的vms开发出的NT系统。
怎么才能熟悉windows驱动开发呢?
要入门,得从基础来,把基本功弄好。
先熟悉wdm/wdf的基本框架,写一些简单的驱动,
练习基础,培养直觉和兴趣。
wdf是驱动开发框架,它封装了wdm,它实现在wdf1000.sys中。
基于wdf驱动开发,就是基于wdf框架,
根据框架定义好的要求来有序填充程序员自己的代码。
wdf代码和程序员的代码结合在一起就是一份完整的驱动代码。
弄明白里面的关系后,你可以更好的学习怎么进行windows驱动开发。
搞清楚硬件驱动系统之间的关系,
所有连接到主机的外设由驱动程序驱动。
系统会枚举并尝试安装所有连接到系统总线(ACPI/PCI)上的设备。
通过运行命令DevMgmt.msc启动设备管理器来查看设备树。
当一个驱动代码写好了,调试驱动代码也很重要,
调试为了验证驱动的正确正常运行,同时为解决一些问题而做的工作。
针对问题现象,联系代码逻辑来分析定位问题,思考用更好的逻辑解决问题。

怎么根据硬件进行驱动开发?
内核跟硬件怎么交互的?
内核可以读写设备寄存器、读写设备内存。
系统可以通过读写设备寄存器的方式获取设备信息、对设备配置,
通过读写设备内存进行IO通信。
对硬件操作是底层软件的活儿,
系统实现大部分底层操作,提供接口给上层内核模块调用。
内核驱动会用到系统提供的这些接口。
驱动会有多个或多层,层层封装,
用户自定义的驱动模块要尽量简洁清晰。

0 0
原创粉丝点击