现在的位置: 首页 > 综合 > 正文

VS2008英文版编译驱动程序的方法

2013年01月04日 ⁄ 综合 ⁄ 共 7262字 ⁄ 字号 评论关闭

 

VS2008英文版编译驱动程序

 

WDK版本为7600.16385.1,本例中WDK安装在C:/WinDDK上

 

源于网络,高于网络!!!

 

一、驱动check版本,也即Debug版本的设置

 

1.使用 “开始菜单+Pause” 快捷键,或右键 我的电脑-->属性-->高级-->

  环境变量-->Administrator的用户变量,设置:

  WDKPATH=C:/WinDDK/7600.16385.1

 

2.用VS2008创建一个Win32控制台应用程序,勾选 Additional options: Empty project

 

3.将编写好的源代码文件导入项目,右键 项目名 选择 Add-->Existing Item

 

4.修改项目属性,右键 项目名 选择 Properties-->Configuration Properties

(1)

  C/C++-->General:

Additional Include Directories = "$(WDKPATH)\inc\ddk";

"$(WDKPATH)/inc/api";"$(WDKPATH)\inc\crt"

Debug Information Format = C7 Compatible (/Z7) 

Warning Level = Level 4 (/W4)

 

  C/C++-->Preprocessor:

Preprocessor Definitions = WIN32=100;_X86_=1;WINVER=0x500;DBG=1

Ignore Standard Include Path = Yes(/X)

 

 

  C/C++-->Code Generation:

Enable Minimal Rebuild = No

Basic Runtime Checks = Default

Runtime Library = Multi-threaded Debug (/MTd)

Buffer Security Check = No (/GS-)

 

  C/C++-->Advanced:

Calling Convention = __stdcall (/Gz)

Compile As = Compile as C Code (/TC)

 

(2)

  Linker-->General:

Output File = $(OutDir)\$(ProjectName).sys

Enable Incremental Linking = No (/INCREMENTAL:NO)

Additional Library Directories = "$(WDKPATH)\lib\wxp\i386"

 

  Linker-->Input:

Additional Dependencies = ntoskrnl.lib wdm.lib fltlib.lib fltMgr.lib

Ignore All Default Libraries = Yes (/NODEFAULTLIB)

 

  Linker-->Manifest File:

Generate Manifest = No

Enable User Account Control (UAC) = No

 

  Linker-->Debugging:

Generate Map File = Yes (/MAP)

Map File Name = $(TargetDir)$(TargetName).map

 

  Linker-->System:

SubSystem = Native (/SUBSYSTEM:NATIVE)

Stack Reserve Size = 4194304

Stack Commit Size = 4096

Driver = Driver (/DRIVER)

 

  Linker-->Advanced:

Entry Point = DriverEntry

Set Checksum = No

Base Address = 0x10000

Randomized Base Address = Default

Data Execution Prevention (DEP) = Default

Target Machine = MachineX86 (/MACHINE:X86)

 

  Linker-->Command Line:

Additional options = /SECTION:INIT,D /IGNORE:4078 /safeseh:no

 

设置该项可以避免以下错误提示:

LINK : warning LNK4078: multiple 'INIT' sections found with different attributes (E2000020)

LINK : error LNK2001: 无法解析的外部符号__load_config_used

 

5.右键单击项目,选择 Rebuild

 

二、驱动free版本,也即Release版本的设置

 

 右键 项目名 选择 Properties-->Configuration Properties

(1)

  C/C++-->General:

Additional Include Directories = "$(WDKPATH)\inc\ddk";

"$(WDKPATH)\inc\api";"$(WDKPATH)\inc\crt"

Debug Information Format = Program Database (/Zi)

Warning Level = Level 4 (/W4)

 

  C/C++-->Preprocessor:

Preprocessor Definitions = WIN32=100;_X86_=1;WINVER=0x500;DBG=1

Ignore Standard Include Path = Yes(/X)

 

 

  C/C++-->Code Generation:

Enable Minimal Rebuild = Yes (/Gm)

Basic Runtime Checks = Default

