推荐序
当Jeffrey请我为本书写一篇序的时候,我爽快地答应了。我还记得在上个世纪90年代早期寻找本书第1版《高级Windows NT编程(www.cppentry.com)》(Advanced Windows NT)时的情形。那时我刚刚开始开发Windows应用程序。在我开发诸如Filemon,Regmon以及HandleEx(现在叫Process Explorer)之类的应用程序时,它既是一本指南,又是一本参考手册。本书第1版面向Windows系统编程(www.cppentry.com),而Charles Petzold的《Windows编程(www.cppentry.com)》(Programming Windows)则面向用户界面编程(www.cppentry.com)。
在过去的几年中,Jeffrey已经将他关注的重点转向了托管代码,这使得为本书作序对我来说大有意义。Jeffrey已经成为.NET CLR和C#系统编程(www.cppentry.com)的权威,当Microsoft还在设计.NET的时候,他的这种转换就已经开始了。他还不时地"嘲弄"我和我的搭档David Solomon--我们合著了《深入解析Windows操作系统》(Windows Internals)系列,说本机代码编程(www.cppentry.com)(native code programming)已经日暮西山。我和David始终坚信本机代码编程(www.cppentry.com)由于具有不同的API、不同的失败语义(failure semantics)、不同的部署方式以及不同的运行时特征,因此将继续满足某一类应用程序的需求,或者至少是满足部分应用程序的需求。相当一部分Windows客户端应用程序仍然是用本机代码编写的,甚至Microsoft的旗舰服务器端应用程序,包括IIS、SQL Server以及Exchange,几乎完全是用本机代码编写的,或者使用了用本机代码编写的组件。因此,我将本书视作Jeffrey对我们这种信念的无言的肯定。
Windows一直在演化,本书亦是如此。它之前已经经历了许多个版本,甚至书名也一变再变。比如,本书上一版名为Programming Applications for Microsoft Windows。但无论书名如何改变,它的每一版在我的书架上都占有一席之地。(这与Jeffrey给我在书上签名不无关系,不仅如此,而且所签的内容还是我选的,比如"我从Mark那里学到了一切"之类可供炫耀的话。)这一个版本不仅只是换了一个新的书名,它还介绍了Windows Vista和Windows Server 2008中引入的最新API,包括线程、安全、异常处理以及I/O。
本书提供了大量的编程(www.cppentry.com)实例,既紧凑又有效地展示了各种关键概念,这使得它尤其有用。许多作者在将代码与读者分享的时候,并没有认识到许多开发人员会直接将代码复制和粘贴到将要发行的应用程序中去。但与我们在互联网上搜索到的代码不同,Jeffrey和Christophe已经确保书中的代码在编写时兼顾了高质量和高准确性。
我相信,无论您是Windows应用程序编程(www.cppentry.com)的新手,还是完全用本机代码来编写应用程序或通过P/Invoke来调用.NET Framework未提供的API的老手,都会发现本书的价值。它将有助于发挥强大的平台特性并降低其复杂度,帮助开发人员开发伸缩性更好、更可靠、更安全以及性能更高的应用程序。显然,它依旧会出现在我的书架上,希望这一次Jeffrey和Christophe都能为我签上"我从Mark那里学到了一切"。
Mark Russinovich
(Windows Internals作者
Technical Fellow
Microsoft Corporation
【责任编辑:
云霞 TEL:(010)68476606】