若干重要的Windows参考资料

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
要让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
dbus在windows上的编译 介绍如何在Windows平台上编译dbus库。 阅读详情

相关推荐

Windows Server 2003操作与管理完整参考资料

本文还有配套的精品资源,点击获取 简介:《Windows Server 2003参考资料》是一份深入讲解该操作系统核心概念、功能和管理技术的文档。涵盖了活动目录、域控制器、远程桌面服务、IIS、组策略、文件和打印服务、备份与恢复、性能监控、安全增强、系统更新等特性。提供了最佳实践、故障排除、案例研究等信息,帮助IT专业人员提升服务器管理和故障排查能力。 1. Wi...

weixin_31776191的博客 1113

[黑客防线2011精华奉献本.上册].黑客防线.扫描版

《黑客防线》是中国网络及计算机安全普及性电子媒体之一,而《黑客防线》网站则是杂志建设的大型网上媒体交互平台,也是目前中国大陆互联网上范围最广泛的中文安全类网站之一。从《黑客防线》于2001年6月面世读者的第一天起,杂志和网站就以向全国范围传播中国人自己的网络安全声音为己任,并保持着国内安全类杂志的权威性同时,充分发挥互联网特性,增加吸引力、可读性、亲和力。经过《黑客防线》杂志的主办单位地海森波网络科技有限公司近2年时间的努力,杂志和网站均已发展成为中国最具权威性和影响力、更新数据量最大的网络安全专业站点之一。

Windows深入剖析(初始化篇).

Windows深入剖析(初始化篇).Windows深入剖析(初始化篇).

学习windows内核书籍推荐 ----------转自http://tieshow.iteye.com/blog/1565926

虽然,多年java,正在java,看样子还得继续java。(IT小城,还是整java随意点)应用程序 运行于操作系统之上, 晓操作系统,方更晓应用程序。主看windows,因为可玩性高,闭源才有意思。(莫忘2008年,微软盗版黑屏事件)书籍推荐(全中文),按顺序====== windows应用程序 =============C&C++, 略(懒~...

dianbiao4727的博客 441

Windows内核方面的经典书籍

Inside Windows 2000Microsoft Windows Internals。这两本书分别是同一套Windows内核架构分析书籍的第三版和第四版,两位作者在编写本书的过程中被授权察看Windows的相关源码,所以可以说这两本书是Windows内核分析的第一手资料; Programming the Microsoft Windows Driver Model,

温研的专栏 (探索OS内核的奥秘) 7871

WDF内核驱动------基础入门书籍参考

记录一下从零到壹学习WDF内核驱动的过程中用到的参考书籍等。因工作项目需要,接手了一个windows内核驱动小项目,当时对windows内核驱动一窍不通,对windows内核原理的知识储备为基本为零。从b站到油管都搜罗了一遍,免费讲WDF内核驱动的视频博主比较少,付费的学习周期长。3.《Windows驱动开发技术详解》- 张帆 & 史彩成。《竹林蹊径 深入浅出Windows驱动开发》-张佩等。2.《windows内核编程》-谭文&陈铭霖。3.微软官网驱动开发参考代码------

qq_42383894的博客 825

经典书籍

windows的经典书籍> 和>可以说是姊妹篇了。前者讲的是Windows 2000的一些机制,后者更注重这些机制的一些在编程接口上的应用,即哪些编程接口是和核心比接有关的,如何利用这些高级特性,编出更高质量的程序。较老的书就是Inside Windows 95。《Windows 2000设备驱动程序设计指南》(The Windows 2000 Device DriverBook)第二版  机械工

小草与大地的故事 1063

WCF性能优化参考资料

WCF性能优化参考资料http://automationqa.com/forum.php?mod=viewthread&tid=1432

软件质量优化 3264

Windows】通过命令行管理 Windows 应用

通过命令行管理 Windows 应用

杨群的博客 1174

记录安装Docker for Windows参考资料

# 初识配置 https://docs.microsoft.com/en-us/windows/wsl/install-win10#step-1---enable-the-windows-subsystem-for-linux https://blog.csdn.net/magefreehome/article/details/107885573?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.contro

ZZULI_星.夜 1445

windows驱动开发参考资料地址

Windows文件过滤驱动开发 http://blog.sina.com.cn/s/blog_7785041f0101jekb.html

Lydia的博客 1108

Vista操作系统评估参考资料

Vista操作系统评估参考资料 很久没有更新空间了。 这个Windows Vista操作系统评估参考资料,是昨天应公司某位Leader做的。 主要参考了微软网站的一些资料。介绍了Vista的一些版本知识,购买方式等内容。 各位有兴趣可以看一下。 ...

weixin_34358092的博客 76

Windows HTTP Services 参考资料

Windows HTTP Services 参考资料 2009年12月14日   参考:http://msdn2.microsoft.com/en-us/library/aa384273(VS.85).aspx   WinHttp; // Microsoft WinHTTP Services, version 5.1   Alias HTTPREQUEST_PROXY_SETTING...

nmv884rp 544

Windows GUI 编程参考资料

<br />http://msdn.microsoft.com/en-us/windows/ff458509.aspx

fr_rf的专栏 836

JIURL玩玩Win2k 参考资料

JIURL玩玩Win2k 参考资料作者: JIURL                 主页: http://jiurl.yeah.net     日期: 2003-7-30 《Undocumented Windows 2000 Secrets, A Programmers Cookbook

jiurl的专栏 2363

c# WebBrowser开发参考资料

c#WebBrowser开发参考资料 原文:c#WebBrowser开发参考资料 c#WebBrowser开发参考资料,所有资料的采集均来自网上 话说有了WebBrowser类,终于不用自己手动封装SHDocVw的AxWebBrowser这个ActiveX控件了。这个类如果仅仅作为一个和IE一模一样浏览器,那就太 ...

weixin_30877755的博客 77

ReportView(RDSL)参考资料

ReportView(RDSL)参考资料 微软官方reportview参考:http://msdn.microsoft.com/zh-cn/library/ms251671.aspx http://www.gotreportviewer.com/需用代理 post...

weixin_30273175的博客 179
上一篇: FUTo: Bypassing Blacklight and IceSword
下一篇: My Root Kit Note
iiprogram
博客等级 码龄25年 1067粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值