2022年USB驱动程序的编写采用WDM驱动程序 .pdf
《2022年USB驱动程序的编写采用WDM驱动程序 .pdf》由会员分享,可在线阅读,更多相关《2022年USB驱动程序的编写采用WDM驱动程序 .pdf(6页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、USB驱动程序的编写采用WDM 驱动程序。WDM 驱动程序是一些例程的集合, 它们被动地存在,等待主机系统软件(PnP 管理器、 I/O 管理器、电源管理器等)来调用或激活它们。具体驱动程序不同,其所包含的例程也不同。一个WDM 驱动程序的基本组成包括以下5 个例程:(1)驱动程序入口例程:处理驱动程序的初始化。(2)即插即用例程:处理PnP 设备的添加、删除和停止。(3)分发例程:处理用户应用程序发出的各种 I/O 请求。(4)电源管理例程:处理电源管理请求。(5)卸载例程:处理驱动程序的卸载。包含文件:ezusbsys.c, ezusbsys.h, ezusbsys.rc, resourc
2、e.h, version.h, makefile,sources) 在 ezusbsys.c 文件中,包含了上述五个例程:ezusbsys.h 中定义了各种数据结构还有各种IOCTL控制码,用于不同数据的读写。Ezusbsys.c 中实现了各种驱动例程。包含了上述五个所说例程外还包含了其他例程,课程从下面的驱动程序入口例程得出一些信息。驱动程序入口例程:NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath ) NTSTATUS ntStatus = STATUS_SUCCESS
3、; PDEVICE_OBJECT deviceObject = NULL; DriverObject-MajorFunctionIRP_MJ_CREATE = Ezusb_Create; DriverObject-MajorFunctionIRP_MJ_CLOSE = Ezusb_Close; / 分发例程DriverObject-MajorFunctionIRP_MJ_DEVICE_CONTROL = Ezusb_ProcessIOCTL; / 即插即用例程DriverObject-MajorFunctionIRP_MJ_PNP = Ezusb_DispatchPnp; / 电源管理例程Dr
4、iverObject-MajorFunctionIRP_MJ_POWER = Ezusb_DispatchPower; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 6 页 - - - - - - - - - / 设备添加例程DriverObject-DriverExtension-AddDevice = Ezusb_PnPAddDevice; / 卸载例程DriverObject-DriverUnload = Ezusb_Unload; return ntStatus
5、; 在原有框架下,主要实现了的代码段在于ezusbsys.c 文件中的如下例程:NTSTATUS Ezusb_Read_Write( IN PDEVICE_OBJECT fdo, IN PIRP Irp ) 在该例程中实现对大数据块的读写控制和实现。具体实现代码在ezusbsys.c 文件中。编译生成驱动文件:最用利用 Windows 2000 DDK工具进行编译。编译 WDM 程序的时候,有两个文件是必须要有的,它们是:1、Makefile :它的内容是:# # DO NOT EDIT THIS FILE! Edit .sources. If you want to add a new so
6、urce # file to this component. This file merely indirects to the real make file # that is shared by all the driver components of the Windows NT DDK # !INCLUDE $(NTMAKEENV)makefile.def 不要编辑这个文件。 事实上每个 WDM 程序所需要的 makefile的内容都是一样的,只需要简单地copy 一个 makefile到新的项目中就可以了2、Sources TARGETNAME=jtag_usb_1.0 TARGET
7、TYPE=DRIVER DRIVERTYPE=WDM TARGETPATH=lib INCLUDES=$(BASEDIR)inc; $(BASEDIR)incddk; TARGETLIBS=$(BASEDIR)lib*freeusbd.lib SOURCES=ezusbsys.c resource.r 这个文件指定了驱动程序目标名是jtag_usb_1.0.sys,是一个 WDM 驱动程序,生成的文件存放在lib目录名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 6 页
8、- - - - - - - - - 中。值得注意的是,“ =”前后不能有空格,否则编译的时候会出错。开始编译:“开始”-“程序”-“Development Kits ”- “Window s 2000 DDK ”-“Checked Build Environment”屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)New or updated MSVC detected. Updating DDK environment,. Setting environment for using Microsoft Visual C+ tools. Starting dirs creation,C
9、ompleted. D:NTDDKcd jtag_usb (回车)D:HelloWDMbuild (回车)如果源代码没有错误的话,生成的jtag_usb_1.0.sys将存放在 lib目录中。安装驱动程序:利用 INF 文件实现驱动的安装。我们一般是采用INF 文件, inf文件如下所示:jtag_usb.inf:Version Signature = $CHICAGO$ Class = USB DriverVer = 11/11/2007,1.00.00 ClassGUID = 36FC9E60-C465-11CF-8056-444553540000 provider = %ECICT% S
10、ourceDisksNames 1=% CYUSB_INSTALL%, SourceDisksFiles jtag_usb_1.0.sys = 1 Manufacturer %MfgName%=ECICT Ecict %VID_0547&PID_1002.DeviceDesc%=CyUsb, USBVID_0547&PID_1002 DestinationDirs CyUsb.Files.Ext = 10,System32Drivers CyUsb.HW AddReg=CyUsb.AddReg.Guid CyUsb.NT CopyFiles=CyUsb.Files.Ext AddReg=CyU
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年USB驱动程序的编写采用WDM驱动程序 2022 USB 驱动程序 编写 采用 WDM
限制150内