驱动程序开发入门

时间:2009-05-18 03:34:08

标签: c++ windows driver

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

对于简单的Win32 / GUI开发,Petzold的书似乎是必不可少的参考。司机是否存在这种情况?

我想要注意的是,我实际上并不是在谈论硬件 - 我实际上想用软件模拟一块硬件,但我想先看看事情是如何工作的。

Billy3

5 个答案:

答案 0 :(得分:11)

要注意的一件事是设备驱动程序开发(架构和工具)的变化比Win32开发更多......所以虽然Petzold的20世纪90年代的书对于Win32来说很好,并且可能被认为是永恒的经典,但是很多种类的架构驱动程序(打印机驱动程序,网络驱动程序等)在各种O / S版本中有所不同。

这是一篇评论各种书籍的博客文章:Windows Device Drivers Book Reviews

不要忘记DDK附带的microsoft文档:最重要的是,DDK附带的示例驱动程序(源代码)。例如,当我想编写模拟串行端口驱动程序时,我发现样本串行驱动程序文档与DDK文档相结合是非常宝贵的(并且足够)。

答案 1 :(得分:6)

很好地学习内核开发:

一个。大量的示例内核程序:

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

(因为上面的网址可能会更改,但Google可能会返回最合适/可访问的网址)

湾很多调试技术,其中我发现最好的是VMware(或VirtualBox)+ windbg +串口调试:

http://www.google.com/search?q=windbg+vmware+kernel+debug

本文是使用VMWare + windbg(Lord of the Ring0)的经典之作:

http://silverstr.ufies.org/lotr0/windbg-vmware.html

℃。以及其他人建立的系统管理工具:

http://technet.microsoft.com/en-us/sysinternals/bb545021

(过去称为SysInternals,由Mark Russinovich建造,是“Windows内部”的合着者 - 必读!)

http://technet.microsoft.com/en-us/sysinternals/bb963901

从这些工具中你将拥有巨大的调试选项。

d。加入OSR邮件列表(ntdev特别活跃,但还有其他像windbg):

http://www.osronline.com/page.cfm?name=ListServer

即在channel9观看大量与windows +内核相关的视频(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年到现在,我收到了我的 - 它是在地球中途送出的!

答案 2 :(得分:1)

我会搜索包含this one等丰富示例的教程。 Windows驱动程序开发的本质是获取有关层和IRP,IRQL的图片,还要了解过滤器驱动程序等术语。如果您正在寻找示例代码,请参阅我的Spodek驱动程序代码:sf.net link。你会发现有一个过滤器驱动程序(用于键盘,keyb.c),内核空间队列(queue.c)和隐藏系统中存在的技术。这是一个遗留(sys)驱动程序。

答案 3 :(得分:1)

您应该使用最新的Windows Driver Foundation(WDF)框架而不是旧的WDM框架。一个好的起点是阅读WDF Overview Word documents

如果您想阅读一本书,"Developing Drivers with the Windows Driver Foundation"就是您要找的书。

答案 4 :(得分:1)

个人开始发展的最佳方式是通过现实曝光。记住这一点我会推荐这本书

  

The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System

The Rootkit Arsenal Cover

这应该足以让你开始运行一些代码运行的东西然后在你有了一般性的图片之后你可能会讨论一些主题,例如:Buffered / Neither / Direct方法之间的差异以及与它们相关的特性

当您需要有关某些特定主题的详细信息时,“编写Windows驱动程序模型,第2版”也是一个很好的帮助。但首先,我认为最重要的是将事情置于背景中,然后以此为基础。