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


对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

终于找到错误原因是 文件目录包含__
开始驱动编程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值