在用户模式下操作核心驱动程序.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在用户模式下操作核心驱动程序.doc

在用户模式下操作核心驱动程序 杜景波 WINDOWS操作系统提供了一套安装驱动程序的API接口,(下图是驱动程序安装API的构架图)使得可以在用户模式下(在WINDOWS NT环境下需要有Administrator权限)对驱动程序的安装、卸载、禁用、启用、改变属性等操作成为可能。但是微软在其MSDN(发行版和在线版)只提供了一些驱动程序信息查询的基本API说明,实际中有用的多数函数没有任何说明,微软的意图时不希望在用户模式下改变操作系统核心模式的特性。 幸运的是,一个第三方网站提供了比MSDN更新、更全的DDK资料。这就是。在此网站上提供了所有SETUP API和CFGMGR API 的说明。 下面是一个即插即用PNP驱动程序安装的过程示意图,具体的请参考OSR网站。 我们的目标不是安装一个新的驱动程序,而是对现有的驱动程序进行控制。那么,这个操作流程又是怎样的呢?我们可以通过对设备管理器(devmgr32.dll)进行静态分析和动态跟踪,以得到它的API调用次序,然后再参考OSR上的DDK资料得到实际可操作的流程。 下面是实际的对驱动程序进行控制的基本流程,一些基本概念这里不再解释。 获得指定Class或全部的设备信息集,这一步可以通过调用SetupDiGetClassDevs或SetupDiGetClassDevsEx完成。 列举出指定Class或全部的设备信息,取得SP_DEVINFO_DATA结构数据,调用SetupDiEnumDeviceInfo完成。 如果需要使用DeviceIoControl对驱动进行控制,则需要以InterfaceClassGuid为参数调用SetupDiEnumDeviceInterface取得设备的接口信息,然后进一步调用SetupoDiEnumDeviceInterfaceDetail以得到设备驱动的符号连接(SymbolLink)该参数需要在CreateFile中使用。 根据设备驱动的FriendlyName或Decription等注册信息定位设备驱动在设备信息集的位置。这一步通过调用SetupDiGetDeviceRegistryProperty来完成 取得指定设备的句柄后,设置PropChangeParams属性,通过调用SetupDiSetClassInstallParams完成 与核心层设备管理器通信,开始控制设备驱动,调用SetupDiCallClassInstaller,参数是所谓的DIF码(比如DIF_PROPERTYCHANGE)。注意,这一步可能需要几秒到十几秒的时间,因为设备驱动要把设备属性改变的消息向所有应用广播,并且要等到所有应用有有应答或超时才返回。 调用SetupDiChangeState函数,结束设备驱动的控制过程。 调用SetupDiDestroyDeviceInfoList,销毁设备信息集。 联想研究院 - 3 -

文档评论(0)

gtez + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档