若干重要的Windows参考资料

转载 2006年06月02日 13:34:00

 from http://linux.insigma.com.cn/jszl.asp?docid=115576858

2006年6月2日 星期五 
  您现在的位置:项目白皮书
  漫谈兼容内核之十二:Windows的APC机制
  漫谈兼容内核之十一:Windows DLL的装入和连接
  漫谈兼容内核之十:Windows的进程创建和映像装入
  漫谈兼容内核之九:ELF映像的装入(二)
  漫谈兼容内核之八:ELF映像的装入(一)
  漫谈兼容内核之七:Wine的二进制映像装入和启动
  漫谈兼容内核之六:二进制映像的类型识别
  漫谈兼容内核之五:Kernel-win32的系统调用机制
  漫谈兼容内核之四:Kernel-win32的进程管理
  漫谈兼容内核之三:Kernel-win32的文件操作
  漫谈兼容内核之二:关于kernel-win32的对象管理
  漫谈兼容内核之一:ReactOS怎样实现系统调用
  漫谈Wine之四:内核差异核内补
  漫谈Wine之三:Wine的文件读写
  漫谈Wine之二:Windows的文件操作
  漫谈Wine之一:WINE的系统结构[图]
  Linux兼容内核:提高Linux市场竞争力的一个手段
  开发Linux兼容内核的策略与路线[图]
  Linux兼容内核的三个重要源泉
  一个框架、两个界面
  若干重要的Windows参考资料
  关于Linux兼容内核的知识产权问题(一)
  关于Linux兼容内核的知识产权问题(二)
 


              若干重要的Windows参考资料
                                               毛德操

    要让Linux内核支持Windows应用程序和设备驱动,我们当然得要了解并理解Windows的各种机制和机理。本文的目的是为大家介绍和推荐一些关于Windows的参考资料。当然,对Linux的了解和理解更是必不可少,但是笔者以为既然是行走于我们这个地界的人,对Linux想必自有一定的基础,所以Linux方面的参考资料这里就不讲了。
    说到Windows的技术资料,微软本身的各种SDK、DDK、以及MSDN网站上的资料当然是重要的,但是信息量太大。在笔者看来,微软的资料数量之大正是由于不公开源代码。一件东西,放在透明的玻璃瓶里,自然就不需要作太多的描述;而若封装在一个黑盒子中,描述起来可就费劲了。微软既不肯公开其源码,却又想要别人在此基础上开发各种第三方软件,自然就得对其各种产品作黑盒子描述,“信息爆炸”就不可避免了。许多人见了微软的资料就烦,是因为这些资料只告诉你“其然”而不告诉你“其所以然”。也有许多人很喜欢微软的资料,是因为这些资料就像使用手册,所以“一抓就灵”。也难怪市面上有那么多关于Windows的各种“宝典”。读微软的资料可以使你成为“很好的”工程师,却不会使你成为科学家。
    不过,幸而还有一些书,在讲述其然的同时还在讲述其所以然。有趣的是,其中特别重要的几本正是由微软出版社组织和出版的。可见微软自己也知道,光作黑盒子描述,光让人家知其然而不知其所以然,是不够的,那样很难成长起高质量的Windows软件开发人员,反过来对微软也不利。这跟奴隶主有时候也意识到该让奴隶们吃的壮实一些,是同一个道理。而对于我们,这些书的重要性就不言而喻了。

    Windows参考书的首选当推Mark Russinovich和David Solomon的“Microsoft Windows Internals”第4版,微软出版社2005年版。我们只要简单回顾一下这本书的历史,读者就可体会到它的重要性。这本书的第一版由Helen Custer编写,书名“Inside Windows NT”。第二版(1998年)改由David Solomon编写,由WinNT开发团队的主任Lou Perazzoli作序。第三版(2000年)的书名改成“Inside Windows 2000”,由David Solomon和Mark Russinovich共同编写。到了第四版,书名又改成“Microsoft Windows Internals”,由Mark Russinovich和David Solomon共同编写。尤其引人注目的是,第四版上有David Cutler写的前言,题为“Historical Perspective”,文中回顾了WinNT的由来。这位David Cutler可不是等闲之辈,他是WinNT之父。就是他,当年把VMS的技术和(部分)人马从DEC带到了微软。有个笑话很形象地说出了WinNT和VMS之间的渊源关系:把“VMS”这三个字母的ASCII代码每个都加1,就成了“WNT”。而David Solomon是David Cutler在DEC就相识的老伙伴。正是David Cutler特许David Solomon可以自由翻看WinNT的源代码。这种“看”,跟把人请去住在旅馆里十天半个月、每天去微软资料室看上几个钟头的那种“双规”下的“看”,当然有着天壤之别。所以,这本书应该说是一本权威著作,书中所讲应该认为是有源代码根据的。再说,这本书也确实让人知其然并且知其所以然。当然,要是有源代码就更好了,但是要知道那是微软,能有如此这般就很不错了。在兼容内核的开发过程中,这本书无疑将在总体上起很大的指导作用。
    第二本书是Walter Oney的“Programming the Microsoft Windows Driver Model”第2版,微软出版社2003年版。这本书对微软的WDM设备驱动模型(即框架)作了深入的介绍。微软要求从Win2k开始的设备驱动模块都符合WDM的要求。与传统的WinNT设备驱动相比,WDM要求设备驱动模块都支持PnP(即插即用)、电源管理(不用时可转入省电模式)、以及WMI(Windows Management Instrumentation,意为Windows管理手段,是微软版的WBEM实现)。所以,这本书所介绍的是新的Window设备驱动框架的设计与实现,附带着也介绍了设备驱动界面上的一些重要的函数。显然,这本书对于兼容内核中设备驱动框架和设备驱动界面的实现有着重要的指导意义。读了这本书,再回过去看Windows DDK中一些样本实例的源代码,就更容易理解,理解也可以更深了。
    不过,现在实际上在使用的.sys模块还有不少只是传统的WinNT设备驱动。WinNT的设备驱动框架可以说是WDM的一个子集,比WDM要简单一些。对于WinNT设备驱动,Art Baker的“The Windows NT Device Driver Book”是一本很好的参考书。这本书是由Prentice Hall在1996年出版的。虽然年代已经久远,书的内容却并不显得太陈旧,可以作为WDM那本书的补充,参照阅读。
    第四本书是Jeffrey Richter的“Advanced Windows”第3版,微软出版社1997年版。这本书就不仅仅是讲内核了。它让读者对Windows操作系统有个整体上的理解。例如,在另一篇文章中笔者曾提到,Windows在创建子进程时对于已打开文件的遗传与Unix/Linux在方式上有很大的不同,这本书对此就有很详细的叙述。而这一点正可以说明,不同内核间的有些差别是很难在内核外面得到补偿的。
    第五本书是Gary Nebbett的“Windows NT/2000 Native API Reference”,MTP出版社。这里所说的“Native API”,实际上就是系统调用。显然,这是一本关于WinNT系统调用的参考手册。既然微软把系统调用界面藏在黑盒子里面,或者说藏在Win32 API后面,从来都不公开,那么这本参考手册的价值也就不言而喻了。看一下这本书,就可以知道实现Windows系统调用界面的工作量该有多大。
    作为对这本书的补充,Parasad Dabak等人的“Undocumented Windows NT”,M&T Books,1999年出版,对于WinNT系统调用的实现也是一本有用的参考书。与前面几本由微软出版的参考书不同的是,这两本书的材料主要是通过逆向工程得来的。有源代码作为根基的著作固然比较权威,根据实验取得的资料也值得重视。
    还有一本Sven Schreiber的“Undocumented Windows 2000 Secrets”,Addison-Wesley,2001年出版,也是一本好书,甚至更好。这本书一边是基于逆向工程介绍Windows内核各方面的内容,也包括设备驱动;另一边还教给读者一些逆向工程的方法,所以对程序的调试很有好处。特别值得一提的是,这本书的附录中实际上还列出了Win2k系统调用的函数跳转表、即函数名与系统调用号的对照,书中还讲述了这个对照表是如何得来的。这可是个宝贵的信息。因为Native API一书中虽然详细介绍了各个具体系统调用的使用方法,却并未提供它们的系统调用号。而若缺了这个信息,我们在实现Windows系统调用界面的函数跳转表时就得多费许多周折。
    最后,Rajeev Nagar的“Windows NT File System Internals”,O’Reilly,1997,虽然主题是“文件系统内幕”,但是实际上对内核的各个方面都有一些介绍,也有一定的参考价值。
    这八本书是笔者所知最好的Windows参考书。当然,并不是说读者必须读了这八本书的全部才能从事兼容内核的开发,更不是说读了这八本书就一定可以把兼容内核开发好。


