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=""$(WDKPATH)
/inc/ddk";"$(WDKPATH)/inc/api";"$(WDKPATH)/inc/crt""
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=""$(WDKPATH)/lib/wxp/i386""
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=""$(WDKPATH)
/inc/ddk";"$(WDKPATH)/inc/api";"$(WDKPATH)/inc/crt""
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=""$(WDKPATH)/lib/wxp/i386""
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>