驱动程序开发入门HelloWorld.docVIP

  • 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?C NTSTATUS 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() 功能描述:处理“添加设备”消息 ********************

文档评论(0)

1亿VIP精品文档

相关文档