用 VC 环境编译驱动程序
一、修改编译选项:编译选项集中在“C/C++”选项卡的“Project Option”里。内容为:
/nologo /Gz /MLd /w3 /WX /z7 /Od /D WIN32=100 /C _X86_=1 /D WINVER=0x500 /D
DBG=1 /Fo”MyDriver_Check/” /Fd”MyDriver_Check/” /FD /c
/nologo:代表不显示编译的版权信息。
/Gz:默认函数调用采用标准调用(__stdcall)
/W3:采用第三级的警告模式。
/WX:将警告信息变成错误信息,最大程度的保证了代码的可靠性。
/Z7 : 用 Z7 模 式 产 生 调 试 信 息 。 VC 默 认 的 Program Database for “Edit &
Continue”,这个和 link 的/driver 选项冲突。
/Od:关闭调试模式。驱动程序不需要像 Win32 程序那样用 VC 调试器调试,而需
要用内核调试器调试。
/D WIN32=100 /C _X86_=1 /D WINVER=0x500 /D DBG=1:定义一些宏,这些是
必须的。
/Fo”MyDriver_Check/”:设置中间生成目标代码的路径。
/Fd”MyDriver_Check/”:设置 pdb 文件的目录位置,pdb 文件中包含了大量的符号,
这是调试驱动程序所必需的。
/FD:生成文件依赖。
/c:只进行编译,而不链接。
二、修改链接选项:链接选项集中在 Link 选项卡中的“Project Options”里。
ntoskrnl.lib /nologo /base:”0x10000” /stack:0x400000,0x1000 /entry:”DrvierEntry”
/subsystem:console /incremental:no /pdb:”Mydriver_Check/HelloDDK.pdb” /debug
/machine:I386 /nodefaultlib /out:”MyDriver_Check/HelloDDK.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:”DrvierEntry”:入口函数的地址,此函数必须是符号标准库调用的。
/subsystem:console:设置子系统。
/incremental:no:设置子系统。
/pdb:”Mydriver_Check/HelloDDK.pdb”:设置 pdb 文件的文件名。
/debug:以 debug 方式链接。
/machine:I386:产生代码是 386 平台兼容平台的。
/nodefaultlib:不使用默认的库。
/out:”MyDriver_Check/HelloDDK.sys”:输出二进制文件代码的名称。
/pdbtype:sept:设置 pdb 文件类型。
/subsystem:native:子系统是内核系统。
/driver:编译驱动。
/SECTION:INIT,D:将 INIT 的段设置为可抛弃的。
/IGNORE:4078:忽略 4078 号错误。
三、修改 VC 的 lib 目录和 include 目录。在 VC 中选择“Tools”|“Options”,在弹出的对话框
中,将 lib 目录和 include 目录修改为 DDK 的目录。
评论1