(2) 学习 DDK 的过程
要学 DDK 首先要把 Window 的底层基础练的扎实. 但一般人对学 Window SDK 都视为畏途, 更何况是底层的东西. 从 Win31 到 Win95 变化比较多得, 我个人认为是: Multitasking, Plug&Play, Memory Addressing. 有人问我说, Memphis 都快出来, 还要花功夫看 Win95 or Win31 吗? 我认为还是要! 原因是:
a. Memphis 不是完全重新改写, 理面的一些观念还是沿用 Win95.
B. 目前市面上尚未有大师级的 Memphis 相关书籍, 如果有也只是趁火打劫类型的书, 而台湾的书商, 作者最会搞这种把戏来 A 钱. 如 Win31/95 方面已有一些大师的书籍, 如 Andrew Scrullman, Patt Metrick, Richard Jeffery, Walter O'ney, Charle Patzold 等大师. 你不去看大师级的书, 反而去看 "快快乐乐学 Memphis", "教你 21 天学会 Memphis" 这类垃圾书, 真是在浪费你的时间及金钱.
学 DDK 的第一步准备功夫是把英文阅读能力练好, 你别指望书商会出中译本. 因这类书的卖相太差, 比不上 VB, Delphi, JAVA这类较大众化的书. 再者要找到够格的译者很难. 要译好是要花相当时间, 那还到不如去写些轻松的书, 稿费也赚得多.
接下来就要练基础工夫, 如同张无忌花了 6 年时间练好九阳真经, 等到练乾昆大挪移时只花数个时辰就 OK. 要如何练底层基础呢 ? 勤看书, 勤 coding 及 Trace 别人写得 sample code而已. 即使是 天才型的 Programmer 也是要看书, 因 Window 不是他设计的, 必须了解 Window 才有办法下手. 而非像写 Algorithm 方面的论文般, 自己定 assumption, Lemma, 导出 Theme, 下 conclusion 就完成.所以一些刚入社会的研究生最好先调整自己的心态.
以往我是读一些大师级的书, 如:
"Window Programing" 的 Charle Petzold
"Undocument Window" 系列的 Andrew Scullman,
"Win95 system Programming Secrets" 的 Matt Pietrek,
"Advanced Windows" 的 Jeffery Richter
期刊的话是:
Microsoft System Journal,
Doctor Dobb's Journal,
Window Developer Journal. 这本期刊是我认为学 DDK 的人必要订阅的! 几乎过个 1, 2 期就会刊登 Window Device Driver 相关的文章, 而且里面有位 Paula 女士主持的 NT 专栏, 写的很深入, 不是市面一些标榜 NT "大剖析"之类的书籍所能比拟. 在 Andrew Scrullman 的 "Undocument NT" 尚未问世之前,它是我觉得最有深度的专栏.
接下来就谈与 Driver 有直接关系的资料:
Device Driver 的书籍, 我从 Win31 开始说起:
"Writing Windows Device Driver and VxD", Karen Hazzen, 第 1,2 版 是最适合写 Win31 Driver 的叁考书籍. 也有一本白皮的 "Writing Window Device Driver", 我认为它的叁考性很低, 因它光抄 Win31 DDK Function Description 就花了 50 ~ 60 几页, 有 A 钱之嫌.
Win95:
那当然是首推 "System Programing for Win95", Walter Oney 这本巨作. 我曾因翻Chapter 11 ~ 13 翻到书页掉落, 而重新再买一本. Walter Oney 既出, 谁与争锋.有这本就够了! 也没有人有胆来挑战他.
WinNT:
唯一的一本: "The NT Device Driver Book", Art Baker. 很有系统的一步一步介绍如何写 NT Kernal mode driver. 先看这本书然後再看 MS 的 NT DDK on Help 会让你较容易了解. 当初没这本书时, 我刚开始看 DDK Help 是看得满头雾水. 最好搭配 "Inside Windows NT", Helen Custer 一起看, 因为 NT 底层已经导入 Object Oriented 观念(WDM 是将 NT Kernel mode driver 加装 Plug&Play 及 Bus handle 等新功能), 与 Win95 的 Virtual Machine 观念 相差甚远. 这本书虽是 1992 年出版, 但有对 NT 的核心运作加以介绍, 也是一本难得的好书.
NewGroup and Web Site:
1. Win95 是 comp.os.ms-windows.programmer.vxd
2. NT 的话是 comp.os.ms-windows.programmer.nt.kernel-mode
3. Window Device Driver Web Site:
http://www.albany.net/~danorton/ddk
http://www.vireo.com
发展工具:
1. 如何要让你日子好过, 一定要有套 SoftIce for Win95/NT. 千万不要用 MS 的 WinDebug, 它根本是无山晓路用. SoftIce 可让你用 source code
level debuging, 对有 assembly 恐惧症的人是一大福音.(但我还是劝有心学 DDK 的人还是要摸 assembly).
2. VToolsD(for Win31/95), DriverWork (for NT/WDM)
Vireo 公司出的 DDK Tool 让你完全用 C 来写 Driver, 我只能说写 Driver 时, 我已经不能没有它. 由其它还免费附 Class Library source code, 让我 Trace 的很高兴.
领域知识 (Domain Knowledge)
写 Driver 需了解你要控制的硬体, 如 Driver 有用到 DMA/Interrupt, 建议你看一下 8259, 8237A 的资料. 在这方面, "微电脑界面技术与实作"
是本不错的叁考书. Programmer 总有一天会 coding 不动的时候. 但人老成精, 只要你的 Domain Knowledge 够强的话, 还是会有许多公司请你去当技术经理. 而这也是你能克死年轻力壮 Programmer 最大的本钱. 多多看些其他杂志, 接触一些非 Programming 方面的知识来培养你的 Domain Knowledge 吧!
最後最重要的是: 亲自动手做做做做做做做做做!
看资料是一回事, 知道是一回事, 做的出来又是另外一回事. 公司请你来不是要听你长篇大论, 或是发表多少篇论文. 是要你做个会动, 能商品化的东西.等你做下去, 踢到铁板, 又找不到别人问, 也没有任何资料可帮助. 再加上硬体没你写的 Driver 而无法出货时, 那种滋味可是人间炼狱. 我就遇上一次,东西都出到俄罗斯, 德国的经销商时, 结果发现 Driver 有 Bug, 无法顺利安装. 老大放话说一星期内没解决, 俄罗斯经销商就要取消订单(天呀! 几百万美金的交易), 我在想,如果到时解不掉就准备辞职. 後来真是狗屎运, 用一个非常另类的做法(骑摩托车在半路上想到的), 解决这个 Bug, 保住订单也保住职务.说这则例子主要是奉劝一些自视甚高的在学研究生, 不要以为顶着高学历,就可以在社会上一帆风顺(除非窝到学校或财团法人, 政府机构内), 也鼓励一些没有傲人学历的网友, 只要有实力发挥黑手精神, 照样可以当主管来管一群硕士工程师.
(3)未来可能的发展
看看 WinTel PC98 的规格, 就知道以後会写 Driver 的人比较吃香 但目前会用 C, SDK 写程式的人不多, 更何况是写 Driver, 其实 Driver 并不难写, 只是 Learning curve 很长, 现在大多初学者怕难没耐心, 都用 VB, Delphi 这类 RAID Tool 来写程式, 都快不知道 SDK 是何物.更不用说 Window 内部的运作. 除非是走 MIS 路线, 否则以後日子会很难过.就现实面来看: 用 VB, Delphi 的人太多, 老板要找个人来取代你的职务是很容易得.就盈馀而论, 国内做 MIS 的公司比不上做 PC 硬体, Chip set 的公司, 而且也没有股票可分,何苦去挤到经济规模小又人数众多的领域内. (但 Year 2000 对 MIS 工程师可是个大利多,只不过你还要会一些非常古老的程式语言, 而不是懂 VB, Delphi 就没事)
就我观察的结果: 目前主机板的软体工程师大都只会 BIOS, 8051. 根本都不懂 Windows Driver. 不要以为写个 softmenu 的 BIOS 就扬扬得意. 等 PC98 正式上场就有好戏看.所以在这些公司中有有太多机会来让你表现自己的能力.
感想:
国内一些电脑作家实在是太好混日子, 可以从 VB 写到 VC, 然後还可以"深入探讨" 3D 加速卡. 流行 VB 就出 VB 的书, 一本号称 VC++/Borland C++ 圣经的书, 竟然都没提到 MFC/OWL. 而 Windows95 一出来, 书摊又是一堆 Win95 圣经宝典之类的中文书. 等着看吧, 明年 Memphis 出来时又将旧事重演. 不只如此, 还故意标榜有博士学历或具有写作 10 几年的经验来烘抬自己的身价. 有时我看了就一肚子火. 不过这些人还不是照样继续 A 钱. 真是……, 而国内一些电脑杂志的水准, 大家心理有数, 不用我多讲. 值得我佩服的, 大概只有侯俊杰, 不过最近一年他好像都只写 MFC 相关的文章书籍, 没写些 Windows 内部运作的文章, 不知这是否跟上次 Matt Pietrek 来台有关.
总归一句话: 读者要自己小心, 少碰一些 "圣经, 宝典".
最後, 祝大家能找到心目中理想的工作.