Programming 版 (精华区)
发信人: lofe (〖感激生活〗), 信区: Programming
标 题: DDK使用心得
发信站: 哈工大紫丁香 (2004年03月18日21:52:02 星期四), 站内信件
ddk中有不少sample,从总线、磁盘到串口各类的基本都有。我是从sfilter改的,
结构上没什么,算法上倒是把我折腾得够呛,hehe. 当时倒是确实有一点心得的,
但摆渡可就万不敢当了。
1. 在wchar上吃了不少苦头,说来可气又可笑。nt驱动用的都是UNICODE_STRING,
字符串无非就是一个字节之别吗!每次都因为没当回事,每次都翻跟头,尽情享
受蓝屏吧,n次重起却不得其要后,终于焕然大悟。。。我不知道别人有没有在这
里翻过船,char*根深蒂固啊。
2. 相对于unix的设备驱动,windows的驱动可真不是一般的复杂,为何这么大的差
别?大堆大堆的api,庞多的参数,pdo,fdo的创建,irp的流向,绝对是在折磨人。
wdm已经是足够不错的,2k的设计也总算比9x强出一些。比如这个ifs,2k下是完整
的一层驱动,拦截文件一种请求只有一个路口;9x下,ifs vxd只是一个hook,为了
做同样的事,有时居然要在几个不同的地方同时下手。。
3. 不过相对于应用编程,尤其是涉及到UI的,windows的驱动编程在某种意义上说,
还是要简单的多,框架是固定的,往里填就行了。当然,前提是必须熟悉其机制。
这里有一个误区,总以为驱动是为硬件写的,或者驱动是高难度的,于是干脆不去
碰它。当年的cih,其实就是一个ifs hook,但是对于满天飞的源代码,我就可惜当
时怎么就看不进去呢?陈大虾确实令人佩服,在那个时候就钻了vxd的空子。驱动可
以为所欲为。如果对windows的机理有些兴趣,或者说要编个特殊的某个东西,驱动
还是值得玩一玩的。2k不能直接访问硬件,我添加一个call gate总可以吧?dos下中
断能挂接,2k下的系统服务能挂接吗?subst是怎么把目录虚拟成逻辑盘的(filedisk)?
daemon怎么虚拟的光驱,还以假乱真?那么能不能做个虚拟的物理硬盘(scsi miniport)?
而且还挂在虚拟的总线上?能不能虚拟成串口,实际上是通过网络连接?能不能虚拟出
scsi磁盘或raid,通过网络(iSCSI)?这些应该是本科的弟兄们该玩的,如果还没有
转向freebsd/linux的话。
4. 总之,如果对windows兴趣依然的话,驱动应该是一块很不错的试验田。
【 在 iamxiaohan (潇寒·不把代码搞死,就让代码把我搞死) 的大作中提到: 】
: 喔?介绍介绍,有无心得可以拜读?~~~
: 【 在 lofe (〖感激生活〗) 的大作中提到: 】
: : 2k下有相应的API,不就是个disable某个设备吗,devmgmt.msc能做到的
: : 前不久见到有人介绍过,现在一时想不起来。
: : 前不久刚编了个这么个东西,呵呵
--
If you obey to rules, you will miss all the fun.
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 61.167.217.220]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:4.770毫秒