zoukankan      html  css  js  c++  java
  • 用VC6来编译DDK NT驱动

    用VC6编译驱动的方法,有的XP DDK自带的编译器版本高于VC6的,也就是_MSC_VER要求大于1300,而VC6的是1200,所以我基本用VC6编译2000 DDK驱动,之所以用VC编译,无非是可以用VC助手,还可以快速定位到编译出错位置。做Release版本(Free版本)的时候,还是用build工 具生成吧。关于安装和下载请看我的另外一篇文章:http://www.cnblogs.com/DotCpp/archive/2010/02/02/1661555.html,其中包括了XP和2000的DDK。

    1.用VC建立一个空工程,我是用Win32 Console Application开始的。
    2.把源程序添加进工程里面来。
    3.在Tool-> Options设置Include和Lib目录,注意是2000 DDK的。
    我的设置是Include目录:
    C:\WINDDK\2600.1106\INC\W2K
    C:\WINDDK\2600.1106\INC\DDK\W2K
    C:\WINDDK\2600.1106\INC\DDK\WDM\W2K
    (注意:这几个目录最好放在VC缺省目录的前面,否则容易出错)
    Lib目录:

    C:\WINDDK\2600.1106\LIB\W2K\I386

    注意设置 Source文件夹和Excute文件夹

    4.开始C/C++选项卡里的设置。
    1)Preprocessor definitions中设置为:WIN32=100,_X86_=1,WINVER=0x500,DBG=1
    WIN32=100:不是很清楚。
    _X86_=1:这个最重要,否则无法编译通过。代表CPU类型为X86
    WINVER=0x500,是因为你是for 2K的。XP的是0x501。
    DGB=1表示调试版本。
    2)C++ Language里面去掉Enable exeception handling,否则会出现error LNK2001: unresolved external symbol ___CxxFrameHandler。
    3)Code Generation调用习俗设置成__stdcall
    4)Project Options中去掉/GZ【注意是大写的GZ,目的是编译的时候不会自动加入__chkesp
    5)Precompiled Headers里面选Not using Precompiled headers,毕竟驱动程序都不会太大,不在乎节省那点时间。

    5.设置Link选项卡
    1)输出改成*.sys
    2)lib是wdm.lib (DDK的应该加ntoskrnl.lib
    3)勾上Ignore all default libraries,否则会链接libc,报告没有main函数。
    4)Base address:0x10000
    Entry-point sysmbol:DriverEntry
    Statck Reverse:0x400000,缺省是1MB,但为什么要设成4MB?
    Commit:0x1000
    5)Customize去掉Link incrementally,否则会和/RELEASE冲突
    6)link的 Project Options:加入/subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
    /subsystem:native:PE格式文件其中有个地方要填写这个。
    /driver是对驱动做一些优化。
    /SECTION:INIT,D:对INIT section进行discard
    /RELEASE (Set the Checksum)
    /IGNORE:4078 忽略4078错误,否则会出现LINK : warning LNK4078: multiple "INIT" sections found with different attributes (E2000020)

  • 相关阅读:
    C#的4个基本技巧
    如何使用 Visual C# 加密和解密文件
    C#中的反射
    C#集成FastDFS断点续传
    NETCORE TimeJob定时任务的使用
    C#使用ActiveMQ实例
    hadoop+hbase适合存储海量小图片吗?
    windows环境下elasticsearch安装教程(超详细)
    C#:C#调用WebService
    .NETCore远程调用
  • 原文地址:https://www.cnblogs.com/yubaolee/p/DotCpp.html
Copyright © 2011-2022 走看看