用VC6.0编译Windows驱动程序
来源:互联网 发布:cmmi软件成熟度 编辑:程序博客网 时间:2024/04/30 12:54
从广义角度来讲,只要某种语言的编译器能编译出PE格式的二进制文件,并能正确指明驱动程序的入口地址,那么这种语言就能用作开发Windows驱动,所以我们可以选择C、C++、汇编,甚至是Delphi。编译Windows驱动的编译器也有很多,虽然Microsoft发布了新的WDK,但它足足有600我M啊,相比之下,我们还是比较钟意小巧的VC6.0,下面我们就一步一步把VC打造成Windows驱动编写IDE。
1.修改编译选项
"工程"菜单"设置"选项中"C/C++"选项卡中的"Project Options"里。删除原有的内容,输入下面的内容:
/nologo /Gz /Mld /W3 /WX /Z7 /Od /D WIN32=100 /D _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 /D _X86_=1 /D WINVER=0x500 /D DBG=1:定义一此宏,这些是必需的
/Fo"MyDriver_Check":设置中间生成目标代码的路径(根据具体环境会有所变化)
/Fd"MyDriver_Check":设置pdb文件的目录位置,pdb文件中包含了大量的符号,这是调试驱动时候所必需的(根据具体环境会有所变化)
/FD:生成文件依赖
/c:只进行编译,而不链接
2.修改链接选项
"工程"菜单"设置"选项中"Link"选项卡中的"Project Options"里。删除原有的内容,输入下面的内容:
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x100 /entry:"DriverEntry" /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:"DriverEntry":入口函数的地址,此函数必须是符号标准函数调用的
/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号警告错误
- 用VC6.0编译Windows驱动程序
- VC6.0下直接用DDK编译驱动程序的方法
- VC6.0下直接用DDK编译驱动程序的方法
- 用VC6.0编译驱动程序的工程设置方法
- VC6.0下直接用DDK编译驱动程序的方法
- 用VC6.0编译驱动程序的工程设置方法
- VC6.0下直接用DDK编译驱动程序的方法
- 如何VC6.0下编译WDM驱动程序
- 如何VC6.0下编译WDM驱动程序
- 配置vc6编译驱动程序
- windows下用VC6.0编译boost
- VC6+WDK+DriverStudio编译Windows驱动程序环境搭建
- VC6+WDK+DriverStudio编译Windows驱动程序环境搭建
- VC6+WDK+DriverStudio编译Windows驱动程序环境搭建
- 命令行编译和VC6.0编译驱动程序的方法
- 【转过来自己留着看】VC6+WDK+DriverStudio编译Windows驱动程序环境搭建
- 用vc6.0编译wxSqlite3
- VC6.0编译驱动时的配置 (非第三方驱动程序开发包)
- MacBook筆記本電腦之初体验
- 自己动手写驱动禁用电脑主板喇叭!!
- Android问题集锦转载之二:Error generating final archive: Debug certificate expired on解决方案
- 整理出15个Android很有用的代码片段(技巧)ophone
- 抓包分析TCP三次握手
- 用VC6.0编译Windows驱动程序
- 主从同步
- CURL --- 命令行浏览器
- 点击可调用btnAdd的服务器事件
- vc++.net智能感知(intellisence)
- 获取指定IP地址远程主机的计算机名和Mac地址
- 学习SSH问题总结
- 802.11协议
- ASP.NET 页生命周期概述