USB驱动程序的编写采用WDM驱动程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

U S B驱动程序的编写采用W D M驱动程序

Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

USB驱动程序的编写采用WDM 驱动程序。WDM 驱动程序是一些例程的集合,它们被动地存在,等待主机系

统软件(PnP 管理器、I/O 管理器、电源管理器等)来调用或激活它们。具体驱动程序不同,其所包含

的例程也不同。一个WDM 驱动程序的基本组成包括以下5个例程:(1)驱动程序入口例程:处理驱动程序的初始化。

(2)即插即用例程:处理PnP 设备的添加、删除和停止。

(3)分发例程:处理用户应用程序发出的各种 I/O 请求。

(4)电源管理例程:处理电源管理请求。

(5)卸载例程:处理驱动程序的卸载。

包含文件:

, ,

, , , makefile,sources)

在文件中,包含了上述五个例程:

中定义了各种数据结构还有各种IOCTL控制码,用于不同数据的读写。

中实现了各种驱动例程。包含了上述五个所说例程外还包含了其他例程,课程从下面的驱动

程序入口例程得出一些信息。

驱动程序入口例程:

NTSTATUS

DriverEntry(

IN PDRIVER_OBJECT DriverObject,

IN PUNICODE_STRING RegistryPath

)

{

NTSTATUS ntStatus = STATUS_SUCCESS;

PDEVICE_OBJECT deviceObject = NULL;

DriverObject->MajorFunction[IRP_MJ_CREATE] = Ezusb_Create; DriverObject->MajorFunction[IRP_MJ_CLOSE] = Ezusb_Close; ources. If you want to add a new source # 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) 不要编辑这个文件。事实上每个WDM程序所需要的makefile的内容都是一样的,只需要简单地copy

一个makefile到新的项目中就可以了

2、Sources

TARGETNAME= TARGETTYPE=DRIVER DRIVERTYPE=WDM TARGETPATH=lib INCLUDES=$(BASEDIR)inc; $(BASEDIR)incddk; TARGETLIBS=$(BASEDIR)lib*

SOURCES= \

这个文件指定了驱动程序目标名是,是一个WDM驱动程序,生成的文件存放在lib目录

中。值得注意的是,“=”前后不能有空格,否则编译的时候会出错。

开始编译:

“开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment

屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)

New or updated MSVC detected. Updating DDK envi ronment…. Setting environment for using

Microsoft Visual C++ tools. Starting dirs creation…Completed. D:NTDDK>cd jtag_usb (回车)

D:HelloWDM>build (回车)

如果源代码没有错误的话,生成的将存放在lib目录中。

安装驱动程序:

利用INF文件实现驱动的安装。我们一般是采用INF文件,inf文件如下所示:

[Version] Signature = "$CHICAGO$" Class = USB DriverVer = 11/11/2007,1.00.00 ClassGUID =

{36FC9E60-C465-11CF-40000} provider = %ECICT% [SourceDisksNames] 1=%

CYUSB_INSTALL%,,, [SourceDisksFiles] = 1 [Manufacturer] %MfgName%=ECICT

[Ecict] %VID_0547&%=CyUsb, USB\VID_0547&PID_1002 [DestinationDirs]

= 10,System32\Drivers [] AddReg= []

CopyFiles= AddReg= [ AddReg= Addservice = CyUsb, 0x00000002, [] DisplayName = %% ServiceType = 1 ; SERVICE_KERNEL_DRIVER StartType = 3 ;

SERVICE_DEMAND_START ErrorControl = 1 ; SERVICE_ERROR_NORMAL ServiceBinary = %10%\System32

\Drivers\ LoadOrderGroup = Base [] HKR,,DevLoader,,*ntkern HKR,,NTMPDriver,, [ [ ;-----------------------------------------------------------

----; [Strings] CYUSB_INSTALL = "Your Device Installation Disk" ECICT = "ECICT" MfgName =

"ECICT" VID_0547& = "USB_Jtag Controler" ;------------Replace GUID below

相关文档
最新文档