开发驱动程序

有没有人有任何书籍/教程可能有用的Windows设备驱动程序开发入门?

对于普通的Win32 / GUI开发,Petzold的书似乎是必不可less的参考。 这样的司机是否存在?

我想说的是,我实际上并不是在和硬件交stream – 我真的想用软件来模拟一个硬件,但是我想先看看一般情况如何。

Billy3

有一点需要注意的是设备驱动程序的开发(体系结构和工具)的变化超过了Win32的开发…所以尽管Petzold从20世纪90年代开始的书对于Win32来说是很好的,并且可以被认为是一个永恒的经典,许多驱动程序的体系结构打印机驱动程序,网络驱动程序等)在不同的操作系统版本中有所不同。

这里有一个博客条目,评论各种书籍: Windows设备驱动程序书评 。

不要忘记包含在DDK中的微软文档,最重要的是,包含在DDK中的示例驱动程序(源代码)。 例如,当我想编写一个模拟串口驱动程序时,我发现与DDK文档相结合的示例串行驱动程序文档非常宝贵(而且足够)。

要很好地学习内核开发:

一个。 大量的样本内核程序:

Windows DDK示例:

http://social.msdn.microsoft.com/Forums/en-US/softwaretesting/thread/08690203-1757-4129-b59a-6bae10bcdce8/

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武库:在黑暗的角落逃避和逃避

Rootkit阿森纳封面

应该足够让你开始有一些代码运行,然后在你有了关于“缓冲/非直接/直接”方法之间的区别以及与它们相关的特性等主题的总体情况之后,可以执行“某些事情”。

当您需要关于某些特定主题的详细信息时,“编程Windows驱动程序模型,第二版”也非常有帮助。 但首先我相信最重要的是把事情放在背景之上,然后再进一步发展。