Runtime Library = Multi-threaded (/MT)

Buffer Security Check = No (/GS-)

Enable Function-Level Linking = Yes (/Gy)

 

  C/C++-->Advanced:

Calling Convention = __stdcall (/Gz)

Compile As = Compile as C Code (/TC)

 

(2)

  Linker-->General:

Output File = $(OutDir)\$(ProjectName).sys

Enable Incremental Linking = No (/INCREMENTAL:NO)

Additional Library Directories = "$(WDKPATH)\lib\wxp\i386"

 

  Linker-->Input:

Additional Dependencies = ntoskrnl.lib wdm.lib fltlib.lib fltMgr.lib

Ignore All Default Libraries = Yes (/NODEFAULTLIB)

 

  Linker-->Manifest File:

Generate Manifest = No

Enable User Account Control (UAC) = No

 

  Linker-->Debugging:

Generate Debug Info = No

Generate Map File = Yes (/MAP)

Map File Name = $(TargetDir)$(TargetName).map

 

  Linker-->System:

SubSystem = Native (/SUBSYSTEM:NATIVE)

Stack Reserve Size = 4194304

Stack Commit Size = 4096

Driver = Driver (/DRIVER)

 

  Linker-->Advanced:

Entry Point = DriverEntry

Set Checksum = Yes (/RELEASE)

Base Address = 0x10000

Randomized Base Address = Default

Data Execution Prevention (DEP) = Default

Target Machine = MachineX86 (/MACHINE:X86)

 

  Linker-->Command Line:

Additional options = /SECTION:INIT,D /IGNORE:4078 /safeseh:no

 

设置该项可以避免以下错误提示:

LINK : warning LNK4078: multiple 'INIT' sections found with different attributes (E2000020)

LINK : error LNK2001: 无法解析的外部符号__load_config_used

 

三、用户也可以直接使用我的项目文件RealMonitor.vcproj中的Configuration信息,代替自己项目中的配置信息,

      这样可以省去每次配置VS2008环境的繁琐工作,直接将下面的配置信息,拷贝,并粘贴到自己项目文件.vcproj(右键以文本打开),

      代替掉自己项目中的<Configuration字段就可以了。

 

<Configuration

Name="Debug|Win32"

OutputDirectory="$(SolutionDir)$(ConfigurationName)"

IntermediateDirectory="$(ConfigurationName)"

ConfigurationType="1"

CharacterSet="1"

>

<Tool

Name="VCPreBuildEventTool"

/>

<Tool

Name="VCCustomBuildTool"

/>

<Tool

Name="VCXMLDataGeneratorTool"

/>

<Tool

Name="VCWebServiceProxyGeneratorTool"

/>

<Tool

Name="VCMIDLTool"

/>

<Tool

Name="VCCLCompilerTool"

Optimization="0"

AdditionalIncludeDirectories="&quot;$(WDKPATH)

 

/inc/ddk&quot;;&quot;$(WDKPATH)/inc/api&quot;;&quot;$(WDKPATH)/inc/crt&quot;"

PreprocessorDefinitions="WIN32=100;_X86_=1;WINVER=0x500;DBG=1"

IgnoreStandardIncludePath="true"

MinimalRebuild="false"

BasicRuntimeChecks="0"

RuntimeLibrary="1"

BufferSecurityCheck="false"

UsePrecompiledHeader="0"

WarningLevel="3"

DebugInformationFormat="1"

CallingConvention="2"

CompileAs="1"

/>

<Tool

Name="VCManagedResourceCompilerTool"

/>

<Tool

Name="VCResourceCompilerTool"

/>

<Tool

Name="VCPreLinkEventTool"

/>

<Tool

Name="VCLinkerTool"

AdditionalOptions="/SECTION:INIT,D /IGNORE:4078 /safeseh:no"

AdditionalDependencies="ntoskrnl.lib wdm.lib fltlib.lib fltMgr.lib"

OutputFile="$(OutDir)/$(ProjectName).sys"

LinkIncremental="1"

