驱动程序开发入门[关闭]

Posted

技术标签:

【中文标题】驱动程序开发入门[关闭]【英文标题】:Getting Started on Driver Development [closed] 【发布时间】:2010-10-26 22:39:58 【问题描述】:

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

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

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

比利3

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

我还要补充一点,订阅 ntdev 邮件列表 (osronline.com/cf.cfm?PageURL=showlists.CFM?list=NTDEV) 是个好主意,因为它可以成为很好的信息来源,也可以指出常见错误。跨度> 在任何事情之前你必须熟悉操作系统概念,之后你必须熟悉windows操作系统(阅读Mark Russinovich的windows internal)【参考方案2】:

要学好内核开发:

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

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 可能会返回最合适/可访问的 URL)

b.调试技巧很多,我觉得最好的是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 + 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 年到现在,我一直收到我的 - 它是绕地球半圈交付的!

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

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

【讨论】:

可惜我必须支持 Win2k :(【参考方案5】:

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

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

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

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

【讨论】:

以上是关于驱动程序开发入门[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

helloworld-微信小程序开发教程-入门篇

知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

知乎爆赞!4504页《微信小程序零基础入门开发文档》+《小程序实战笔记》,你学废了吗?

WPF & Orchestra 入门 [关闭]