第一个驱动程序环境配置,编写与调试(1)
2012-07-22 21:54
316 查看
对Windows 内核有严重好奇心,开始学习驱动编程.
首先建立编译环境,下载最新版WDK7600.16385.1.选择全部安装.安装完成后,有两种选择可以编写驱动程序,一个是记事本,一个VS.参考网上一篇文章.
配置VS2010+WDK
一.随便建立一个空工程.配置工程属性.新加一个.Driver
二.添加一个文件.cpp|.c 选择配置Driver.
三.右键文件属性.
1."常规"-目标文件扩展名:.sys
2."VC++目录"-
可执行文件目录:$WinDDK$\bin\x86
包含目录 :$WinDDK$\inc; $WinDDK$\inc\api;$WinDDK$\inc\ddk
库目录 :$WinDDK$\lib\win7\i386
$WinDDK$为安装路径如C:\WinDDK\7600.16385.1\;
3.“C/C++”
-预处理器-"预处理器定义"
添加定义WIN32=100;_X86_=1;WINVER=0x501;DBG=1
如果是 Release.WIN32=100;_X86_=1;WINVER=0x501;
-高级-"调用约定" 修改为 __stdcall(/Gz)
-常归-"警告等级"
设置为 /W4
将警告视为错误选为 是/WX
-优化-优化选项可以选择为 已禁用/Od
可选
-代码生成:缓冲区安全检查
否
可选
4."链接器"
-输入:"附加选项输入"
ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB
“忽略所有默认库” 选择为 是 (/NODEFAULTLIB)
-清单文件: 启用用户账户控制(UAC) 否 否则会出现 “/MANIFESTUAC”与“/DRIVER”规范不兼容
-系统: “子系统” 选择为 控制台(/SUBSYSTEM:CONSOLE)
“驱动程序” 选择为 驱动程序(/DRIVER)
-高级: “入口点” 输入为 DriverEntry
“基址” 输入为 0x10000
“随机基址” 中原来的 是 (/DYNAMICBASE) 内容删掉,只留下空的文本框,
因为 “/DYNAMICBASE”与“/DRIVER”规范不兼容
“数据执行保护(DEP)” 中原来的 是 (/NXCOMPAT:NO) 内容删除,只留下空的文本框,
因为 “/NXCOMPAT:NO”与“/DRIVER”规范不兼容
-调试: 根据当前是 Driver Debug 还是 Driver Release 选择是否生成调试信息 是(/DEBUG)
-命令行: 添加一段 /SECTION:INIT,D /IGNORE:4078
这样可以防止出现 4078的警告 【找到多个“INIT”节,它们具有不同的属性(E2000020)】
-常规: “启用增量链接” 可以设置为 否(/INCREMENTAL:NO) 可选 建议选上
还需要拷贝VS2010目录下\VC\include\sal.h 覆盖掉$WinDDK$\inc\api\sal.h
还需要拷贝VS2010目录下\VC\include]CodeAnalysis, 拷贝到 $WinDDK$\inc\api
如果使用记事本编写驱动程序.建立.c文件.写入代码.
建立makefile文件.
建立sources文件内容如下
TARGETNAME:生成的文件名
TARGETTYPE:DRIVER
SOURCES:xxx.c
多个文件用空格隔开
进入开始-Windows Driver Kit 中 Build中找到XP目录的build cmd
然后进入目录 build
但是我build时候出错了
1>errors in directory e:\(niko)\_myproject\_sys\helloworld\helloworld
1>e:\wintools-x86\winddk\7600.16385.1\bin\makefile.new(449) : error U1023: syntax error in expression
1>nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDIR_RELATIVE_TO_BASEDIR= failed - rc = 2
终于找到错误原因是 文件目录包含__
开始驱动编程
首先建立编译环境,下载最新版WDK7600.16385.1.选择全部安装.安装完成后,有两种选择可以编写驱动程序,一个是记事本,一个VS.参考网上一篇文章.
配置VS2010+WDK
一.随便建立一个空工程.配置工程属性.新加一个.Driver
二.添加一个文件.cpp|.c 选择配置Driver.
三.右键文件属性.
1."常规"-目标文件扩展名:.sys
2."VC++目录"-
可执行文件目录:$WinDDK$\bin\x86
包含目录 :$WinDDK$\inc; $WinDDK$\inc\api;$WinDDK$\inc\ddk
库目录 :$WinDDK$\lib\win7\i386
$WinDDK$为安装路径如C:\WinDDK\7600.16385.1\;
3.“C/C++”
-预处理器-"预处理器定义"
添加定义WIN32=100;_X86_=1;WINVER=0x501;DBG=1
如果是 Release.WIN32=100;_X86_=1;WINVER=0x501;
-高级-"调用约定" 修改为 __stdcall(/Gz)
-常归-"警告等级"
设置为 /W4
将警告视为错误选为 是/WX
-优化-优化选项可以选择为 已禁用/Od
可选
-代码生成:缓冲区安全检查
否
可选
4."链接器"
-输入:"附加选项输入"
ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB
“忽略所有默认库” 选择为 是 (/NODEFAULTLIB)
-清单文件: 启用用户账户控制(UAC) 否 否则会出现 “/MANIFESTUAC”与“/DRIVER”规范不兼容
-系统: “子系统” 选择为 控制台(/SUBSYSTEM:CONSOLE)
“驱动程序” 选择为 驱动程序(/DRIVER)
-高级: “入口点” 输入为 DriverEntry
“基址” 输入为 0x10000
“随机基址” 中原来的 是 (/DYNAMICBASE) 内容删掉,只留下空的文本框,
因为 “/DYNAMICBASE”与“/DRIVER”规范不兼容
“数据执行保护(DEP)” 中原来的 是 (/NXCOMPAT:NO) 内容删除,只留下空的文本框,
因为 “/NXCOMPAT:NO”与“/DRIVER”规范不兼容
-调试: 根据当前是 Driver Debug 还是 Driver Release 选择是否生成调试信息 是(/DEBUG)
-命令行: 添加一段 /SECTION:INIT,D /IGNORE:4078
这样可以防止出现 4078的警告 【找到多个“INIT”节,它们具有不同的属性(E2000020)】
-常规: “启用增量链接” 可以设置为 否(/INCREMENTAL:NO) 可选 建议选上
还需要拷贝VS2010目录下\VC\include\sal.h 覆盖掉$WinDDK$\inc\api\sal.h
还需要拷贝VS2010目录下\VC\include]CodeAnalysis, 拷贝到 $WinDDK$\inc\api
如果使用记事本编写驱动程序.建立.c文件.写入代码.
建立makefile文件.
建立sources文件内容如下
TARGETNAME:生成的文件名
TARGETTYPE:DRIVER
SOURCES:xxx.c
多个文件用空格隔开
进入开始-Windows Driver Kit 中 Build中找到XP目录的build cmd
然后进入目录 build
但是我build时候出错了
1>errors in directory e:\(niko)\_myproject\_sys\helloworld\helloworld
1>e:\wintools-x86\winddk\7600.16385.1\bin\makefile.new(449) : error U1023: syntax error in expression
1>nmake.exe /nologo BUILDMSG=Stop. -i BUILD_PASS=PASS2 LINKONLY=1 NOPASS0=1 MAKEDIR_RELATIVE_TO_BASEDIR= failed - rc = 2
终于找到错误原因是 文件目录包含__
开始驱动编程
相关文章推荐
- 第一个驱动程序环境配置,编写与调试(2)
- Java入门-第一节-jdk的安装,环境变量的配置及第一个程序的编写。
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- Windows8.1驱动编写以及内核调试(一) 做好准备工作并编写第一个驱动程序
- Android驱动程序开发和调试环境配置
- 汇编环境配置以及代码编写调试
- Android驱动程序开发和调试环境配置 推荐
- 【转帖】VMWare和WinDbg调试驱动程序环境配置
- PHP开发环境搭建 (XAMPP+Xdebug+netbeans,配置调试),创建第一个php项目
- 用windbg和VMware虚拟机调试驱动程序环境配置
- 配置java开发环境及使用记事本编写第一个最简单的java程序
- 越狱开发:用iosOpenDev配置越狱开发环境 编写第一个hello world-b
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- VC6.0配置汇编环境并编写第一个Hello World程序
- 越狱开发:用iosOpenDev配置越狱开发环境 编写第一个hello world
- 【安装eclipse, 配置java环境教程】 编写第一个java程序
- 史上最佳 Mac+PhpStorm+XAMPP+Xdebug 集成开发和断点调试环境的配置
- PHP5环境非安装配置 以及 EClipse单步调试配置 的方法 100%成功
- PHP学习笔记 (1)-环境配置与代码调试