Chinaunix首页 | 论坛 | 博客
  • 博客访问: 14523752
  • 博文数量: 5645
  • 博客积分: 9880
  • 博客等级: 中将
  • 技术积分: 68081
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-28 13:35
文章分类

全部博文(5645)

文章存档

2008年(5645)

我的朋友

分类:

2008-04-28 21:04:49

下载本文示例代码
  摘要: 文章介绍了USB和WDM驱动程序的基本概念和结构,结合实例阐述了用NuMega 公司的DriverStudio工具包开发Windows 2000环境下WDM USB设备驱动程序的方法,并给出关键例程主要代码。   关键词:USB WDM 设备驱动程序 DriverStudio   引言   随着微机技术水平的日益提高,传统的计算接口已经不能满足当前计算机高速发展的需求,计算机业界迫切需要新的通用型、高速总线接口。通用外设接口标准USB应运而生。USB,全称为通用串行总线(Universal Serial Bus),它是Compaq、IBM等PC大厂商联合开发的一种新型的、基于令牌的、高速的串行总线标准。开发者要设计USB设备接口,就必须首先了解USB协议,在此基础上有针对性的开发USB设备驱动程序。  USB简介  在众多的PC机总线中,USB以其突出的优点独树一帜:① 使用方便。支持热拔插,不涉及中断请求(IRQ)冲突等问题,能真正做到“即插即用”。②传输速率高。目前的USB 2.0协议速度高达480Mbps 。③易于扩展。通过使用Hub扩展可连接多达127个外设。④使用灵活。USB共有4种传输模式:控制(control)、同步(Synchronization)、中断(interrupt)、批量(bulk),以适应不同设备的需要。⑤独立供电。正由于上述优点,开发USB接口的设备已成为一种发展趋势。  一个完整的USB系统包括主机系统和USB设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图1所示: 图1 USB 互连通信模型  USB总线接口包括USB主控制器和根集线器,其中USB主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB设备连接点。USB系统使用USB主控制器来管理主机和USB设备之间的数据传输,另外它也负责管理USB资源,如带宽等。应用软件不能直接访问USB设备硬件,而通过USB系统和USB总线接口与USB设备进行交互。  USB设备包含一些向主机软件提供一系列USB设备的特征和能力的信息的设备描述符,用来配置设备和定位USB设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置(Configuration)来控制其行为。配置是接口(Interface)的集合,接口指出软件应该如何访问硬件。接口又是端点(endpoint)的集合,每一个与USB交换数据的硬件就为端点,它是作为通信管道的一个终点。图1显示了一个多层次结构的通信模型,它表明了端点和管道所扮演的角色。  WDM驱动程序和USB驱动程序的分层结构  设备驱动程序实际上是指一系列控制硬件设备的函数,是操作系统中控制和连接硬件的关键模块。它提供连接到计算机的硬件设备的软件接口。  1、WDM 驱动程序介绍  WDM(Win32 Driver Model)是Microsoft公司力推的一种符合Windows2k/XP下的内核模式驱动程序的分层体系结构的驱动程序模式。它源于 Windows NT的分层32位设备驱动程序模型,它支持更多的特性,如即插即用( 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对应一个真实的硬件。一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO和FDO。  WDM是通过一个128位的全局唯一标识符(GUID)实现驱动程序的识别。应用程序与WDM驱动程序通信时,应用程序将每用户请求形成I/O请求包(IRP)发送到驱动程序。驱动程序识别出IRP请求后指挥硬件执行相应操作。  2、开发WDM驱动程序的方法  目前开发WDM驱动程序的方法有三种:  ①使用 Microsoft 的 Windows2000 DDK工具开发。②使用 KRFTech 公司的 WinDriver 。③使用 NuMega 公司的 DriverStudio 。  3、WDM型的USB驱动程序结构  对于USB设备来说,其WDM驱动程序分为USB底层(总线)驱动程序和USB功能(设备)驱动程序。USB驱动程序符合Windows 2000下的内核模式驱动程序的分层体系结构,如图2所示: 图2 WDM型的USB驱动程序体系结构  USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现烦琐的底层通信。USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含URB(USB Request Block,请求块)的IRP,来实现对USB设备信息的发送和接收。采用这种分层驱动程序的设计方法有两个优点:(1)多个USB设备可以通过USB底层驱动程序来协调它们的工作。(2)编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。  USB驱动程序工作简述如下:当应用程序想对USB设备进行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操作结果传回给应用程序,至此应用程序对设备的一次I/O操作完成。共2页。 1 2 :   摘要: 文章介绍了USB和WDM驱动程序的基本概念和结构,结合实例阐述了用NuMega 公司的DriverStudio工具包开发Windows 2000环境下WDM USB设备驱动程序的方法,并给出关键例程主要代码。   关键词:USB WDM 设备驱动程序 DriverStudio   引言   随着微机技术水平的日益提高,传统的计算接口已经不能满足当前计算机高速发展的需求,计算机业界迫切需要新的通用型、高速总线接口。通用外设接口标准USB应运而生。USB,全称为通用串行总线(Universal Serial Bus),它是Compaq、IBM等PC大厂商联合开发的一种新型的、基于令牌的、高速的串行总线标准。开发者要设计USB设备接口,就必须首先了解USB协议,在此基础上有针对性的开发USB设备驱动程序。  USB简介  在众多的PC机总线中,USB以其突出的优点独树一帜:① 使用方便。支持热拔插,不涉及中断请求(IRQ)冲突等问题,能真正做到“即插即用”。②传输速率高。目前的USB 2.0协议速度高达480Mbps 。③易于扩展。通过使用Hub扩展可连接多达127个外设。④使用灵活。USB共有4种传输模式:控制(control)、同步(Synchronization)、中断(interrupt)、批量(bulk),以适应不同设备的需要。⑤独立供电。正由于上述优点,开发USB接口的设备已成为一种发展趋势。  一个完整的USB系统包括主机系统和USB设备。所有的传输事务都是由主机发起的。一个主机系统又可以分为以下几个层次结构,如图1所示: 图1 USB 互连通信模型  USB总线接口包括USB主控制器和根集线器,其中USB主控制器负责处理主机与设备之间电气和协议层的互连,根集线器提供USB设备连接点。USB系统使用USB主控制器来管理主机和USB设备之间的数据传输,另外它也负责管理USB资源,如带宽等。应用软件不能直接访问USB设备硬件,而通过USB系统和USB总线接口与USB设备进行交互。  USB设备包含一些向主机软件提供一系列USB设备的特征和能力的信息的设备描述符,用来配置设备和定位USB设备驱动程序。这些信息确保了主机以正确的方式访问设备。通常,一个设备有一个或多个配置(Configuration)来控制其行为。配置是接口(Interface)的集合,接口指出软件应该如何访问硬件。接口又是端点(endpoint)的集合,每一个与USB交换数据的硬件就为端点,它是作为通信管道的一个终点。图1显示了一个多层次结构的通信模型,它表明了端点和管道所扮演的角色。  WDM驱动程序和USB驱动程序的分层结构  设备驱动程序实际上是指一系列控制硬件设备的函数,是操作系统中控制和连接硬件的关键模块。它提供连接到计算机的硬件设备的软件接口。  1、WDM 驱动程序介绍  WDM(Win32 Driver Model)是Microsoft公司力推的一种符合Windows2k/XP下的内核模式驱动程序的分层体系结构的驱动程序模式。它源于 Windows NT的分层32位设备驱动程序模型,它支持更多的特性,如即插即用( 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对应一个真实的硬件。一个硬件只允许有一个PDO,却可以拥有多个FDO,在驱动程序中直接操作的不是硬件而是相应的PDO和FDO。  WDM是通过一个128位的全局唯一标识符(GUID)实现驱动程序的识别。应用程序与WDM驱动程序通信时,应用程序将每用户请求形成I/O请求包(IRP)发送到驱动程序。驱动程序识别出IRP请求后指挥硬件执行相应操作。  2、开发WDM驱动程序的方法  目前开发WDM驱动程序的方法有三种:  ①使用 Microsoft 的 Windows2000 DDK工具开发。②使用 KRFTech 公司的 WinDriver 。③使用 NuMega 公司的 DriverStudio 。  3、WDM型的USB驱动程序结构  对于USB设备来说,其WDM驱动程序分为USB底层(总线)驱动程序和USB功能(设备)驱动程序。USB驱动程序符合Windows 2000下的内核模式驱动程序的分层体系结构,如图2所示: 图2 WDM型的USB驱动程序体系结构  USB底层驱动程序由操作系统提供,负责与实际的硬件打交道,实现烦琐的底层通信。USB功能驱动程序由设备开发者编写,不对实际的硬件进行操作,而是通过向USB底层驱动程序发送包含URB(USB Request Block,请求块)的IRP,来实现对USB设备信息的发送和接收。采用这种分层驱动程序的设计方法有两个优点:(1)多个USB设备可以通过USB底层驱动程序来协调它们的工作。(2)编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。  USB驱动程序工作简述如下:当应用程序想对USB设备进行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操作结果传回给应用程序,至此应用程序对设备的一次I/O操作完成。共2页。 1 2 : 下载本文示例代码


开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序开发WDM型的USB设备驱动程序
阅读(89) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~