- 3
- 0
- 约5.48千字
- 约 5页
- 2017-07-31 发布于河南
- 举报
驱动程序开发入门HelloWorld
驱动程序开发入门(一)HelloWorld ?
?
?
看了好多天的书!特别到书店买了《Windows 200/xp wdm 设备驱动开发》这本书,在这里我不想怎么评论它!对于高手来说,我觉得她一定不能满足,但是对于像我这样想入门的人来说,仿佛看了半天,还是不知道从何下手。什么原理、模型、分层等等讲不讲,讲!绝对应该讲!但是你得快点告诉我怎么先弄一个像“Hello Word!”的什么简单来不能再简单的完整的例子给我呀!到网上找阿找啊!那些高手啊!也不为我们新手写点图文并茂的上手资料。没办法!结合自己的需要再参考一些别人的东东,算是自己的一点不成熟的想法吧!
我觉得下面这个介绍非常不错!我能看懂,所以贴了出来。
我道为什么找不到“Hello Word!”呢?原来在驱动开发的例子里是没有所谓的“Hello World”程序的。这主要还是因为网络上的WDM资料太少造成的。但是程序的入口点呢?c语言有Main(),用Vc的常看见的是WinMain(),Delphi开发的是Program里的Begin,但是驱动开发呢?那也是应该有程序的入口点啊。后来我才明白了,那就是DriverEntry()函数。还有一个问题让我怀疑了老半天,那就是驱动开发的源程序中需不需要include头文件呀?为什么会怀疑呢?那是因为我看了半天的书都没有看到一个完整的驱动程序结构。真的是郁闷。下面是我看到的一个完整的结构,我先放上来,让大家看看驱动开发的结构吧。
/***************************************************************程序名称:Hello World for WDM文件名称:HelloWDM.cpp日期:2002-8-16***************************************************************///一定要的头文件,声明了函数模块和变量:#include?HelloWDM.h/***************************************************************函数名称:DriverEntry()功能描述:WDM程序入口(原来的WinMain被换成了DriverEntry,也是驱动程序的大门)***************************************************************///extern C是必须的,表示“用C链接”。如果你的文件名是HelloWDM.c的话,这句可以省略。extern?CNTSTATUS DriverEntry(????IN PDRIVER_OBJECT DriverObject, //IN 是一个关键字表示这是一个输 入参数,PDRIVER_OBJECT是一个数据结构的指针,就像PCHAR一样,这个数据结构是什么样子的,后面我会列出来。她描述了一个驱动设备对象。????????????????????????IN PUNICODE_STRING RegistryPath)//参数RegistryPath指定了驱动程序注册表健的路径,因为驱动程序安装后总会在系统注册表里留下一点东西的。{????//指定“添加设备”消息由函数“HelloWDMAddDevice()”来处理:????DriverObject-DriverExtension-AddDevice?=?HelloWDMAddDevice;????//指定“即插即用”消息由函数“HelloWDMPnp()”来处理:????DriverObject-MajorFunction[IRP_MJ_PNP]?=?HelloWDMPnp;????//返回一个NTSTATUS值STATUS_SUCCESS。几乎所有的驱动程序例程都必须返回一个NTSTATUS值,这些值在NTSTATUS.H DDK头文件中有详细的定义。????return?STATUS_SUCCESS;}//NTSTATUS也是一个数据类型,上面我所说的消息有点不准确的,准确地说是“I/O请求包”,不过如果像我们以前理解消息那样来理解也无不可,我觉得两者太想了。无非就是上层的应用程序通过它来告诉驱动程序,你要给我什么服务吧!IRP_MJ_PNP就是即插即用处理的请求。你发没发觉上面其实是在制造进入各个房间的“小门”
/***************************************************************函数名称:HelloWDMAddDevice()功能描述:处理“添加设备”消息********************
您可能关注的文档
最近下载
- 核反应堆设计软件:FLUKA二次开发_(1).FLUKA软件基础与应用.docx VIP
- 【初中体育】说课稿万能模板.docx VIP
- 核辐射防护软件:FLUKA二次开发_(10).用户自定义功能开发.docx VIP
- NB_T 47016-2023 承压设备产品焊接试件的力学性能.pdf VIP
- 机电设备安装-工程施工方案.docx VIP
- 核辐射防护软件:FLUKA二次开发_(7).物理模型与核反应.docx VIP
- 核辐射防护软件:FLUKA二次开发_(8).数据输出与后处理.docx VIP
- 核辐射防护软件:FLUKA二次开发_(9).并行计算与优化.docx VIP
- 核辐射防护软件:FLUKA二次开发all.docx VIP
- 一种复合增韧剂、制备方法、应用和高抗冲聚苯乙烯树脂组合物及其制备方法.pdf VIP
原创力文档

文档评论(0)