阅读:2800回复:0
VS2008怎么配置DDK呢?
我在网上找了个使用VS2008编译驱动程序的介绍
按照如下要求进行了设置: 一.用VS2008创建一个Win32控制台应用程序,在“附加选项”处勾选“空项目” 二.将编写好的源代码文件导入项目中 三.修改VS2008设置,添加支持驱动程序编译链接的头文件和库文件 在Include目录中添加: D:\软件\WINDDK\2600\inc\w2k D:\软件\WINDDK\2600\inc\ddk\w2k D:\软件\WINDDK\2600\inc\ddk\wdm\w2k 在Lib目录中添加: D:\软件\WINDDK\2600\lib\w2k\i386 四.修改项目属性。 将项目属性依次修改为: “配置属性”->“C/C++” -> “常规”: 调试信息格式:C7 兼容(/Z7) “配置属性”->“C/C++” -> “预处理器”: 预处理器定义:WIN32=100;_X86_=1;WINVER=0x500;DBG=1 “配置属性”->“C/C++” -> “代码生成”: 启用最小重新生成:否 基本运行时检查:默认值 运行时库:多线程调试(/MTd) “配置属性”->“C/C++” -> “高级”: 调用约定:__stdcall (/Gz) “配置属性”->“链接器” -> “常规”: 输出文件:$(OutDir)\$(ProjectName).sys 启用增量链接:否(/INCREMENTAL:NO) “配置属性”->“链接器” -> “输入”: 附加依赖项:ntoskrnl.lib wdm.lib 忽略所有默认库:是(/NODEFAULTLIB) “配置属性”->“链接器” -> “清单文件”: 启用用户帐号控制UAC:否 “配置属性”->“链接器” -> “调试”: 生成映像文件:是(/MAP) 映像文件名:$(TargetDir)$(TargetName).map “配置属性”->“链接器” -> “系统”: 堆栈保留大小:4194304 堆栈提交大小:4096 驱动程序:驱动程序(/DRIVER) “配置属性”->“链接器” -> “高级”: 入口点:DriverEntry 设置效应和:是(/RELEASE) 基址:0x10000 随机基址:默认值 数据执行保护(DEP):默认值 “配置属性”->“链接器” -> “命令行”->“附加选项”: 添加开关:/SECTION:INIT,D /IGNORE:4078 /safeseh:no可以避免以下错误提示 LINK : warning LNK4078: 找到多个“INIT”节,它们具有不同的属性(E2000020) LINK : error LNK2001: 无法解析的外部符号__load_config_used 五.编译,链接。 编译连接通过,生成HelloDDK.sys,然后用驱动开发技术详解配套光盘里面的LoadDriver来启动HelloDDK.sys 但得到的这样的输出: OpenSCManager() ok ! CrateService() Faild Service is ERROR_IO_PENDING or ERROR_SERVICE_EXISTS! OpenService() ok ! StartService() Faild 2 ! LoadNTDriver error 我已经在LoadDriver里面将路径直接设为#define DRIVER_PATH HelloDDK.sys",然后将HelloDDK.sys和LoadDriver.EXE拷到了一起,照理说应该能找得到文件吧。 但我把这个HelloDDK.sys删除了,直接执行LoadDriver.exe输出的结果和上面的一样 不知道我是在哪儿出了问题?头痛中 希望哪位达人帮我解答一下,感激不尽 |
|