20

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

对于普通的 Win32/GUI 开发,Petzold 的书似乎是必不可少的参考。司机有这种情况吗?

我想指出,我实际上并不是在谈论硬件——我实际上想在软件中模拟一个硬件,但我想先看看一般情况下是如何工作的。

比利3

4

5 回答 5

11

需要注意的一件事是设备驱动程序开发(架构和工具)的变化比 Win32 开发更多……因此,虽然 Petzold 1990 年代的书适用于 Win32,并且可能被认为是永恒的经典,但适用于多种驱动程序的架构(打印机驱动程序、网络驱动程序等)在各种操作系统版本中有所不同。

这是一篇评论各种书籍的博客条目:Windows 设备驱动程序书评

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

于 2009-05-18T03:53:37.827 回答
7

要学好内核开发:

一种。大量示例内核程序:

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

(因为上面的网址可能会改变,但谷歌可能会返回给你最合适/可达的)

湾。调试技巧很多,我觉得最好的是VMware(或VirtualBox)+windbg+串口调试:

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

这篇论文是使用 VMWare + windbg(指环王0)的经典之作:

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

C。以及其他人构建的系统管理工具:

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

(过去称为 SysInternals 由“Windows Internal”的合著者 Mark Russinovich 构建 - 必须阅读!!)

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

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

d。加入 OSR 邮件列表(尤其是 ntdev 非常活跃,但还有其他类似 windbg 的):

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

e. 在 channel9 上观看大量与 windows + 内核相关的视频(谷歌返回了 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 年到现在,我一直收到我的 - 它是绕地球半圈交付的!

于 2011-05-20T08:20:47.030 回答
1

我会搜索包含丰富示例的教程,比如这个。windows驱动开发的本质是了解层和IRP、IRQL,以及过滤驱动等术语。如果您正在寻找示例代码,这里是我的 Spodek 驱动程序代码:sf.net 链接。您将在那里找到过滤器驱动程序(用于键盘,keyb.c)、内核空间队列(queue.c)和隐藏系统中存在的技术。不过,它是旧版 (sys) 驱动程序。

于 2009-05-18T08:25:38.790 回答
1

您可能应该使用最近的 Windows Driver Foundation (WDF) 框架,而不是旧的 WDM 框架。一个很好的起点是阅读WDF 概述 Word 文档

如果您想阅读一本书,“使用 Windows 驱动程序基础开发驱动程序”就是您要找的书。

于 2010-01-18T10:38:28.147 回答
1

就个人而言,开始开发的最佳方式是通过现实世界的曝光。考虑到这一点,我会推荐这本书

Rootkit 兵工厂:系统黑暗角落的逃生与躲避

Rootkit 兵工厂封面

这应该足以让您开始运行一些执行“某些事情”的代码,然后在您了解总体情况之后,您可能会关注诸如 - 缓冲/两者/直接方法之间的差异以及与它们相关的特性之间的差异。

当您需要有关某些特定主题的详细信息时,“Windows 驱动程序模型编程,第 2 版”也很有帮助。但首先,我认为最重要的是把事情放在上下文中,然后在此基础上再接再厉。

于 2011-07-29T18:35:05.817 回答