usb驱动开发工具比较_第1页
usb驱动开发工具比较_第2页
usb驱动开发工具比较_第3页
usb驱动开发工具比较_第4页
usb驱动开发工具比较_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、usb驱动开发工具比较USB驱动开发的主要工具:DDK(DDK是DeviceDevelopmentKit,设备开发包的意思)、WinDriver、DriverStudio三种(不知道是否适合于其它驱动的开发)。比较如下:用WinDriver和DriverStudio开发驱动比DDK简单容易上手,但WinDriver开发驱动没法脱离WinDriver环境不好发布,所以还是用DriverStudio比较好。下面内容转自网络:Microsoft公司提供的WindowsDDK(DeviceDriverKit)。它有Windows98DDK和Windows2000DDK两个版本。Windows98DDK

2、能够开发Windows95/98/Me/NT下的VxD、KMD和WDM驱动程序。Windows2000DDK能够开发Windows98/Me/NT/2000下的KMD和WDM驱动程序。由于DDK基于汇编语言的编程方式和内核模式的调用,对没有深厚的OS原理和编程水平的人员来说,任务相当艰巨。NuMega公司提供的DriverStudio,它是一个大的开发工具包,包含VtoolsD、SoftICE和DriverWorks等开发工具。VtoolsD开发包提供了对VxD编程的C/C+类库支持,利用VtoolsD中的QuickVxD工具可以快速生成VxD的C/C+代码框架,开发者可以在此基础上根据各自的

3、需要添加自己的代码。DriverWorks用于开发KMD和WDM驱动程序,并且对DDK函数进行了类的封装,从而为开发WindowsNT、Windows2000和Widnwos98WDM设备驱动程序提供了一个自动化的方法。DriverWorks,提供了VC+下的开发向导DriverWizard,按照它的提示可以迅速地生成驱动程序的框架。这个框架结构提供可以正确执行WDM动态环境中IRP的请求,而且,也包含用于简化系统提供的标准类驱动程序(如HID、流)和总线驱动程序(如PCI和USB)接口的类等。总之,利用DriverWorks开发WDM驱动程序,可以大大简化开发人员的工作量、缩短开发周期以及降

4、低开发驱动程序的难度。1用DriverWorks开发WDM型USB设备驱动程序要想使用DriverWorks,必须先安装以下软件:DriverStudio2.5,VisualStudio6.0,以及Windows2000DDK。由于DriverWorks所用的类库是对DDK的库函数的封装,还必须在VisualC+中编译需要的库文件3,下面介绍怎样在VC环境中创建自己的库文件。(1)启动VisualC+。(2)选择菜单FileOpenWorkspace。打开位于DriverStudioDriverWorksSourcevdwlibs.dsw的工作空间文件。(3)选择菜单BuildBatchBui

5、ld,在弹出的对话框架中选择你想编译的库。点击对话框中的Build即可编译你选择的库。下面就通过一个例子来说明利用DriverWorks开发USB设备驱动程序的方法。这个USB设备有3个双向端点,每个端点的配置如下:端点类型地址缓冲区(字节)0IN/OUT控制(Control)0 x80/0 x0016/161IN/OUT块(Bulk)0 x81/0 x0116/162IN/OUT块(Bulk)0 x82/0 x0264/64驱动程序需要实现的功能就是控制设备上的LED灯的亮和灭,以及通过端点2对设备进行读写。首先,通过快捷方式“SetupDDKandStartMSVC”来启动VCIDE。这个

6、快捷方式所指向的程序,会进行一些必要的设置,然后再启动VCIDE,这样我们的程序就可以使用DDK和DW的头文件和库了。从VCIDE的菜单“DriverStudio”中选择“DriverWizard”,之后按对话框的提示填写项目名称及所在目录。并按向导选择驱动程序类型为WDM,总线类型为USB。按端点的配置表进行端点的设置。由于在USB中规定端点0是必须存在的,所以我们只需对端点1和端点2进行定义即可。(4)选择端点2产生BULKRead及BULKWrite的代码,DriverWorks会自动产生对端点2的读写代码,不用修改,就可以直接使用。增加一个IOCTL来控制USB设备的LED灯。IOCT

7、L代码名称取为TEST_IOCTL_LED,其他值默认。最后按下“Finish”按钮,就结束了Wizard。在此过程中只针对需要修改的步骤进行了说明,未加说明的部分均可直接按“Next”按钮。到此,我们已经创建好了一个基本的驱动程序,其中的块读写代码都由DriverWorks自动生成,无需另外加代码,只有厂商请求通过Ioctl来进行,控制LED灯的亮灭。代码如下:NTSTATUSTESTDevice:TEST_IOCTL_LED_Handler(KIrpI)NTSTATUSstatus=STATUS_SUCCESS;tEnteringTESTDevice:TEST_IOCTL_LED_Hand