AdditionalLibraryDirectories="&quot;$(WDKPATH)/lib/wxp/i386&quot;"

GenerateManifest="false"

IgnoreAllDefaultLibraries="true"

GenerateDebugInformation="true"

GenerateMapFile="true"

MapFileName="$(TargetDir)$(TargetName).map"

SubSystem="3"

StackReserveSize="4194304"

StackCommitSize="4096"

Driver="1"

EntryPointSymbol="DriverEntry"

BaseAddress="0x10000"

RandomizedBaseAddress="0"

DataExecutionPrevention="0"

TargetMachine="1"

/>

<Tool

Name="VCALinkTool"

/>

<Tool

Name="VCManifestTool"

/>

<Tool

Name="VCXDCMakeTool"

/>

<Tool

Name="VCBscMakeTool"

/>

<Tool

Name="VCFxCopTool"

/>

<Tool

Name="VCAppVerifierTool"

/>

<Tool

Name="VCPostBuildEventTool"

/>

</Configuration>

<Configuration

Name="Release|Win32"

OutputDirectory="$(SolutionDir)$(ConfigurationName)"

IntermediateDirectory="$(ConfigurationName)"

ConfigurationType="1"

CharacterSet="1"

WholeProgramOptimization="1"

>

<Tool

Name="VCPreBuildEventTool"

/>

<Tool

Name="VCCustomBuildTool"

/>

<Tool

Name="VCXMLDataGeneratorTool"

/>

<Tool

Name="VCWebServiceProxyGeneratorTool"

/>

<Tool

Name="VCMIDLTool"

/>

<Tool

Name="VCCLCompilerTool"

Optimization="2"

EnableIntrinsicFunctions="true"

AdditionalIncludeDirectories="&quot;$(WDKPATH)

 

/inc/ddk&quot;;&quot;$(WDKPATH)/inc/api&quot;;&quot;$(WDKPATH)/inc/crt&quot;"

PreprocessorDefinitions="WIN32=100;_X86_=1;WINVER=0x500"

IgnoreStandardIncludePath="true"

MinimalRebuild="true"

RuntimeLibrary="0"

BufferSecurityCheck="false"

EnableFunctionLevelLinking="true"

UsePrecompiledHeader="0"

WarningLevel="3"

DebugInformationFormat="3"

CallingConvention="2"

CompileAs="1"

/>

<Tool

Name="VCManagedResourceCompilerTool"

/>

<Tool

Name="VCResourceCompilerTool"

/>

<Tool

Name="VCPreLinkEventTool"

/>

<Tool

Name="VCLinkerTool"

AdditionalOptions="/SECTION:INIT,D /IGNORE:4078 /safeseh:no"

AdditionalDependencies="ntoskrnl.lib wdm.lib fltlib.lib fltMgr.lib"

OutputFile="$(OutDir)/$(ProjectName).sys"

LinkIncremental="1"

AdditionalLibraryDirectories="&quot;$(WDKPATH)/lib/wxp/i386&quot;"

GenerateManifest="false"

EnableUAC="false"

IgnoreAllDefaultLibraries="true"

GenerateDebugInformation="false"

GenerateMapFile="true"

MapFileName="$(TargetDir)$(TargetName).map"

SubSystem="3"

StackReserveSize="4194304"

StackCommitSize="4096"

Driver="1"

OptimizeReferences="2"

EnableCOMDATFolding="2"

EntryPointSymbol="DriverEntry"

SetChecksum="true"

BaseAddress="0x10000"

RandomizedBaseAddress="0"

DataExecutionPrevention="0"

TargetMachine="1"

/>

<Tool

Name="VCALinkTool"

/>

<Tool

Name="VCManifestTool"

/>

<Tool

Name="VCXDCMakeTool"

/>

<Tool

Name="VCBscMakeTool"

/>

<Tool

Name="VCFxCopTool"

/>

<Tool

Name="VCAppVerifierTool"

/>

<Tool

Name="VCPostBuildEventTool"

/>

</Configuration>

 

 

 

 

抱歉!评论已关闭.