经典Windows编程书单

转载:http://www.ituring.com.cn/article/506991

说好的这次写一个图形编程书单……但是看起来不是很好整理,这类书散落的家里到处都是……

先把经典Windows编程的书整理一下吧,不过Windows的也到处都是很多都找不到了,只能把找到的拍个照,可能很多这次拍个照就永远压箱底了。

经典Windows编程书单 经典Windows编程书单 经典Windows编程书单

按照惯例,首先回答一个无聊的问题:”你买这么多,都看完了吗?“,答案是:是的,除了几本太弱的或者看MSDN就足够的书以外,剩下的我都看完了,而且很多不止看了几遍。毕竟是主要的吃饭家伙。

  • 这里面有很多书已经绝版了,如果想看的话可以在图书馆或者二手市场里面找。
  • 以下的观点只是个人看法,不代表已经是正确的,也不存在对出版社的偏袒。

本文不包含.Net相关的书,一来这块的书我确实不多,二来我也没怎么学过。

经典Windows开发作为一门已经快要失传的技术(茶),近些年相关的出版物越来越少了,写这么一个东西,纪念意义大于实际意义,怀念一下自己逝去的青春。

Windows编程入门,其实是一个学习曲线相对较陡峭的过程,相比之下,OSX、iOS、Android则要简单得多。那么怎么入门呢,以前大家是这么看的:

《Windows程序设计》《MFC Windows程序设计》,看这两本的前提就是得学明白C和CPP(感觉可以整理一个C和CPP的书单)。

啃完这俩大部头其实已经算是劝退了。接下来可以看《Windows核心编程》,注意,不要被书名迷惑了,这是一本入门书。是的我没有胡说八道,这真的是一本入门书。

看完这三本,就可以写很多普通程序了,注意仅仅是普通用程序,Windows里面最黑暗的部分远远没有提及。

下面是真正的Hardcore开始:

  • 《COM本质论》,COM技术是Windows用户态编程的基石,无论是Shell扩展,还是OLE自动化,还是.Net,还是UWP,都逃不了这玩意。
  • 《Inside OLE2》,人称八个月的困惑,十八年前第一次看这本书的时候,真是痛苦。
  • 《COM原理与应用》,很遗憾这次这本书没找到,潘爱民老师最著名的作品。
  • 《ATL技术内幕》,必须会的,也是WTL的基础。
  • 《Windows图形编程》,这是一本在国内非常不出名的书,但是其内容却是不可不读的。
  • 《Windows安全性编程》,这同样是一本国内似乎不太出名的书。有一个非常神秘的Windows开发哲学问题:”很多API都有一个叫 lpSecurityAttributes 的参数,而且连MSDN都说传NULL就可以,为什么?不传NULL该传什么?”,这个问题细思恐极,而且在Windows程序员的职业生涯中,迟早有一天会在某个阴暗的角落掉进这个坑里。此时的救命稻草除了翻MSDN去看晦涩难懂的文档,就只有这本书可以救你。
  • 《Windows 本机API参考》,这是当年某位老大离职的时候给我的,内容现在当然已经过时了,当时还是挺时髦的,大部分人用不到。

啃完上面这些就可以说自己已经是一个Windows开发老鸟了,真的。然而这还不够,内核呢?

  • 《深入解析Windows操作系统》这个系列,是Windows码农的必读,我是从第三版开始看的,第五版没有买。
  • 《Windows内核原理与实现》《Windows内核情景分析》分别从微软的WRK和开源的ReactOS两个角度解读Windows内核原理。 《Windows NT 文件系统技术内幕》,这本书国内没有正式引进,以前驱动开发网组织过翻译打印卖了一批。

调试技术:

  • 《应用程序调试技术》,这是我最喜欢的一本书,Windows调试器的原理我就是跟这里学的。
  • 《Windows高级调试》,不多说了,必看
  • 《软件调试》,张银奎老师的力作,这本已经绝版,不过今年就会有第二版了,好评期待。
  • 《Inside Windows Debugging》,内容相当丰富,必读。

驱动开发:

  • 《Rootkits:subverting the windows kernel》,这本国内有引进,据说翻译太差也绝版了,有兴趣的还是看原版。
  • 《寒江独钓》这一系列是我同事写的,推荐。 其他没什么好推荐了,虽然我这里也有,但是我可以很负责的说,都tm太烂了,请去看WDK。

另外之前有人问我,学汇编看什么,个人推荐《Intel 汇编语言程序设计》(Kip Irvine著,查了一下国内已经引进到第七版了),照片里那本,还有《现代X86汇编语言程序设计》(Daniel Kusswurm,张银奎译)。另外就是Intel这套手册了,躲不过去的,老老实实看。

还有很多,一时也想不起来,先写这么多吧。