8、ler,IEOL;/TODO:Verifythattheinputparametersarecorrect/Ifnot,returnSTATUS_INVALID_PARAMETERif(I.IoctlOutputBufferSize()|!I.IoctlBuffer()|(I.IoctlInputBufferSizer()!=sizeof(UCHAR)/TODO:HandlethetheTEST_IOCTL_LEDrequest,or/defertheprocessingoftheIRP(i.e.byqueuing)andset/statustoSTATUS_PENDING.PURBpUrb=

9、m_Lower.BuildVendorRequest(NULL,/transferbuffer0,/transferbuffersize0,/requestreservedbits(UCHAR)(*PUCHAR)I.IoctlBuffer(),/request.1=LED_ON,0=LED_OFF0/Value);/transmitstatus=m_Lower.SubmitUrb(pUrb,NULL,Null,5000L);/TODO:Assumingthattherequestwashandledhere.SetI.Information/toindicatehowmuchdatatocop

10、ybacktotheuser.I.Information()=0;I.Status()=status;returnstatus;这个函数控制LED灯,它是通过USBVendorRequest来向设备传送的。其中request=1的时候表示让LED亮,request=0的时候让LED来。它通过DeviceloControl由上层应用程序传下来。现在,驱动程序完成了,为确保最后生成的USB驱动程序能编译成功,一定要注意设置DriverWorks中的DriverBuildSetting(在VC+6.0的菜单中)中的basedir和CPU等项。设置好后,选择“Build/BatchBuild”,在弹出

11、的对话框中进行正确的选择,之后按下”Rebuild”按钮,稍等片刻即可生成最终的.sys驱动程序。结束语WDM作为一种设备驱动程序模型,自Windows2000以来已成为一种统一的模式。同时USB技术得到广泛应用,进行USB设备驱动程序的开发成为必不可少的技术环节,而使用DriverWorks开发USB设备驱动程序,简单方便。文件过滤驱动程序开发环境配置许多驱动程序开发都将环境架设在VC上,可是偶的本本上好不容易安了个vs2008,舍不得删啊,因此毅然选择vs2008,抛弃vc。要开发驱动,DDK是少不了的,但是现在操作系统日新月异,老DDK是不能适应国家下一个“五十年计划”滴于是,我又一次毅

12、然决然选择WDK代替DDK,呵呵,还是跟着微软大虾们的足迹,往前看吧先弄明白windows驱动的前因后果吧,这是选择开发环境和开发过程的基础首先,开发下的驱动程序,需要一个专门的开发包,就像开发程序,需要一个D开发应用程序,需要,现在开发下的驱动程序,我们们需要一个。开发驱动的工具包()和()的区别:下,驱动模型为:,相关资料可以看编程高手箴言的前几个章节,里面有很详细的介绍,虽然这个东西已经过时,但大概看看还是会增长见识的。下,采用驱动模型(iV开发的驱动开发包为:。及以后版本,采用了驱动模型(),对应的开发包:W,。其实可以看做是的升级版本,现在一般的是包含以前相关的功能,现在下也可以用开

13、发驱动,能编译出的各种驱动。驱动文件扩展名为:,和驱动文件扩展名为:面将整个环境搭建过程描述如下:W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W*|*|*|*|*|*|*W?w?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?W?WC*|*|*|*|*|*|*|*|*|*|*|*|*|*|耳v耳?斗*|*|*|*选项”弹出”选项”窗口,选择项目和解决方案”-”VC+目录,显示以下内容的目录可执行文件中添加C:WinDDKC:WinDDK7600.16385.0binx86x86C:WinDDK760

14、0.16385.0binx86C:WinDDK7600.16385.0toolspfdbinbinx86包含文件中添加C:WinDDK7600.16385.0incC:WinDDK7600.16385.0incapiC:WinDDK7600.16385.0inccrtC:WinDDK7600.16385.0incddk引用文件中添加C:WinDDK7600.16385.0libwxpi386库文件中添加C:WinDDK7600.16385.0libC:WinDDK7600.16385.0libwxpi386源文件中添加C:WinDDK7600.16385.0src以上添加完毕直接按确定关闭选项

15、对话框如果编译出现C2144错误的时候,请把以上添加的文件向前移动(就是点击选项对话框中的向上的箭头按钮)2、设置虚拟机的可调模式:1)打开boot文件的方式可以选用以下两种:1我的电脑f属性f高级f“启动和故障恢复编辑。2运行f“msconfigfboot.iniboot.ini的修改如下:在虚拟机中,编辑boot.ini文件,在末尾添加一行:multi(0)disk(0)rdisk(0)partition(1)NDOWS=Microsoftindowsrofess/noexecute=optin/fastdetect/debug/debugport=com1/baudrate=1152)保

16、存后poweroff虚拟系统。在左边栏中选择ditvirtalmachinesettingsadderialortutput,t此name现三个文本框,依次填入:.picom_l”和“Thisendistheserver.”,第个修改为“Theotherendisanapplication.”)保存。配置真实机。创建windbg.exe在桌面的快捷方式,属性目标-C:WIwNinDdbDg.Kexe“.-.b-kcom:port=.pipecom_1,baud=115200,pipe)可以选择配置真实机串口:我的电脑管理设备管理器端口comcoml属性端口设置每位秒数11启动windbg.ex

17、e在filesmbolfilepa添加微软官方符号表download以及你自己工程中生成ss文件的目录(就是你要编译的驱动服务文件的目录,需要事先生成要调试的驱动服务.ss文件,并将.ss文件拷贝到虚拟机中),我的是proectsTestsfirstobch_wxp_xi两路径用分号分隔。勾选reload)启动虚拟机,将s文件提供的服务用srvinstw.exe安装到虚拟机中。安装中,选手动,T驱动不用填重启虚拟机,选择调试模式,启动真实机桌面设置过参数的windbg快捷方式,此时如果出现inDbg:6.1oldnotstartkerneldebuggingusingcom:pipe,port=.pipevpcdebug,resets=10parame

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论