基于Windows的USB驱动程序开发

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2工具的选择
在开发工具的选择卜本文选择用Microsoft公司提供的 Windows DDK,Win2000DDK。DDK软件包中包括有关设 备驱动程序开发的文档、编译驱动程序时所需要的头文件和 库文件、调试工具和一些设备驱动程序范例。但是直接使用 DDK开发比较困难,而且设备的驱动程序本身比较复杂,
2010年第26卷第2期
根据设计同标数据来源于知识库,经过数据采集后,在 将这些数据经过数据清理、转换等预处理,并结合Web数 据挖掘技术进行模式发现,并分析和评价。再选取合适的规 则心用到远程教育系统中,构建个性化的远程教育模式。其 中与Web数据挖掘的结合研究是该模型实现的重点。
5结论
将Web数据挖掘技术和远程教育充分的结合,利用现 有的数据资源,运用数据挖掘算法找到课程之间、网络结构 设计等之问的联系。通过研究获得有利的规则并应用到现有 远程教育平台中,完善远程教育模式中出现的不足,使学生 的学爿从单纯的被动信息索取转变为主动信息获取,让远程 教育更加个性化、智能化,发挥出远程教育更大的优势。
端点类型
方向


控制(Contr01)
Out(写)


控制(Con仃01)
In(读)


中断(Interrupt)
Out(写)


中断(Interrupt) In(读)


批量(Bulk)
Out(写)


批量(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程序

获得U sB单劫的GuID 上
取得搜蔷的PID、VID l
程,f八¨赴

瑶擅l设蔷
<芝>
l韧蝻化垃备f屯∞ 叩描叩嘲l 位鲁.最境ItO 1殳置)


赴理



u sBl嬖,;功麓

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
学习园地
微型电脑应用
相关文档
最新文档