在使用广受好评的Windows 3.1操作系统并深入探究其内部原理后,我立即意识到微软公司于1993年发布的Windows NT 3.1所拥有的改变世界的潜力。作为Windows NT的架构师和工程主管,大卫·卡特勒打造了一个安全、可靠、可扩展的Windows版本,同时它还与其上一代,即更成熟的“前任”有着相同的用户界面和功能来运行相同的软件。海伦·卡斯特撰写的著作 Inside Windows NT 对Windows NT的设计和架构提供了精彩剖析,但我相信有必要出版一本深入探究其内部工作细节的图书,并且我对此很感兴趣。基于大卫·卡特勒设计的VAX/VMS所出版的 VAX/VMS Internals and Data Structures 一书,尽可能从贴近源代码的角度提供了深入探讨,而我决定撰写此书的Windows NT版本。
当时的写作进展非常缓慢,我正忙着完成博士学业,并在一家小型软件公司开始自己的职业生涯。为了了解Windows NT,我阅读文档,对其代码进行逆向工程,并开发Regmon和Filemon这样的系统监视工具,借此观察Windows NT表现出的内部行为,以便帮助自己了解其设计。随着学习的深入,我通过 Windows NT Magazine 月刊(一本面向Windows NT管理员的杂志)的NT Internals专栏分享了自己新发现的知识。这些专栏文章成为后续与IDG出版社签约并出版 Windows Internals 一书相关章节的基础。
由于本职工作的影响,并且我还要花费大量时间开发Sysinternals(当时还叫NTInternals)免费软件,并为自己新成立的Winternals Software公司开发商业软件,所以本书的写作进程受到拖累,交稿时间也一拖再拖。随后在1996年,大卫·所罗门出版的 Inside Windows NT 的第2版让我大为震惊,我发现该书既让人印象深刻,又让我感到沮丧。这本书完全重写了海伦那本书的内容,更深入、广泛地介绍了Windows NT的内部原理,而这些工作正是我原本打算要做的。同时这本书还通过新颖的“实验”环节,借助系统内置的,以及来自Windows NT资源包和设备驱动程序开发包(DDK)的工具与诊断实用工具,演示了与系统有关的重要概念和行为。大卫将标准提高了很多,让我意识到写一本从质量和深度两方面都能与他的作品媲美的书,要比我原本的计划更艰巨。
俗话说:如果不能打败他们,就加入他们。早先在Windows大会演讲时我就认识大卫·所罗门了,因此在这本书出版后的几周里,我给他发了一封电子邮件,自荐要参与到这本书的下一版的写作中,下一版将主要针对当时所谓的Windows NT 5,也就是后来的Windows 2000。我将主要基于自己之前的NT Internals专栏文章,撰写全新章节来涵盖大卫·所罗门尚未涉及的话题,同时围绕自己的Sysinternals工具撰写很多新的实验内容。为了让自己的提议更有吸引力,我还建议在这本书的随附资源光盘中提供全套Sysinternals工具(借助图书和杂志分发软件是当时一种很常见的做法)。
大卫·所罗门对此很感兴趣,但首先他需要得到微软公司的批准。我曾公开揭露Windows NT Workstation与Windows NT Server使用了完全相同的代码,只不过会根据注册表设置的差异而表现出不同的行为,这给微软造成了一些公关方面的麻烦。虽然他可以完整访问Windows NT源代码,可我不行,但我觉得这样也挺好,以免自己在为Sysinternals或Winternals开发软件时因为涉及未公开的API而陷入知识产权方面的麻烦。当时的时机很微妙,因为在他就此事询问微软时,我也一直在努力修复自己与Windows工程师的关系,微软最终默许了我们的合作。
与大卫·所罗门合作撰写 Inside Windows 2000 的过程极为有趣。虽然难以置信,但巧的是,他家和我家距离仅20分钟车程(我住在美国康涅狄格州的丹伯里,他住在康涅狄格州的谢尔曼)。我们会去对方家里进行“写作马拉松”,共同研究Windows内部原理,讲些与“极客”有关的段子和双关语,并围绕技术问题进行比赛,借助他的源代码以及我的反汇编工具、调试器和Sysinternals工具,看谁能先找到答案(如果有机会见到他,你可别戳他的痛处,因为当时总是我赢)。
就这样,我成了一本书的合作者,而这本书描述了有史以来最成功的商业操作系统之一。在涵盖Windows XP和Windows Vista的本书第5版的撰写过程中,我们邀请了亚历克斯·伊奥尼斯库。亚历克斯是全球最棒的逆向工程师和操作系统专家之一,在他的帮助下,本书的广度和深度得到进一步拓展,在可读性和细节方面达到甚至超越了我们当时的最高标准。随着本书范围继续扩大,并且Windows本身包含的新功能和子系统的数量不断增长,第6版的篇幅已经超出了第5版所确立的单卷出版限制,因此我们将其拆分为两卷。
在第6版的撰写过程中,我已经转岗至Azure部门,而当我们准备开始撰写第7版时,我已经完全没有时间参与本书的撰写工作了。大卫·所罗门已经退休,此外考虑到Windows已经从每几年发布一次大版本和版本号,转变为像Windows 10这样持续发布新功能和功能升级,本书的更新工作也变得更具挑战性。在第7版的卷1撰写过程中,帕维尔·约西沃维奇加入并帮助亚历克斯进行撰写,但现在他也因忙于其他项目,无法继续参与卷2的撰写。亚历克斯现在也正忙于自己的初创公司CrowdStrike,我们甚至一度担心卷2能否顺利出版。
幸运的是,我们迎来了安德里亚。他和亚历克斯更新了卷2中的大量内容,包括启动和关机过程、注册表子系统以及UWP。他们不仅更新了原有内容,还增加了全新的三章,深入介绍了Hyper-V、缓存和文件系统,以及诊断和跟踪。作为有史以来最重要的软件之一,Windows极为安全。而 Windows Internals 系列图书是有关Windows内部工作原理在技术上既深入又准确的著作。自己依然能够在这本书上留名,这让我倍感自豪。
在我职业生涯中有一个难忘的时刻,当时我们在邀请大卫·卡特勒为 Inside Windows 2000 作序。为此,大卫·所罗门和我曾多次拜访微软并与Windows工程师会面,这期间几次遇到了大卫·卡特勒。然而我们完全不知道他是否会同意,因此当他同意时,我们激动极了。现在轮到我为本书作序,这一切感觉有些难以置信,但与当年我们邀请大卫·卡特勒作序时的情况类似,能获得这个机会我倍感荣幸。希望有我的序言作为背书能给你同样的信心,让你相信这本书是权威、清晰和全面的,正如大卫·卡特勒当年为 Inside Windows 2000 所做的那样。
马克·E. 鲁辛诺维奇
Azure首席技术官和微软技术院士