有没有人有任何书籍/教程可能有用的Windows设备驱动程序开发入门?
对于普通的Win32 / GUI开发,Petzold的书似乎是必不可less的参考。 这样的司机是否存在?
我想说的是,我实际上并不是在和硬件交stream – 我真的想用软件来模拟一个硬件,但是我想先看看一般情况如何。
Billy3
有一点需要注意的是设备驱动程序的开发(体系结构和工具)的变化超过了Win32的开发…所以尽管Petzold从20世纪90年代开始的书对于Win32来说是很好的,并且可以被认为是一个永恒的经典,许多驱动程序的体系结构打印机驱动程序,网络驱动程序等)在不同的操作系统版本中有所不同。
这里有一个博客条目,评论各种书籍: Windows设备驱动程序书评 。
不要忘记包含在DDK中的微软文档,最重要的是,包含在DDK中的示例驱动程序(源代码)。 例如,当我想编写一个模拟串口驱动程序时,我发现与DDK文档相结合的示例串行驱动程序文档非常宝贵(而且足够)。
要很好地学习内核开发:
一个。 大量的样本内核程序:
Windows DDK示例:
WDK样本:
http://msdn.microsoft.com/en-us/windows/hardware/gg487428
或者只是搜索:
http://www.google.com/search?q=windows+ddk+samples
(因为上面的URL可能会改变,但是Google可能会返回最合适的/可到达的)
湾 很多调试技术,其中我发现最好的是VMware(或VirtualBox)+ windbg +串口调试:
http://www.google.com/search?q=windbg+vmware+kernel+debug
这篇文章是使用VMWare + Windbg(Ring0)的经典之作:
http://silverstr.ufies.org/lotr0/windbg-vmware.html
C。 以及其他人建立的系统管理工具:
http://technet.microsoft.com/en-us/sysinternals/bb545021
(过去称为“Windows内部”的共同作者Mark Russinovich建立的SysInternals – 必须阅读!!)
http://technet.microsoft.com/en-us/sysinternals/bb963901
从这些工具你将有巨大的调试选项。
d。 加入OSR邮件列表(ntdev尤其是非常活跃,但也有其他像windbg):
http://www.osronline.com/page.cfm?name=Listserver
即 在channel9上观看与windows + kernel相关的视频(google已经返回了超过1000个链接):
http://www.google.com/search?q=site:channel9.msdn.com+kernel+video&num=100
F。 论坛讨论如:
http://social.microsoft.com/Forums/en-us/kernel/threads
http://social.msdn.microsoft.com/Forums/en-US/wdk/threads
也订阅了免费的OSR杂志(硬拷贝)。 我从1998年以来一直收到我的邮件,而且是在地球上的一半。
我会搜索与丰富的例子,如这个教程。 Windows驱动程序开发的本质是获取有关图层和IRP,IRQL的图片,并了解像过滤器驱动程序这样的术语。 如果你正在寻找示例代码,这里是我的Spodek驱动程序代码: sf.net链接 。 你会发现有一个过滤器驱动程序(键盘,keyb.c),内核空间队列(queue.c)和隐藏在系统中的存在的技术。 这是一个传统(系统)的驱动程序,但。
您可能应该使用相当新的Windows驱动程序基础(WDF)框架,而不是旧的WDM框架。 一个好的起点是阅读WDF Overview Word文档 。
如果你想读一本书, “使用Windows驱动程序基础开发驱动程序”是你正在寻找的。
个人而言,开始开发的最佳方式是通过真实世界的曝光。 考虑到这一点,我会推荐这本书
Rootkit武库:在黑暗的角落逃避和逃避
应该足够让你开始有一些代码运行,然后在你有了关于“缓冲/非直接/直接”方法之间的区别以及与它们相关的特性等主题的总体情况之后,可以执行“某些事情”。
当您需要关于某些特定主题的详细信息时,“编程Windows驱动程序模型,第二版”也非常有帮助。 但首先我相信最重要的是把事情放在背景之上,然后再进一步发展。