- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 -
您可能关注的文档
最近下载
- 山东省青岛市2024-2025学年七年级上学期11月期中英语试题.docx VIP
- 灼热丝试验规范.doc VIP
- 不动产登记实务培训教程课件.pptx VIP
- 高中语文统编版必修 下册(2019)_2022届高考语文二轮复习“科幻小说与魔幻现实主义小说”专练 .doc VIP
- 小学语文大阅读《奇妙的数王国》 指导课件.pptx
- 灼热丝试验及标准.docx VIP
- 新能源零基础知识培训课件.pptx VIP
- 2025年上海市时事政治考试试卷带解析(考试直接用).docx VIP
- 2025年上海市时事政治考试试卷带解析含答案(考试直接用).docx VIP
- 高等有机化学 周环反应.ppt VIP
文档评论(0)