C/C++ Projcet Option
/nologo /Gz /MLd /W2 /WX /Z7 /Od /DWIN32=100 /D _X86_=1 /D WINVER=0x501 /D DBG=1 /Fo"DriverPath/"/Fd"DriverPath/" /FD /c
/nologo :代表不显示编译的版权信息。
/Gz :采用标准的版权信息。
/W2 :采用二级警告模式 W0至W4 共5级
/WX :将警告信息视为错误,最大程序的保证了代码的可靠性
/Z7 :用Z7模式产生调试信息。VC默认选项和/driver选项会有冲突
/Od :关闭调试模式,因为驱动需要内核调试器调试,不需要win32程序那样用VC调试器
/ D WIN32=100 /D _X86_=1 /D WINVER=0x501 /DDBG=1
PreProcessor definitions(预处理器定义):
其中
/D _X86_=1 表示32位系统
/D WINVER=0x501 表示运行在XP系统 0X500表示2000系统
/D DBG=1 表示Check版本
/Fo"DriverPath/" 这里的DriverPath 表示产生的临时文件存放相对路径
/Fd"DriverPath/" 这里的DriverPath 表示PDB文件存放的路径
PDB文件中钫含了大量的符号 是进行源码调试驱动所必需的
/FD 表示生成文件依赖
/c 只进行编译而不链接
Link Project Option
ntoskrnl.lib /nologo/base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry"/subsystem:console /incremental:no /pdb:"DriverPath/myddk.pdb" /map:"DriverPath/myddk.map" /debug /machine:I386 /nodefaultlib/out:"DriverPath/myddk.sys"/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
ntoskrnl.lib NT式驱动链接所必须引用的库文件 WDM式驱动 则需要wdm.lib
/nologo 链接时不显示版权信息
/base:"0x10000" 加载驱动时,设定加载在虚拟内存中的位置
/stack:0x400000,0x1000
/entry:"DriverEntry"
/subsystem:console
/incremental:no
/pdb:"DriverPath/myddk.pdb" 设置PDB文件名
/map:"DriverPath/myddk.map"
/debug /machine:I386
/nodefaultlib 不使用默认库
/out:"DriverPath/myddk.sys" 指定生成驱动的名称
/pdbtype:sept 设置pdb文件类型
/subsystem:native 设置子系统是内核系统
/driver 编译方式为驱动
/SECTION:INIT,D 将INIT段设置为可抛弃
/IGNORE:4078 忽略4078错误
//4198,4010,4037,4039,4065,4070,4078,4087,4089,4221这些错误都可以忽略