WINDOWS 7 配置驱动开发环境(wdk7.60)测试程序 后报错 照着网上做的 ,求大神

WINDOWS 7 配置驱动开发环境(wdk7.60)测试程序 后报错 照着网上做的 ,求大神,第1张

#include<wdm.h>

否则的话就看看_WIN32_WINNT在win7下面的定义,在代码上定义下。

进入wdk的环境cmd,有src文件夹吗,有的话,进入找一个目录build一下看看

没用过wdk7,还是使用ddk2600,wdk8.0好像没src目录了。

你的问题比较笼统,不知道是怎样的需求。我把我的经验全都贴出来,楼主挑自己感兴趣的吧。

一、源代码编译

在微软官网上下载 WDK 开发包,里面有 WDK 编译器,链接器,配置工具,如NMAKE。然后,用记事本写 C 或 C++ 文件,编译,链接就 OK 了。

WDK 库是一定要的,否则头文件,导入库都没有,就无法编译了。至于编译器和连接器,其实就是普通的 cl.exe 和 link.exe 两个工具,和 VS 中的 VC 编译链接器是同一个。

编译的方法是:

在自己的目录如 c:\wdkdemo 中有个待编译的 wdkdemo.c ,那么需要在这个目录里加入两个文件,一个是 makefile (无后缀名)的固定文件名,内容也是固定的:

INCLUDE $(NTMAKEENV)\makefile.def

另外一个文件是 sources (无后缀名)的固定文件名,内容为:

targettype=driver

targetname=obj

sources=wdkdemo.c

这两个文件都是让nmake 工具配置用的,最终调用合适的编译器和链接器开关来编译出 sys 。

WDK包有个 build 命令行工具,当配置好了以上两个文件后。双击 build 工具,进入到 c:\wdkdemo 目录,输入命令 build 回车,然后只要 wdkdemo.c 源代码正确,就会生成 sys 文件了。

二、sys 文件安装:

在网上下载个免费的驱动安装工具,这个不难吧,一般调试用的驱动,建议在安装的时候,千万记得要选择手动模式,因为自启动模式,如果驱动有BUG ,会导致蓝屏,重启机器后,驱动因自启动又被加载,导致再次蓝屏。

三、调试

在微软官网下个 windbg ,但 windbg 需要调试机和被调试机模式,因此 windbg 最好配合 vmware 来使用。

我感觉,sys 文件编译是很麻烦的。不如编译应用程序,只要一个 VS 可以搞定大部分的事情。驱动开发需要很多关于其他工具的知识。譬如,用记事本或者NOTEPAD++编辑源代码感觉很吃力,因为 VS 没有驱动开发的项目,因此 VS 不直接支持驱动开发,当然,可以进行配置,但 VS 配置驱动是很麻烦的。另外, windbg 有很多的调试命令,当然常规的命令一般4、5个就够用了。VMWARE 的配置也是很麻烦的,当初,我自己研究了很长时间,网上虽然有教程,但都是讲得不全面,譬如要配置10个地方,网上都是只说7、8个,导致 VMWARE 配置不成功。

驱动开发还有 DRIVER STUDIO 这么一个 IDE 可以使用,另外还有 IRPTRACE ,DEVICE TREE , DEBUG VIEWER 等工具。

我开发驱动的工具是 VMWARE + VS2010 + WDK + WINDBG + WINOBJ + IRPTRACE + DEBUG VIEWER 这几个。

追问

我就是想把WDK和visual studio合在一起开发,在记事本上太吃力了,每一个字都需要自己写,这样的话不就退化到好几年之前了嘛--现在做一个小东西也需要几千的代码,这样会累死的,就像这样我的在visual studio 2008里面已经有这样的了,但是编译不出 .sys文件,我自己写的代码也不行,别人写的(网上下的)也编译不出来 你看看是什么情况,图上的是我自己机子上我搞的(原本没有)

追答

原来是这个呀。

首先,新建一个WIN32控制台工程,选择空项目。然后新建一个.cpp文件。接下去所有的项目属性不要修改,需要修改的地方如下,至于有些修改的含义,就不多说了,一说又一大堆。

VS 中配置 WDK 选项:

(假定 WDK 安装目录为 C:\WinDDK\7600.16385.1,这个是我机器上的配置)

一、C/C++

1.常规

*附加包含目录:编辑添加3个路径,分别对应WDK安装目录\INC子目录中的三个目录:crt,api,ddk。最终在附加包含目录的内容为:C:\WinDDK\7600.16385.1\inc\apiC:\WinDDK\7600.16385.1\inc\ddkC:\WinDDK\7600.16385.1\inc\crt

调试信息格式:C7兼容 /Z7

2.预处理器

*WIN32DBG_X86_WINVER=0x0501

3.代码生成

*启用最小重新生成:否

*基本运行时检查:默认值

运行库:多线程调试(/MTd)

*缓冲区安全检查:否(/GS-)

4.高级

调用约定:__stdcall (/Gz)

二、链接器

1.常规

输出文件:$(OutDir)\$(ProjectName).sys

*启用增量链接:否(/INCREMENTAL:NO)

附加库目录:编辑添加1个路径,对应WDK安装目录\LIB\WXP\I386,最终的附加库目录的内容为:C:\WinDDK\7600.16385.1\lib\wxp\i386。注意,如果是WIN7系统,子目录把 WXP 改成WIN7

2.输入

*附加依赖项:ntoskrnl.lib

*忽略所有默认库:是(/NODEFAULTLIB)

3.清单文件

清单文件:否

4.系统

子系统:本机(/SUBSYSTEM:NATIVE)

*驱动程序:驱动程序(/DRIVER)。注意,如果是WDM类型驱动,改成 WDM (/DRIVER:WDM)。

5.高级

入口点:DriverEntry

随机地址:默认值

数据执行保护(DEP):默认值

以上带 * 的意识为,内容可以根据项目的具体分化,可以有所变动。当然啦,变动,肯定是基于你对该选项的理解基础上进行变更的。譬如附加依赖项一般需要ntoskrnl.lib ,如果使用了第三方库里的函数,那需要再添加其他的 lib 库。譬如想启用缓冲区安全检查,那除了开关设置意外,必须

在附加依赖项开关加上 bufferoverflowU.lib 这个库,因为安全检查函数由 bufferoverflowU.lib 导出。

更正下我第一次的回答:

sources (无后缀名)的固定文件名,内容为:

targettype=driver

targetname=obj

sources=wdkdemo.cpp

更正为:

targettype=driver

targetname=wdkdemo

targetpath=obj

sources=wdkdemo.cpp


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/9922996.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存