参考书目
Mark Russinovich,David Solomon,“Microsoft Windows Internals”,4e,Microsoft Press,2005
Walter Oney,“Programming the Microsoft Windows Driver Model”,2e, Microsoft Press,2003
Art Baker,“The Windows NT Device Driver Book”,Prentice Hall,1996
Jeffrey Richter,“Advanced Windows”,3e,Microsoft Press,1997
Gary Nebbett,“Windows NT/2000 Native API Reference”,MTP, 2000
Parasad Dabak, “Undocumented Windows NT”,M&T Books, 1999
Sven Schreiber,“Undocumented Windows 2000 Secrets”,Addison-Wesley,2001
Rajeev Nagar,“Windows NT File System Internals”,O’Reilly,1997

  下载文章

   

相关文章推荐

若干Windows参考资料

  • 2008-12-18 23:33
  • 115KB
  • 下载

参考资料:关于windows server 2003 x64的.net Framework3.5 的安装

适用于 Windows XP x64 和 Windows Server 2003 x64 的 Microsoft .NET Framework 3.5 产品系列更新 简短描述安装此更新可以解决 Mic...

c语言重要参考资料

  • 2013-08-23 14:26
  • 95KB
  • 下载

apache rewrite规则参考资料(二)

说明:因时间紧张,先暂时转载,该部分内容晚会进行整理。 RewriteCond指令格式 语法: RewriteCond TestString CondPattern [flags] Rewrit...

蚁群算法重要的参考资料

  • 2010-09-06 15:36
  • 212KB
  • 下载

git参考资料,及自己整理的命令

git

windows编程实用参考资料

  • 2008-11-02 14:40
  • 2.94MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)