- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
EZ_USB General Purpose Driver specific(通用驱动程序说明)
1.Introduction
EZ_USB 通用驱动程序(本文章中称为GPD或者是EZ_USB GPD)是用来和基于EZ_USB外设接口的通用设备驱动程序。驱动程序提供和公共USB设备请求和数据传输的用户态接口。驱动服务于两种目的。首先,它帮助设备和软件的开发者。配合EZ_USB Control Panel,它允许开发者测试他的设备的执行标准USB设备请求和数据传输的能力。其次,它为USB设备开发者提供例程。使用通用驱动程序作为起始点,可以创建一个用户驱动程序和很小的驱动程序。
1.1
本文的目的是从一个用户态应用的角度来描述EZ_USB GPD 接口。用户态的应用是一种像Word、IE、和Photoshop一样的程序。用户态的应用程序可以访问很大范围的操作系统服务。他们可以访问文件,操作数据并且可以通过Windows GUI和用户交互。然而,用户态应用不允许直接访问硬件。为了访问硬件,用户态的应用必须通过一个中间的代理,设备驱动开发工具。设备驱动典型的运行在一个称为“核心模式” 的授权模式。EZ_USB GPD 是一个核心模式设备驱动。
对于那些想知道核心模式USB驱动程序的内部工作有兴趣的人,EZ_USB Development Kit 提供EZ_USB的源程序代码。
1.2
本文的读者应是那些需要使用EZ_USB GPD 写用来和他们自己的USB设备通讯的客户应用程序的开发者。读者应该对C 编程非常熟悉 并且对USB非常了解。本文的最后附录提供了更深信息的源程序。
3 EZ_USB 接口支持
EZ_USB GPD 能够在一个时刻和单一设备接口通讯。选择设备的任何接口/备选设置是可以的,但是,在多接口设备上同时和多个接口通讯是不可能的。支持多接口设备将要使用驱动的多实例来处理。这在微软(Microsoft)的关于USB PNP(plug and play USB多配置驱动)中有暗示。在枚举阶段,EZ_USB GPD 将会选择接口0的备选设置0。
2.建立EZ_USB GPD
建立GDP需要微软的WDM DDK(Windows 98 DDK 或者是Windows 2000 Beta DDK)和微软的Visual C++5.0。DDK可以在微软的网页上下载。
如果你只打算修改EZ_USB GPD,那么WDM DDK就够用了。如果你没有必要修改驱动,那么在文件ezusb.sys中可以得到编译形式。
对于用户态的应用,你可以使用任何支持Win 32 功能的编译工具CreateFile()和DeviceIoControl()。所提供的例程就是运行在Microsoft Visual C++5.0 下。
3. 加载EZ_USB GPD
本章将要描述一个USB设备驱动是如何加载的基本原理,和为你的设备加载EZ_USB GPD的规范。一般来说,要想得到详细的说明,应该查阅Microsoft 的文档。
3.1 INF 文件基础
所有的USB设备在设备描述符中都有一个厂商ID(VID)和产品ID(PID)来向Windows 报告。Windows 使用VID和PID来寻找匹配的设备驱动程序。INF文件就是连接VID和PID和指定的驱动程序的连接。
.inf 文件
; FILE: EZUSB.INF
;
[Version]
signature=$CHICAGO$
Class=USB
Provider=%Anchor%
LayoutFile=LAYOUT.INF
[Manufacturer]
%Anchor%=Anchor
[PreCopySection]
HKR,,NoSetupUI,,1
[DestinationDirs]
DefaultDestDir=11
[Anchor]
%USB\VID_0547PID_0080.DeviceDesc%=EZUSBDEV, USB\VID_0547PID_0080
%USB\VID_0547PID_0080.DeviceDesc%=EZUSBDEV, USB\VID_0547PID_1002
[ControlFlags]
ExcludeFromSelect=* ; removes all devices here from the device installer list
[EZUSBDEV]
AddReg=EZUSBDEV.AddReg
[EZUSBDEV.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,ezusb.sys
[Strings]
Anchor=AnchorChips
USB\VID_0547PID_0080.DeviceDesc=An
文档评论(0)