基于Windows的USB驱动程序开发
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2工具的选择
在开发工具的选择卜本文选择用Microsoft公司提供的 Windows DDK,Win2000DDK。DDK软件包中包括有关设 备驱动程序开发的文档、编译驱动程序时所需要的头文件和 库文件、调试工具和一些设备驱动程序范例。但是直接使用 DDK开发比较困难,而且设备的驱动程序本身比较复杂,
2010年第26卷第2期
根据设计同标数据来源于知识库,经过数据采集后,在 将这些数据经过数据清理、转换等预处理,并结合Web数 据挖掘技术进行模式发现,并分析和评价。再选取合适的规 则心用到远程教育系统中,构建个性化的远程教育模式。其 中与Web数据挖掘的结合研究是该模型实现的重点。
5结论
将Web数据挖掘技术和远程教育充分的结合,利用现 有的数据资源,运用数据挖掘算法找到课程之间、网络结构 设计等之问的联系。通过研究获得有利的规则并应用到现有 远程教育平台中,完善远程教育模式中出现的不足,使学生 的学爿从单纯的被动信息索取转变为主动信息获取,让远程 教育更加个性化、智能化,发挥出远程教育更大的优势。
端点类型
方向
0
O
控制(Contr01)
Out(写)
O
I
控制(Con仃01)
In(读)
1
2
中断(Interrupt)
Out(写)
l
3
中断(Interrupt) In(读)
2
4
批量(Bulk)
Out(写)
2
5
批量(Bulk)
In(读)
Hale Waihona Puke Baidu3 USB驱动程序的调用
3.1访问设备
应用程序要访问我们的驱动程序,不是通过驱动程序名
称来访问的,而是通过一个128位的全局惟一标示符
(GUID)实现对驱动程序的识别【6】o这个GUID是我们上
面制作驱动的第10步自动产生的应用程序,首先通过调用
GUID来查找驱动程序。驱动程序通过安装文件(.inf)中
PID和VID识别USB设备。通过检查设备的连接状态,来 判断进入下~个环节。(详见图2.)
【4】宋爱波,董逸生,吴文明等.Web挖掘研究综述【J】.计算机 科学,2001,ll(28):15.
【5】李国慧.Web数据挖掘研究【J】.电脑知识与技 术,2008,(4):592.
【6】6王实,高文’李锦涛.Web数据挖掘【J】.计算机科学,2000,4 (27):28-29.
【7】张建宇,叶长青.基于Web的数据挖掘在远程教育个性 化学习授导中的应用【J】.教育技术导刊,2005,(10):29.
Microcomputer Applications VoL 26,No.2,2010
开发应用
微型电脑应甩
文章编号:1007-757X(2010)2-0053-.03
基于Windows的USB驱动程序开发
2010年第26卷第2期
何丽华,梁杰申, 肖楚海
摘要:为了配合USB驱动程序的开发,首先详细阐述了微软所提倡的WDM驱动模型。并以LPC2368为例,阐述了运用
所需的驱动程序。在sys\objchk\i386里就有我们的 MW70A.sys,在sys文件夹下有我们的MW70A.inf文件。 按照LPC2368的同定端点配置(如表1),这里我们使用默认 的端点0和批量传输的断点2实现USB设备的枚举和读写 操作。
表1 LPC2368的端点配置
逻辑端点 物理端点
DDK和DriverStudio工具包,开发USB设备驱动程序的过程和USB驱动程序的调用过程。利用DriverWorks开发驱动程序
快捷方便,必将有着广阔的应用前景。
关键词:WDM驱动模型;DDK;DriverStudio;USB驱动
中图分类号:TP399
文献标志码:B
0引言
Windows已经成为PC的主流操作系统,要想实现在 Windows操作系统下对硬件设备的操作,必须通过在WDM 模型卜.设计驱动程序这个软接口。USB,是Universal Serial 8us(通用串行总线)的简称,为个人电脑与其外围设备之间的 连接提供了一种标准化、单一化的接口lll。它的主要优点体 现在:操作简单,即插即用;成本低廉,携带方便;标准统 一:可以连接多个设备;通信速率快;可靠性高等。鉴于 USB的这些特点,它已经成为PC的首选接口。
·53-
万方数据
MicrocomputerApplications V01.26,No.2,2010
开发应用
微型电脑应用
2010年第26卷第2期
一旦运行错误可能会对整个操作系统产生灾难性的后果。所 以我们选择配合第三方软件来实现。DriverStudio是由 Numega公司出品的专门用于设备驱动程序开发的软件包, 包含VtoolsD、SofllCE和DriverWorks等开发工具。可以实 现驱动制作的“自动化”,安装驱动向导一步一步的生成驱 动。 2.1 基于DDK和DriverStudio制作驱动平台
1 WDM驱动程序模型简介
USB驱动的设计基于WDM(Windows DriVeT Module),即Win32驱动模型。WDM是Microsoft公司 力推的新型驱动模型【21,旨在通过一种灵活的方式简化驱动 程序的开发,在实现对新硬件支持的基础上,减少并降低必 须开发的驱动程序的数量和复杂性。 WDM有两种运行模式,即内核模式和用户模式。在内 核模式下,程序的运行不受操作系统的任何限制,对I/O有 完全的访问权:在用户模式下,操作系统提供某种机制,可 以限制程序的各种I/O操作。 WDM驱动程序采用了分层驱动的方式,不同层之间的 驱动程序完成不同的操作,不同层之间可以互相调用,在 WDM中引入了功能设备对象(FDO Filter Device Object) 和物理设备对象(PDO Project Device Object)来描述硬件。 一个PDO对应~个真实的硬件,一个硬件只允许有一个 PDO但是却可以有多个FDO。在驱动程序中直接操作的不 是硬件设备,而是相应的PDO和FDOpI。在用户态和内核 态通信方面,系统为每一个用户请求打包形成一个IRP结 构,将其发送至驱动程序,并通过识别IRP中的PDO来区 分时发送给哪一个设备的。
首先在PC机上先安装Visual C++,然后安装 Win2KDDK,因为在安装DriverStudio的时候要求指定DDK 的路径。所以安装顺序不能错,安装完成后在VC的界面里 会有DriverStudio菜单项。 2.2编译WDM驱动所用的库嗍
由于DriverWorks所用的类库是对DDK的库函数的封 装,还必须在Visual c抖中编所需要的库文件。本文用的是
参考文献
【1】王开源.高校现代远程教育的发展现状分析与探讨【J】.科 技教育创新,2009,(6):242.
【2】刘彤.Web数据挖掘技术在个性化远程教育平台中的应 用[J】.科技信息,2008,(21):62.
【3】韩家炜,孟小峰,王静,李盛恩.Web挖掘研究【J】.计算 机研究与发展,2001,4(38):406-407.
和驱动程序文件名,取默认值:MW70A;(6)选择驱动程序支持 的功能项,我们选择Read、Write、Device Control、Cleanup、 install;(7)自动产生端点2的Bulk传输读写代码:(8)定义 排队的方式,这里不理会,取默认值。(9)定义应用程序调用 DeviceloControl函数对WDM驱动程序通信的控制命令,并 对应不同的数据存取方式,取默认值;(10)选择是否生成一 个Win32Console应用程序以及Debug跟踪代码等,并产生 了此设备的GUID、供电方式、等。编译这个工程,即得到
DriverStudi02.6,所以先改正它的Bug,然后通过NuMega DriverStudio/Tools/DDK Build Settings进入到DriverStudio 的路径。选择Visual C++的BatchBuiid工具对DriverStudio 安装目录下的vdwlibs.dsw库进行编译,这里我们只需要选 择WDM的库就町以了。 2.3用DriverStudio开发驱动程序
F(!NT SUCCESS(m_ComtructorStatus)) {
Remm;
)
NTSTATUS
RegistryPath);
DriverEntry(PUNICODE_STRING
毫苞 十c++琏JlI程序
l
获得U sB单劫的GuID 上
取得搜蔷的PID、VID l
程,f八¨赴
l
瑶擅l设蔷
<芝>
l韧蝻化垃备f屯∞ 叩描叩嘲l 位鲁.最境ItO 1殳置)
I
I
赴理
I
l
l
u sBl嬖,;功麓
l
3.2程序入口
图2驱动程序调用过程
WDM驱动都有一个主要的初始化入口点,即一个称为
DriverEntry的例程;它有一个标准的函数原型,当WDM驱
动程序被装入时,内核调用DriverEntry例程,来设置主要
的回调例程。在运行中,内核会调用不同的I旦1调例程来完成 不同的任务,主要负责驱动程序的装载、初始化总线上的设
作者简介:何丽华(1984-),女,河南省开封市人,华南理工大学自动化学院,检测与自动化装置硕士研究生,主要研究方向为现场总线及其 应用.广东广州510640:粱杰0(1952-),男,华南理工大学自动化学院副教授,硕士生导师,主要研究方向为现场总线技术及 应用、单片机及嵌入式控制系统、过程控制仪表、集散控制系统,广东广州510640;肖楚泊f(1984-),男,华南理工大学自动化 学院.控制理论与控制工程硕士研究生,主要研究方向是现场总线及其应用,广东广州510640
备、创建FDO、IRP的分类派遣以及卸载本层驱动程序等操 作。
3.3添加设备
大多数的WDM设备对象,都是在调用即插即用管理器
调用AddDevice例程入口时被创建的171。插入新设备后,当
系统找到由安装系统文件所指示的驱动程序时,这个例程被
调用。在此之后,一系列的即插即用IRP被发送到驱动程序, 设备驱动程序可进行相应的功能处理。AddDeviee函数是
做好了前面的配置工作,我们就可以按照DriverStudio 的DriverWorks来一步一步的生成驱动。在利用DriverStudio 2.6的向导DriverWizand完成驱动程序的框架时共有10 个步骤:(1)选择路径并填写工程名,这里的工程名我们命名 为MW70A;(2)选择驱动程序类型WDM;(3)选择USB设备 总线类型,填写PID(产品识别号)和VID(厂商识别号)。 这里根据我们的固件程序我们填写为PID7070,VID0707;(4) 选择I/O请求IRP处理的方式,这里用端点2的In和Out 用Bulk传输。并且将其最大的传输值设为65535,USB的 包最大为“个字节,我们这样设足为了不让PC成为限制 USB速率的瓶颈;(5)选择所生成的驱动程序文件中的类名
图l WDM驱动程序模型 驱动模型如图1所示:中总线驱动程序位于最底层,总 线驱动程序为实际的I/o总线服务,比如USB。微软已经 为Windows操作系统提供了总线驱动程序。一个总线驱动 程序负责的工作有:枚举总线上的设备;向操作系统报告总 线上的动态事件;响应即插即用和电源管理的I/O请求; 管理总线上的设备。总线驱动程序创建一个物理设备对象来 代表它发现的设备。即发现总线上的所有设备和检测设备添 加或者删除,创建物理设备对象PDO; 功能驱动程序处理设备的I/O请求包(IRP),负责创建 功能设备对象FDO;其他层的驱动程序是一些过滤程序 (Filter Driver),对应的设备对象是过滤器设备。安装硬件 设备时操作系统的即插即用管理器按照设备驱动程序的要 求构造设备的对象,首先是最底层的总线驱动程序检测到实 际的物理设备,创建物理设备对象PDO,然后,即插即用 管理器查询注册表,按注册表信息依次加载过滤驱动程序和 功能驱动程序,可生成相应的功能设备对象FDO,并建立 设备对象和驱动程序的对应关系,这样一个完整的设备驱动 程序就建立了14J。
WDM驱动程序的一个特殊函数,PllP管理器为每个设备实
例调 用 该 函 数 。
virtual
NTSTATUS
AddDevic圮(PDEVICE_OBJECT Pdo);
(下转第62页)
·54·
万方数据
MicrocomputerAppfications VoL 26,No.2,2010
学习园地
微型电脑应用
在开发工具的选择卜本文选择用Microsoft公司提供的 Windows DDK,Win2000DDK。DDK软件包中包括有关设 备驱动程序开发的文档、编译驱动程序时所需要的头文件和 库文件、调试工具和一些设备驱动程序范例。但是直接使用 DDK开发比较困难,而且设备的驱动程序本身比较复杂,
2010年第26卷第2期
根据设计同标数据来源于知识库,经过数据采集后,在 将这些数据经过数据清理、转换等预处理,并结合Web数 据挖掘技术进行模式发现,并分析和评价。再选取合适的规 则心用到远程教育系统中,构建个性化的远程教育模式。其 中与Web数据挖掘的结合研究是该模型实现的重点。
5结论
将Web数据挖掘技术和远程教育充分的结合,利用现 有的数据资源,运用数据挖掘算法找到课程之间、网络结构 设计等之问的联系。通过研究获得有利的规则并应用到现有 远程教育平台中,完善远程教育模式中出现的不足,使学生 的学爿从单纯的被动信息索取转变为主动信息获取,让远程 教育更加个性化、智能化,发挥出远程教育更大的优势。
端点类型
方向
0
O
控制(Contr01)
Out(写)
O
I
控制(Con仃01)
In(读)
1
2
中断(Interrupt)
Out(写)
l
3
中断(Interrupt) In(读)
2
4
批量(Bulk)
Out(写)
2
5
批量(Bulk)
In(读)
Hale Waihona Puke Baidu3 USB驱动程序的调用
3.1访问设备
应用程序要访问我们的驱动程序,不是通过驱动程序名
称来访问的,而是通过一个128位的全局惟一标示符
(GUID)实现对驱动程序的识别【6】o这个GUID是我们上
面制作驱动的第10步自动产生的应用程序,首先通过调用
GUID来查找驱动程序。驱动程序通过安装文件(.inf)中
PID和VID识别USB设备。通过检查设备的连接状态,来 判断进入下~个环节。(详见图2.)
【4】宋爱波,董逸生,吴文明等.Web挖掘研究综述【J】.计算机 科学,2001,ll(28):15.
【5】李国慧.Web数据挖掘研究【J】.电脑知识与技 术,2008,(4):592.
【6】6王实,高文’李锦涛.Web数据挖掘【J】.计算机科学,2000,4 (27):28-29.
【7】张建宇,叶长青.基于Web的数据挖掘在远程教育个性 化学习授导中的应用【J】.教育技术导刊,2005,(10):29.
Microcomputer Applications VoL 26,No.2,2010
开发应用
微型电脑应甩
文章编号:1007-757X(2010)2-0053-.03
基于Windows的USB驱动程序开发
2010年第26卷第2期
何丽华,梁杰申, 肖楚海
摘要:为了配合USB驱动程序的开发,首先详细阐述了微软所提倡的WDM驱动模型。并以LPC2368为例,阐述了运用
所需的驱动程序。在sys\objchk\i386里就有我们的 MW70A.sys,在sys文件夹下有我们的MW70A.inf文件。 按照LPC2368的同定端点配置(如表1),这里我们使用默认 的端点0和批量传输的断点2实现USB设备的枚举和读写 操作。
表1 LPC2368的端点配置
逻辑端点 物理端点
DDK和DriverStudio工具包,开发USB设备驱动程序的过程和USB驱动程序的调用过程。利用DriverWorks开发驱动程序
快捷方便,必将有着广阔的应用前景。
关键词:WDM驱动模型;DDK;DriverStudio;USB驱动
中图分类号:TP399
文献标志码:B
0引言
Windows已经成为PC的主流操作系统,要想实现在 Windows操作系统下对硬件设备的操作,必须通过在WDM 模型卜.设计驱动程序这个软接口。USB,是Universal Serial 8us(通用串行总线)的简称,为个人电脑与其外围设备之间的 连接提供了一种标准化、单一化的接口lll。它的主要优点体 现在:操作简单,即插即用;成本低廉,携带方便;标准统 一:可以连接多个设备;通信速率快;可靠性高等。鉴于 USB的这些特点,它已经成为PC的首选接口。
·53-
万方数据
MicrocomputerApplications V01.26,No.2,2010
开发应用
微型电脑应用
2010年第26卷第2期
一旦运行错误可能会对整个操作系统产生灾难性的后果。所 以我们选择配合第三方软件来实现。DriverStudio是由 Numega公司出品的专门用于设备驱动程序开发的软件包, 包含VtoolsD、SofllCE和DriverWorks等开发工具。可以实 现驱动制作的“自动化”,安装驱动向导一步一步的生成驱 动。 2.1 基于DDK和DriverStudio制作驱动平台
1 WDM驱动程序模型简介
USB驱动的设计基于WDM(Windows DriVeT Module),即Win32驱动模型。WDM是Microsoft公司 力推的新型驱动模型【21,旨在通过一种灵活的方式简化驱动 程序的开发,在实现对新硬件支持的基础上,减少并降低必 须开发的驱动程序的数量和复杂性。 WDM有两种运行模式,即内核模式和用户模式。在内 核模式下,程序的运行不受操作系统的任何限制,对I/O有 完全的访问权:在用户模式下,操作系统提供某种机制,可 以限制程序的各种I/O操作。 WDM驱动程序采用了分层驱动的方式,不同层之间的 驱动程序完成不同的操作,不同层之间可以互相调用,在 WDM中引入了功能设备对象(FDO Filter Device Object) 和物理设备对象(PDO Project Device Object)来描述硬件。 一个PDO对应~个真实的硬件,一个硬件只允许有一个 PDO但是却可以有多个FDO。在驱动程序中直接操作的不 是硬件设备,而是相应的PDO和FDOpI。在用户态和内核 态通信方面,系统为每一个用户请求打包形成一个IRP结 构,将其发送至驱动程序,并通过识别IRP中的PDO来区 分时发送给哪一个设备的。
首先在PC机上先安装Visual C++,然后安装 Win2KDDK,因为在安装DriverStudio的时候要求指定DDK 的路径。所以安装顺序不能错,安装完成后在VC的界面里 会有DriverStudio菜单项。 2.2编译WDM驱动所用的库嗍
由于DriverWorks所用的类库是对DDK的库函数的封 装,还必须在Visual c抖中编所需要的库文件。本文用的是
参考文献
【1】王开源.高校现代远程教育的发展现状分析与探讨【J】.科 技教育创新,2009,(6):242.
【2】刘彤.Web数据挖掘技术在个性化远程教育平台中的应 用[J】.科技信息,2008,(21):62.
【3】韩家炜,孟小峰,王静,李盛恩.Web挖掘研究【J】.计算 机研究与发展,2001,4(38):406-407.
和驱动程序文件名,取默认值:MW70A;(6)选择驱动程序支持 的功能项,我们选择Read、Write、Device Control、Cleanup、 install;(7)自动产生端点2的Bulk传输读写代码:(8)定义 排队的方式,这里不理会,取默认值。(9)定义应用程序调用 DeviceloControl函数对WDM驱动程序通信的控制命令,并 对应不同的数据存取方式,取默认值;(10)选择是否生成一 个Win32Console应用程序以及Debug跟踪代码等,并产生 了此设备的GUID、供电方式、等。编译这个工程,即得到
DriverStudi02.6,所以先改正它的Bug,然后通过NuMega DriverStudio/Tools/DDK Build Settings进入到DriverStudio 的路径。选择Visual C++的BatchBuiid工具对DriverStudio 安装目录下的vdwlibs.dsw库进行编译,这里我们只需要选 择WDM的库就町以了。 2.3用DriverStudio开发驱动程序
F(!NT SUCCESS(m_ComtructorStatus)) {
Remm;
)
NTSTATUS
RegistryPath);
DriverEntry(PUNICODE_STRING
毫苞 十c++琏JlI程序
l
获得U sB单劫的GuID 上
取得搜蔷的PID、VID l
程,f八¨赴
l
瑶擅l设蔷
<芝>
l韧蝻化垃备f屯∞ 叩描叩嘲l 位鲁.最境ItO 1殳置)
I
I
赴理
I
l
l
u sBl嬖,;功麓
l
3.2程序入口
图2驱动程序调用过程
WDM驱动都有一个主要的初始化入口点,即一个称为
DriverEntry的例程;它有一个标准的函数原型,当WDM驱
动程序被装入时,内核调用DriverEntry例程,来设置主要
的回调例程。在运行中,内核会调用不同的I旦1调例程来完成 不同的任务,主要负责驱动程序的装载、初始化总线上的设
作者简介:何丽华(1984-),女,河南省开封市人,华南理工大学自动化学院,检测与自动化装置硕士研究生,主要研究方向为现场总线及其 应用.广东广州510640:粱杰0(1952-),男,华南理工大学自动化学院副教授,硕士生导师,主要研究方向为现场总线技术及 应用、单片机及嵌入式控制系统、过程控制仪表、集散控制系统,广东广州510640;肖楚泊f(1984-),男,华南理工大学自动化 学院.控制理论与控制工程硕士研究生,主要研究方向是现场总线及其应用,广东广州510640
备、创建FDO、IRP的分类派遣以及卸载本层驱动程序等操 作。
3.3添加设备
大多数的WDM设备对象,都是在调用即插即用管理器
调用AddDevice例程入口时被创建的171。插入新设备后,当
系统找到由安装系统文件所指示的驱动程序时,这个例程被
调用。在此之后,一系列的即插即用IRP被发送到驱动程序, 设备驱动程序可进行相应的功能处理。AddDeviee函数是
做好了前面的配置工作,我们就可以按照DriverStudio 的DriverWorks来一步一步的生成驱动。在利用DriverStudio 2.6的向导DriverWizand完成驱动程序的框架时共有10 个步骤:(1)选择路径并填写工程名,这里的工程名我们命名 为MW70A;(2)选择驱动程序类型WDM;(3)选择USB设备 总线类型,填写PID(产品识别号)和VID(厂商识别号)。 这里根据我们的固件程序我们填写为PID7070,VID0707;(4) 选择I/O请求IRP处理的方式,这里用端点2的In和Out 用Bulk传输。并且将其最大的传输值设为65535,USB的 包最大为“个字节,我们这样设足为了不让PC成为限制 USB速率的瓶颈;(5)选择所生成的驱动程序文件中的类名
图l WDM驱动程序模型 驱动模型如图1所示:中总线驱动程序位于最底层,总 线驱动程序为实际的I/o总线服务,比如USB。微软已经 为Windows操作系统提供了总线驱动程序。一个总线驱动 程序负责的工作有:枚举总线上的设备;向操作系统报告总 线上的动态事件;响应即插即用和电源管理的I/O请求; 管理总线上的设备。总线驱动程序创建一个物理设备对象来 代表它发现的设备。即发现总线上的所有设备和检测设备添 加或者删除,创建物理设备对象PDO; 功能驱动程序处理设备的I/O请求包(IRP),负责创建 功能设备对象FDO;其他层的驱动程序是一些过滤程序 (Filter Driver),对应的设备对象是过滤器设备。安装硬件 设备时操作系统的即插即用管理器按照设备驱动程序的要 求构造设备的对象,首先是最底层的总线驱动程序检测到实 际的物理设备,创建物理设备对象PDO,然后,即插即用 管理器查询注册表,按注册表信息依次加载过滤驱动程序和 功能驱动程序,可生成相应的功能设备对象FDO,并建立 设备对象和驱动程序的对应关系,这样一个完整的设备驱动 程序就建立了14J。
WDM驱动程序的一个特殊函数,PllP管理器为每个设备实
例调 用 该 函 数 。
virtual
NTSTATUS
AddDevic圮(PDEVICE_OBJECT Pdo);
(下转第62页)
·54·
万方数据
MicrocomputerAppfications VoL 26,No.2,2010
学习园地
微型电脑应用