WDK框架驱动和应用程序的交互通信实现(附加代码)

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

WDK框架驱动和应用程序的交互通信实现(附加代码)

学习各种高级外挂制作技术,马上去百度搜索"魔鬼作坊",点击第一个站进入,快速成为做挂达人。

在学习wdk驱动的时候,关于通讯这块介绍真的很少,加上《天书夜读》没有公开代码,所以实现起来真的很困难,所以在学习的过程中做了些小结,附上源码,希望对初学者有一些帮助。目录如下,如果有用过虚拟机,第三章可以忽略。时间比较宝贵的直接看第五章。word文档里面有超链接,阅读也方便一点。

从某种程度上说,这个算是自己第一次发帖,所以大家多多指教。

附件如下:

《天书夜读》Windows驱动编程基础教程.rar

Comm.rar

dioc.rar

fhlj1.rar

irpcl.rar

List.rar

总.rar

总的word文件:WDK下驱动和应用层序通信.rar

第一章VC6.0+WDK(7600.16385.1)开发驱动的环境配置1

第二章设备和符号链接生成以及删除2

第三章虚拟机运行3

第四章应用程序向驱动程序发送消息7

第五章驱动程序主动发消息给应用程序10

第一章VC6.0+WDK(7600.16385.1)开发驱动的环境配置

(1)第一步:打开VC建立一个Win32Application工程,然后选择An empty Project。

(2)第二步:随便找一个驱动程序,主要是.C,.h及rc资源文件,加入第一步建立的工程

(3)第三步:设置VC编译驱动的环境,这才是重点。打开VC的Tool->Options->Directories里设置Include,Lib,及Exectuable File。

设置Include路径:

C:/WINDDK/7600.16385.1/INC

C:/WinDDK/7600.16385.1/INC/wdf

C:/WinDDK/7600.16385.1/INC/wdf/kmdf/1.9

C:/WINDDK/7600.16385.1/INC/CRT

C:/WINDDK/7600.16385.1/INC/DDK

C:/WINDDK/7600.16385.1/INC/API(这里可能有些不需要,也可能少了,根据自己的情况在INC目录下继续添加就OK了)

设置LIB路径:

C:/WINDDK/7600.16385.1/LIB

C:/WINDDK/7600.16385.1/LIB/WDF/KMDF/I386/1.9

C:/WINDDK/7600.16385.1/LIB/CRT/I386

C:/WINDDK/7600.16385.1//LIB/WNET/I386

设置Executable Files:

C:/WINDDK/7600.16385.1/BIN/X86/X86

(这里要注意,一定要在bin/x86目录下,确切的找到Cl.exe文件,然后添加它所在的目录,DDK与WDK这个文件所在的路径并不是一样的,上面的是我所安装的WDK中cl.exe所在的路径,这里要根据不同情况选择正确的路径)

(4)第四步:

这里要设置工程的属性:

打开VC->Project菜单,找到C/C++选项卡,在Preprocesser definitions里输入如下字符串:Release下输入:

_X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,NDEBUG

Debug下输入:

_X86_=1,i386=1,STD_CALL,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG

在Code Generation里的Calling convention用_STDCALL

Debug版有个特殊编译选项/GZ(注意是大写的,小写的不要删!)删掉,否则有链接错误,chkesp链接不上什么的。

(5)第五步:

设置link选项卡,将输出文件名改为sys扩展名,

在General的Objcet/Library modules,填写驱动调用的几个lib:

Kernel32.lib ntoskrnl.lib hal.lib usbd.lib wmilib.lib wdfdriverentry.lib wdfldr.lib

然后进入Output在Entry-point symbol:填DriverEntry

下面就是往Project Options手动增加一些链接选项,复制如下进去:

/machine:IX86/driver/subsystem:native/SECTION:INIT,d/IGNORE:4198,4010,4037,4039,4065,407 0,4078,4087,4089,4221

删除如下选项:

/subsystem:windows

/machine代表目标机器类型,/driver代表驱动,/subsystem:native也是代表驱动。

(这里,我在配置的时候,只是将/subsystem:windows改为:/subsystem:native没有再进行其它设置,也可成功生成驱动文件,至于有没有问题,暂时不知道)

/hell74111/blog/item/847374a9648fd8b8cb130c0a.html

源文档

那么如果我们要编译64位驱动呢?这里大家注意一下,64位有两种,一个是AMD64,一个是IA64,要选定你的目标平台,目前AMD64平台最为流行.

其实编译成64位也很简单,只要把32位的配置稍微改一下就行了,我们以编译AMD64位驱动为例(你会复制VC的工程Configurations吧,把32位的Relase,Debug各复制一份改名为ReleaseAMD64和DebugAMD64,然后在复制品的基础上修改):

1.要修改两个lib路径:

C:/2003DDK/LIB/CRT/I386改为:C:/2003DDK/LIB/CRT/amd64

C:/2003DDK/LIB/WNET/I386改为:C:/2003DDK/lib/wnet/amd64

2.修改编译器路径:

C:/2003DDK/BIN/X86

改为:

C:/2003DDK/bin/win64/x86/amd64

相关文档
最新文档