您的位置:首页 > 产品设计 > UI/UE

第一个驱动程序环境配置,编写与调试(1)

2012-07-22 21:54 316 查看
对Windows 内核有严重好奇心,开始学习驱动编程.
首先建立编译环境,下载最新版WDK7600.16385.1.选择全部安装.安装完成后,有两种选择可以编写驱动程序,一个是记事本,一个VS.参考网上一篇文章.
配置VS2010+WDK
一.随便建立一个空工程.配置工程属性.新加一个.Driver
二.添加一个文件.cpp|.c 选择配置Driver.
三.右键文件属性.
1."常规"-目标文件扩展名:.sys
2."VC++目录"-
    可执行文件目录:$WinDDK$\bin\x86
   包含目录        :$WinDDK$\inc; $WinDDK$\inc\api;$WinDDK$\inc\ddk
库目录           :$WinDDK$\lib\win7\i386
 $WinDDK$为安装路径如C:\WinDDK\7600.16385.1\;
3.“C/C++”
-预处理器-"预处理器定义"   
添加定义WIN32=100;_X86_=1;WINVER=0x501;DBG=1
       
如果是 Release.WIN32=100;_X86_=1;WINVER=0x501;
    
     
-高级-"调用约定"  修改为  __stdcall(/Gz)
        -常归-"警告等级"
 设置为 /W4  
  将警告视为错误选为  是/WX
        -优化-优化选项可以选择为   已禁用/Od 
可选
        -代码生成:缓冲区安全检查
   否
可选

4."链接器"
-输入:"附加选项输入" 
ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB

              “忽略所有默认库” 选择为  是 (/NODEFAULTLIB)

    -清单文件: 启用用户账户控制(UAC)  否    否则会出现 “/MANIFESTUAC”与“/DRIVER”规范不兼容

    -系统:  “子系统” 选择为  控制台(/SUBSYSTEM:CONSOLE)

                 “驱动程序” 选择为    驱动程序(/DRIVER)

    -高级: “入口点” 输入为 DriverEntry

                “基址”  输入为 0x10000

                “随机基址” 中原来的 是 (/DYNAMICBASE) 内容删掉,只留下空的文本框,

因为 “/DYNAMICBASE”与“/DRIVER”规范不兼容

                “数据执行保护(DEP)” 中原来的 是 (/NXCOMPAT:NO) 内容删除,只留下空的文本框,

因为 “/NXCOMPAT:NO”与“/DRIVER”规范不兼容

    -调试: 根据当前是 Driver Debug 还是 Driver Release 选择是否生成调试信息 是(/DEBUG)

    -命令行: 添加一段  /SECTION:INIT,D /IGNORE:4078   

             这样可以防止出现 4078的警告 【找到多个“INIT”节,它们具有不同的属性(E2000020)】

     -常规: “启用增量链接” 可以设置为 否(/INCREMENTAL:NO)  可选 建议选上
还需要拷贝VS2010目录下\VC\include\sal.h 覆盖掉$WinDDK$\inc\api\sal.h

还需要拷贝VS2010目录下\VC\include]CodeAnalysis, 拷贝到 $WinDDK$\inc\api

如果使用记事本编写驱动程序.建立.c文件.写入代码.
建立makefile文件.
建立sources文件内容如下
          TARGETNAME:生成的文件名
          TARGETTYPE:DRIVER
          SOURCES:xxx.c
          多个文件用空格隔开
进入开始-Windows Driver Kit 中 Build中找到XP目录的build cmd
然后进入目录 build 
但是我build时候出错了 

1>errors in directory e:\(niko)\_myproject\_sys\helloworld\helloworld
1>e:\wintools-x86\winddk\7600.16385.1\bin\makefile.new(449) : error U1023: syntax error in expression
1>nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDIR_RELATIVE_TO_BASEDIR= failed - rc = 2

终于找到错误原因是 文件目录包含__
开始驱动编程
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息