Windows 7驱动开发系列(三)--基本概念补全
写了三篇我才发现为什么驱动的东西少了,真的不好写,体系很清晰但也很杂,而且我都写了三篇了好像还没看到什么HELLO WORLD的影子.......呵呵,我会加快些节奏。当然有什么意见大家可以提,哈哈。
好还有哪些东西需要补充呢,首先编程语言的选择,我只用过汇编做过BOOTLOADER,真正到了驱动一级的一般还是用C写的。但是这不代表目前驱动只是C和汇编的天下,有以下几种驱动程序一般就是用C++来做的。比如
因为多媒体流的驱动一般来说是直接被DIRECTX支持的,那么用C++做就不奇怪了。还有从微软的文档上看WIA(Windows Image Acquisition)和一部分显示设备的驱动也是用C++实现的。这两个我没接触过具体的例子,但是感觉C++做驱动已经是一种潮流,比如代码比较好管理。抽象层和架构都搞的更清晰。
第二驱动程序更加强调输入验证,在使用参数之前必须验证合法性,并尽可能根据参数不合法的原因给出明确的返回。更加强调命名规范,_in,_out,这些后缀都很有必要。
第三要强调一点也是注册表的数据在使用之前也要验证,这可能与第一点重合了,但是由于注册表的数据往往不是通过参数传递的而是直接读出来的也以容易被漏掉,因为注册也可能被用户更改被病毒更刻,如果读出来不加验证合法性就使用的话很危险。
第四用这个Strsafe.h当中定义好的字符串函数。
第四 对于内核驱动的驱动尽量使用WDM模式来进行开发以支持更多的WINDOWS平台。WDM模式下的驱动在新的WIN版本发布后一般来说老的架构与API都会继续支持,兼容性问题较小,另外可以动态的检测其运行的WINDOWS 版本来做驱动做出调整。
第五 考虑多语言多国家支持尽量使用UNICODE。
第六 要考虑64位CPU及多核CPU的支持。(这个后面另列专题)