2022年用DriverStudio开发WDM型的USB设备驱动程序 .pdf
《2022年用DriverStudio开发WDM型的USB设备驱动程序 .pdf》由会员分享,可在线阅读,更多相关《2022年用DriverStudio开发WDM型的USB设备驱动程序 .pdf(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、用 DriverStudio 开发 WDM 型的 USB 设备驱动程序鲜征征 杨皓 (成都电子科技大学 610054) 摘要 文章介绍了USB 和 WDM 驱动程序的基本概念和结构,结合实例阐述了用NuMega 公司的 DriverStudio 工具包开发 Windows 2000 环境下 WDM USB 设备驱动程序的方法,并给出关键例程主要代码。 关键词 :USBWDM 设备驱动程序 DriverStudio1 引言 随着微机技术水平的日益提高,传统的计算接口已经不能满足当前计算机高速发展的需求,计算机业界迫切需要新的通用型、高速总线接口。通用外设接口标准USB 应运而生。 USB,全称为
2、通用串行总线(Universal Serial Bus ) ,它是 Compaq、IBM 等 PC 大厂商联合开发的一种新型的、基于令牌的、高速的串行总线标准。开发者要设计USB设备接口,就必须首先了解 USB 协议,在此基础上有针对性的开发USB 设备驱动程序。2 USB 简介 在众多的PC 机总线中, USB 以其突出的优点独树一帜:使用方便。支持热拔插,不涉及中断请求(IRQ)冲突等问题,能真正做到“即插即用”。传输速率高。目前的USB 2.0协议速度高达480M bps 。易于扩展。通过使用Hub 扩展可连接多达127个外设。使用灵活。 USB 共有种传输模式:控制(control )
3、、同步( Synchronization)、中断(interrupt )、批量(bulk),以适应不同设备的需要。独立供电。正由于上述优点,开发USB 接口的设备已成为一种发展趋势。一个完整的 USB系统包括主机系统和USB 设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图1 所示: 主机应用软件USB 系统USB 总线接口接口功能USB 逻辑设备USB 总线接口USB 设备物理信息流虚拟(逻辑)信息流数据管道控制管道USB 接口电缆端点 图 1 USB 互连通信模型 USB 总线接口包括USB主控制器和根集线器,其中USB 主控制器负责处理主机与设备之间电气
4、和协议层的互连,根集线器提供 USB 设备连接点。USB 系统使用 USB 主控制器来管理主机和USB 设备之间的数据传输, 另外它也负责管理USB资源,如带宽等。应用 软件不能直接访问USB 设备硬件,而通过USB 系统和 USB 总线接口与USB 设备进行交互。 USB 设备包含一些向主机软件提供一系列USB 设备的特征和能力的信息的设备描述符,用来配置设备和定位USB 设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置(Configuration )来控制其行为。配置是接口( Interface)的集合,接口指出软件应该如何访问硬件。接口又是端点(end
5、point)的集合,每一个与USB交换数据的硬件就为端点, 它是作为通信管道的一个终点。图 1 显示了一个多层次结构的通信模型,它表明了端点和管道所扮演的角色。 3 WDM 驱动程序和USB 驱动程序的分层结构 设备驱动程序实际上是指一系列控制硬件设备的函数,是操作系统中控制和连接硬件的关键模块。它提供连接到计算机的硬件设备的软件接口。 3.1 WDM 驱动程序介绍WDM(Win32 Driver Model)是 Microsoft 公司力推的一种符合Windows2k/XP 下的内核模式驱动程序的分层体系结构的驱动程序模式。 它源于 Windows NT 的分层 32 位设备驱动程序模型,
6、它支持更多的特性, 如即插即用( PnP , Plug and Play ) 、电源管理( PM ,Power Management ) 、Windows 管理诊断( WMI ,Windows Management Instrumentation )和 NT 事件。它为 Windows 操作系统的设备驱动程序提供了统一的框架,在Windows 平台上, WDM 将成为主流的驱动模式。WDM 引入了功能设备对象FDO(Function Device Object) 与物理设备对象PDO(Physical Device Object) 两个新类来描述硬件,一个 PDO 对应一个真实的硬件。一个硬件
7、只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO 和 FDO。 WDM 是通过一个128 位的全局唯一标识符(GUID)实现驱动程序的识别。应用程序与WDM 驱动程序通信时,应用程序将每用户请求形成I/O 请求包(IRP)发送到驱动程序。驱动程序识别出IRP 请求后指挥硬件执行相应操作。 3.2 开发 WDM 驱动程序的方法名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 目前开发 WDM
8、驱动程序的方法有三种: 使用 Microsoft 的 Windows2000 DDK工具开发。使用 KRFTech 公司的 WinDriver 。使用 NuMega 公司的 DriverStudio 。 3.3 WDM 型的 USB 驱动程序结构 对于 USB 设备来说,其WDM 驱动程序分为USB 底层(总线)驱动程序和USB 功能(设备)驱动程序。 USB 驱动程序符合 Windows 2000 下的内核模式驱动程序的分层体系结构,如图2 所示: Win32应用程序USB 设备驱动程序USB 主机控制器USB 总线驱动程序USB 硬件设备I/O 管理器用户模式内核模式I/O 请求包( IR
9、P)软件硬件图 2 WDM型的 USB 驱动程序体系结构 USB 底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现烦琐的底层通信。USB 功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB 底层驱动程序发送包含URB(USB Request Block ,请求块)的IRP,来实现对 USB 设备信息的发送和接收。采用这种分层驱动程序的设计方法有两个优点:(1) 多个 USB 设备可以通过USB 底层驱动程序来协调它们的工作。(2) 编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。USB 驱动程序工作简述如下:当应用程序想对USB 设备进
10、行 I/O 操作,它需调用Windows API函数, I/O 管理器将此请求构造成一个合适的I/O 请求包( IRP)并把它传递给USB 功能驱动程序。USB 功能驱动程序接收到这个IRP 后,根据IPR 中包含的具体操作代码构造相应USB请求块( URB) ,并把此 URB 放到一个新的IRP 中,然后把它传递给USB 底层驱动程序。USB底层驱动程序根据IRP 中所含的 URB 执行相应的操作, 并把操作的结果返回给USB 功能驱动程序。 USB 功能驱动程序接收到此返回的IRP 后,将操作结果通过IRP 返还给 I/O 管理器, 最后 I/O 管理器将此IRP 操作结果传回给应用程序,
11、至此应用程序对设备的一次I/O 操作完成。 4 用 Driver Studio 工具包开发WDM 型的 USB 设备驱动程序 前文所提及的WDM 驱动程序开发方法,笔者都曾尝试过。个人认为用DriverStudio 开发工具包来开发USB 驱动程序行之有效。其中的Driver Wizard 是创建 WDM 驱动程序框架的一个很好的工具,后文将介绍用它来创建USB 设备驱动程序的基本框架。 4.1 搭建开发平台 由于利用 DriverStudio 开发 WDM 驱动程序在搭建开发平台的过程中对软件的安装顺序要求颇高,在开发过程中我也曾因为安装顺序的颠倒而失败。在实践中总结了以下的安装步骤,有必要
12、在此作以介绍。 在已装了 Windows 2000 操作系统的机子上安装 Microsoft Visual C+6.0 。 安装 Win2000 DDK 。 安装 NuMega DriverStudio 2.0 ( or 2.6 ) 驱动程序开发工具包。它包含DriverWorks( 用于开发内核模式WDM 驱动程序 ) 、SoftICE( 用于调试 WDM 驱动程序 )等开发工具。由于DriverWorks 所用的类库是对 DDK 函数的封装,必须在 VC 中编译,创建自己的库文件。设置 DDK 路径。 4.2 利用 DriverStudio 的 DriverWorks 生成 USB 设备驱
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年用DriverStudio开发WDM型的USB设备驱动程序 2022 年用 DriverStudio 开发 WDM USB 设备 驱动程序
限制150内