Windows驱动开发笔记(一).docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows 驱动开发笔记 (一 ) Windows 驱动开发笔记 (一 )/ 2008-5-3 网络 点击 : [ 评论 ] 文章搜索:点击打包该文章】 文章搜索: 点击打包该文章】 本站开通在线 QQ 讨论群】 Windows 驱动开发笔记 (一 ) Windows 驱动开发较 unix 类的驱动开发要复杂一些。最近, 在学 windows 开发。现在把学到的知识整理一下。 做做笔记。 1. 我使用的资料: 《深入解析 windows 操作系统》 Programming the microsoft windows Driver Model 》 Windows 2000/xp WDM 设备 驱动开发》 武安河著 《Linux 驱动开发》 2. 开发环境 VPC2004 、 Windows2003 、Windows DDK 首先是环境安装。资料很多自己做了。 在 VPC 中安装好 windows2000 。使用 windbg 作为调试工具。 环境安装完成后,就可以一边学习一边做试验了。我比较喜 欢这种方式。 现在开始进入主题。 概念(一):系统模式和应用模式。 系统模式是指工作在一个管理级别的状态。这个状态具有没 有约束的权利。所以这样的代码如果工作不正常就会给系统 带来灾难!驱动程序通常工作在系统级。应用模式(或称用 户模式)。这一模式受到操作系统的管理。一个应用程序崩 溃通常不回给整个系统带来灾难。要正确理解模式的概念。 我的经验是看一看 unix 原理的书。可以较好的理解这一含 义。 Windows 是一个多任务的操作系统。 CPU 的使用是影响系统 性能的重要因素。任务之间要同时进行就必须要有很好的 CPU 调度策略。 Windows 的任务调度给驱动程序的编写带来 了一些麻烦。个驱动程序不能长时间的独占 了一些麻烦。 个驱动程序不能长时间的独占 CPU 时间。 通 常把驱动程序划分成可以被中断的和不可以被中断的。必须 要独占 CPU 的就是不能被中断的。 反之, 是可被中断的。 在 WINDOWS 的系统中通过中断级别 (IRQL) 来标记一段代码 是否可以被中断。如果引入中断就有可能带来重入问题。这 个问题会带来资源的调度问题。这个我不多说了。可以参考 操作系统的书籍。 概念(三):驱动程序的调用。 驱动程序的代码是为应用服务的。所以,他的调用通常都是 被动的。 因为,你不知道用户什么时间使用哪个功能。 所以, 驱动程序的代码多数是些片段(通常就是完成某个功能的函 数)。不象应用程序一样自己知道下一步该干啥了。就会没 有整体感。只要,函数完成一个规定的功能就可以了。不用 管他什么时间被调用。既然是被调用。就要让系统知道你的 函数在哪里。这就需要告诉系统你的函数的指针。这就需要 注册你的函数指针。怎么样注册呢?一种方法是写个固定名 称的函数。就像 C 中的 main 一样。不能瞎起名字。第二种 就是指针登记。这需要填写 DriverObject 这个数据结构的相 应功能的项目。如: DriverObject-gt;MajorFunction[IRP_MJ_PNP]=CharSampleP npDispatch; 这个代码就完成了 CharSamplePnpDispatch 这个函数的注册 了。 概念(四):IRP IRP 是一个不好理解的概念。 IRP 就是 I/O 请求包的称为。 I/O 请求包是什么呢?上面说了驱动是一些等待被调用的独立 函数。用户请求读一个设备时,通常需要多个步骤来完成。 这就要有一个完成该功能的一个函数的调用列表。这个任务 列表就是 IRP 结构的一部分内容。当用户发出一个请求时, 系统就根据请求产生一个 I R P 。然或系统就依照这个 IRP 的 指示去调用相应的函数功能。 概念(五):过滤驱动(过滤层、过滤函数) Windows 的 WDM 模型采用了分层的设计方法。 这样的设计 可以实现灵活的任务组织。上面说了驱动是一些等待被调用 的独立功能函数。一段功能代码只完成有限的功能。在调用 时在进行任务的组合。过滤函数是一些主要功能任务的补充 功能。在一个主要功能前调用的是上层调用。在主要功能后 调用的是下层调用。而且,可以是多层的。如我们写了一个 读 U 盘的驱动。这个 U 盘有一个特殊的功能是对数据进行加 密。我们就可以在读写物理设备前后加入一个过滤驱动完成 这个操作。 文章出处: /course/4_webprogram//asp_netshl/ 200853/112429.html

文档评论(0)

wangyueyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档