驱动学习(1)VS2008+WIN7+WDN的环境配置

来源:互联网 发布:中国人民大网络教育 编辑:程序博客网 时间:2024/05/01 07:19
独立博客无聊记


配置VS08能编译WDK

1,将wdk C:\WinDDK\7600.16385.1\src\general\event\wdm  目录下的文件复制到一个VS08的空项目下

2,配置环境

08不需要配置编译器,但是需要配置包含文件。设置包含文件 库等

1)包含文件
C:\WinDDK\7600.16385.1\inc\crt(可选)
C:\WinDDK\7600.16385.1\inc\ddk
C:\WinDDK\7600.16385.1\inc\api(弄不清楚这个。。大不了全加了)

2)库文件
C:\WinDDK\7600.16385.1\lib\win7\i386 对应CPU架构


3,新建一个配置



4,进一步设置
(可选)

(必选)

预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1



(可选)



(必选  驱动都用这个 命令行参数什么的)




(输出文件:$(OutDir)\$(ProjectName).sys //必选
启用增量链接:否(/INCREMENTAL:NO) //建议选上)



(启用用户账户控制(UAC) 否 //必选 不然会出现 >LINK : fatal error LNK1295: “/MANIFESTUAC”与“/DRIVER”规范不兼容;链接时不使用“/MANIFESTUAC” )



(

 输入:

附加依赖项ntoskrnl.lib Hal.lib wdm.lib wdmsec.lib wmilib.lib ndis.lib MSVCRT.LIB LIBCMT.LIB //必选其12

//NT式驱动 ntoskrnl.lib  WDM式驱动  wdm.lib
 ( HalXXX函数在Hal.libWmiXXX函数在 wmilib.lib NdisXXX函数在 ndis.lib )
 ( 必要时需要增加微软的标准库 MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) )
 ( 如果源码中有 source 文件,那么该文件的 TARGETLIBS 字段会列出该项目需要的库 )

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

)




(入口点:DriverEntry   //必选
随机基址:默认值    //必选 不然会出现 1>G:\event2008\check\event2008.exe : fatal error LNK1295: “/DYNAMICBASE”与“/DRIVER”规范不兼容;链接时不使用“/DYNAMICBASE”
数据执行保护(DEP): 默认值 //必选 不然会出现 G:\event2008\check\event2008.sys : fatal error LNK1295: “/NXCOMPAT:NO”与“/DRIVER”规范不兼容;链接时不使用“/NXCOMPAT:NO”)


(
    命令行”->附加选项:
         添加开关:/SECTION:INIT,D /IGNORE:4078 //建议填上
           可以避免以下错误提示      LINK : warning LNK4078: 找到多个“INIT”节,它们具有不同的属性(E2000020)      LINK : error LNK2001: 无法解析的外部符号__load_config_used  命令行”->附加选项:
         添加开关:/SECTION:INIT,D /IGNORE:4078 //建议填上
           可以避免以下错误提示      LINK : warning LNK4078: 找到多个“INIT”节,它们具有不同的属性(E2000020)      LINK : error LNK2001: 无法解析的外部符号__load_config_used
)


   
5,
配置完竟然报一大堆的错误。。查了无数网站后说要下载win7 sdk 1.4G

出师不利啊

终于解决了再下载错了一个驱动后。。我下成了安腾处理器的SDK,其实现在CPU都是x86的架构。。虽然他是64的。

安装完成后用这个工具
把SDK设置为7.0就终于编译通过了一个sample