windows驱动开发技术详解 VC6与DDK搭配使用的设置
2015-08-07 15:10
561 查看
在《windows驱动开发技术详解》中作者提供了两种调式内核程序的方法,有两种编译驱动的办法,一种是用DDK环境来编译,需要在源代码所在目录下创建两个文件makefile和Sources,另一种为vc搭配DDK使用,但不需要写makefile和source文件,
第一种 DDK环境来编译
写好文件,在开始菜单中选择“Windows XP Checked Build Environment”编译环境,用cd命令进入需要编译的目录,输入”build“命令就可以,编译后的驱动位于objchk_wxp_x86"i386目录下,名为HelloDDK.sys
第二种编译方式是使用VC++进行编译
1,用vc新建工程。在"project"选项卡中,选择win32 Application,选择一个空的工程。
2,将两个源文件Driver.h和Driver.cpp拷贝到工程目录中,并添加到工程中。
3,增加新的编译版本,去掉Debug 和Release 版本,增加一个Win32 Driver Check Edition
4,修改工程属性。选择"Project|Setting",或者直接按下Alt+F7键,弹出"Project Settings"。在对话框中,选择“General”选项卡。将Intermediate files和Output files都改为MyDriver_Check.
5,选择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
6,选择Link选项卡,将原有的Project Options 内容全部删除,替换成如下内容
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys"
/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
7。修改VC的lib目录和include目录。
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加
D:/WINDDK/3790.1830/INC/W2K
D:/WINDDK/3790.1830/INC/DDK/W2K
并将这两个目录置于最上。
在"Show directories for "下拉菜单中选择“Library files”菜单,添加目录
D:/WINDDK/3790.1830/LIB/W2K/I386
并置于最上端。
8,按照书上所述的步骤做完后编译,会报错如下:
fatal error C1083: Cannot open include file: 'specstrings.h': No such file or directory
原因是include目录设置没完整,加入如下目录既可以正确编译
D:/WINDDK/3790.1830/INC/CRT
当然,以上设置为调式NT式的驱动程序,如果你调式WDM式的驱动程序,vc会提示找不到WDM.H头文件,这是我们应该在
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加
D:/WINDDK/3790.1830/inc/ddk/wdm/w2k
这时再摁F7,你就会发现程序就正常执行了,终于解决了这个小问题。。
舒服、、、、、
第一种 DDK环境来编译
写好文件,在开始菜单中选择“Windows XP Checked Build Environment”编译环境,用cd命令进入需要编译的目录,输入”build“命令就可以,编译后的驱动位于objchk_wxp_x86"i386目录下,名为HelloDDK.sys
第二种编译方式是使用VC++进行编译
1,用vc新建工程。在"project"选项卡中,选择win32 Application,选择一个空的工程。
2,将两个源文件Driver.h和Driver.cpp拷贝到工程目录中,并添加到工程中。
3,增加新的编译版本,去掉Debug 和Release 版本,增加一个Win32 Driver Check Edition
4,修改工程属性。选择"Project|Setting",或者直接按下Alt+F7键,弹出"Project Settings"。在对话框中,选择“General”选项卡。将Intermediate files和Output files都改为MyDriver_Check.
5,选择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
6,选择Link选项卡,将原有的Project Options 内容全部删除,替换成如下内容
ntoskrnl.lib /nologo /base:"0x10000" /stack:0x400000,0x1000 /entry:"DriverEntry" /subsystem:console /incremental:no /pdb:"MyDriver_Check/HelloDDK.pdb" /map:"MyDriver_Check/HelloDDK.map" /debug /machine:I386 /nodefaultlib /out:"MyDriver_Check/HelloDDK.sys"
/pdbtype:sept /subsystem:native /driver /SECTION:INIT,D /RELEASE /IGNORE:4078
7。修改VC的lib目录和include目录。
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加
D:/WINDDK/3790.1830/INC/W2K
D:/WINDDK/3790.1830/INC/DDK/W2K
并将这两个目录置于最上。
在"Show directories for "下拉菜单中选择“Library files”菜单,添加目录
D:/WINDDK/3790.1830/LIB/W2K/I386
并置于最上端。
8,按照书上所述的步骤做完后编译,会报错如下:
fatal error C1083: Cannot open include file: 'specstrings.h': No such file or directory
原因是include目录设置没完整,加入如下目录既可以正确编译
D:/WINDDK/3790.1830/INC/CRT
当然,以上设置为调式NT式的驱动程序,如果你调式WDM式的驱动程序,vc会提示找不到WDM.H头文件,这是我们应该在
在vc中选择"Tools"|"Options",在弹出的对话框中选择“Directories”选项卡。在“Show directories for”下拉菜单中选择“Include files”菜单,添加
D:/WINDDK/3790.1830/inc/ddk/wdm/w2k
这时再摁F7,你就会发现程序就正常执行了,终于解决了这个小问题。。
舒服、、、、、
相关文章推荐
- gcc 源码分析-前端篇1
- shell基础命令
- leetcode面试准备:Lowest Common Ancestor of a Binary Search Tree & Binary Tree
- HDU 3683 Gomoku 模拟 胜局判断
- 常量指针 和 指针常量
- ARM Linux系统的时钟机制
- 小P寻宝记——粗心的基友 SDUT 2825
- ESD静电问题终极解决方案
- mysql 数据表读锁机制详解
- Jquery 分页插件
- centOS简单优化
- 最大流 dinic算法模板
- iTOP-4412精英版---清凉暑期 全面升级
- MFC自定义消息
- leetcode难度及面试频率
- 用IKVMC将jar转成dll供c#调用
- System.AccessViolationException,尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
- 级联
- HDU 5360(2015多校6)-Hiking(优先队列)
- 基于VS2012的OpenCv2.4.9的一次性配置