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毫秒