garyzha
驱动牛犊
驱动牛犊
  • 注册日期2009-05-20
  • 最后登录2009-05-25
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望91点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
阅读:2255回复:0

《Windows Internals》学习心得(1)

楼主#
更多 发布于:2009-05-23 01:55
以前做开发的时候用VC, MFC, 对于Win32和Driver是一点也不感兴趣。后来乱七八糟混了好几年,IT业大变,自己碰巧就做上了测试。测试又做了快5年了,大部分时间是自我摸索,到了现在这情况变成了一定要学习Windows internals了。
这本书从开始看也两年多了,我很难说我看懂了多少,只是最近才开始有点立体的感觉,当然这跟工作上接触到一些相关内容还是有关系的,否则只是硬看应该是看不懂才对。我想目前由于不精通Windows internals对于我的测试工作有以下几个障碍:
跟开发人员的沟通存在Gap。
不能更好地去设计测试用例,因此不能抓到更深入,复杂的bug。
对于一些复杂点的问题很难去debug。
对于code review, code coverage, security test等等都受到了很大的限制。
职业发展也有了bottleneck。
因此,我觉得在今后的几年应该在Windows internals上下下功夫,争取能够达到精通。今天我就想谈谈自己以前比较混乱的一些概念,windows internals, windows kernel, SDK, DDK, Win32, driver。
Windows internals应该是讲Windows OS实现的一些细节,它并不局限在kernel mode的模块和知识,还涉及到了user mode的一些系统进程。因此,我说学习windows internals就应该包括了所有Windows OS的知识。
Windows kernel,我主要是按照在kernel mode运行的模块来理解的,因为Kernel mode里还有个kernel,容易造成概念的混淆。
Win32 API就是windows提供的在user mode的应用程序编程接口,它的工具包叫做SDK。但是涉及到系统服务,也就是内核上的服务的时候,他们是通过ntdll.dll转到kernel mode去实现的。也就是说,实现的细节还是在kernel mode。
Kernel里提供了一套接口叫DDK,是给driver的开发人员使用的。如果你想在Kernel mode运行你的程序,你应该只能通过编写driver来实现,正常来说。
由于windows internals的大部分知识都是在kernel里,因此我也想主要集中在kernel mode里的模块和知识。
对user mode开放的服务都有哪些,实现细节如何?
DDK里的函数都有哪些,实现细节如何?
Executive层的模块都有哪些,实现细节如何?比如,memory manager, IO manager, cache manager等等。
Windows里的driver都有哪些,实现细节如何?比如我认为最重要核心的ntfs。
学习资料:
《Windows Internals》
《Programming the Microsoft Windows driver model》

最后,HAL不想学,也不知道有没有用,Hardware不想学,WDF暂时不想学。现在是新手,能想到的也就这么多了。
游客

返回顶部