vs2005与wdk 驱动开发环境配置

vs2005与wdk 驱动开发环境配置
Posted on 2009/6/30 22:58
Posted by 枫之羽 in 内核安全编程 , 本站原创

1、首先在VS2005中建立一个C++ DLL的空项目

2、打开配置管理器,新建配置一个配置如myprofile,把myprofile设为活动的。注意不要使用Debug或Realse,否则后面会出现奇怪错误。

3.打开项目配置,点击c/C++页,在附加包含目录中,添加

     G:/WinDDK/6001.18002/inc/crt

    G:/WinDDK/6001.18002/inc/api;

    G:/WinDDK/6001.18002/inc/ddk

    分别是CRT,Api,ddk的目录,这个要驱动开发包,安装在哪里了


4、”调试信息格式“   选择  C7兼容(/Z7) 用Z7模式产生调试信息
5、取消显示启动版权标志   选择    是(/nologo)  (默认)
6、警告等级  选择    3 级(/W3)
7、将警告视为错误    选择   是(/WX)
8、在优化选项卡中,禁用/Od

9、预处理中 添加 WIN32=100;_X86_=1;DBG=1  宏

10、在高级中,调用约定使用标准的 __stdcall (/Gz)

11、进入链接器中

12、修改输出文件的扩展名为 sys

13、不启用增量链接

14、在附加依赖项中,添加Wdm.lib,并不继承父级或项目默认设置  “ntoskrnl.lib ntstrsafe.lib hal.lib BufferOverflowK.lib wdm.lib $(NOINHERIT)”

15、不生成清单

16、生成调试信息

17 、进入系统中

18、选择本机子系统

19、选择wdm驱动程序

20、进入高级

21、设置入口点DriverEntry

22、目标计算机    MachineX86 (/MACHINE:X86)

23、随机基址 为默认值

24、数据执行保护DEP为默认值

25、在常规中设置,附加目录 添加

G:/WinDDK/6001.18002/lib/crt/i386;

G:/WinDDK/6001.18002/lib/wxp/i386
下面是测试的代码


#include <ntddk.h>
  
// 提供一个Unload函数只是为了
VOID DriverUnload(PDRIVER_OBJECT driver)
{
  // 但是实际上我们什么都不做,只打印一句话:
  DbgPrint("first: Our driver is unloading…/r/n");
}

// DriverEntry,入口函数。相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
#if DBG
//       _asm int 3
#endif
  // 这是我们的内核模块的入口,可以在这里写入我们想写的东西。
  // 我在这里打印一句话。因为”Hello,world” 常常被高手耻笑,所以
  // 我们打印一点别的。
  DbgPrint("first: Hello, my wdk dirver!");

  // 设置一个卸载函数便于这个函数能退出。
  driver->DriverUnload = DriverUnload;
  return STATUS_SUCCESS;
}



方法2


1.VS2005新建工程,然后创建一个项目。

2.对项目名称点右键,进入项目属性。点击“常规”

3.上图右栏“项目默认值”中的“配置类型”,

    点击,然后选择“生成文件”

   然后“应用”,此时该窗口会变为:

4.点击“NMake”,

(我的WDK安装在 C:/WinDDK 目录中)

   单击“包含搜索路径”,进行如下设置  

            C:/WinDDK/6001.18001/inc/api;

            C:/WinDDK/6001.18001/inc/ddk

 

    单击“程序集搜索路径”,进行如下设置

 

单击" "生成"命令行 " ,作如下设置。

     (zymakedrv是一个.bat文件,

C:/WinDDK/6001.18001是WDK的安装路径,

      E:后面有一个空格,那是项目路径)

     zymakedrv C:/WinDDK/6001.18001(空格,然后接下行)

E: /driver/VS2005/notepad/notepad_head chk WXP -e

 

5. zymakedrv.bat文件的内容(此文件放在项目目录下)

@echo off
if "%1"=="" goto usage
if "%3"=="" goto usage
if not exist %1/bin/setenv.bat goto usage
call %1/bin/setenv.bat %1 %4 %5

rem changing current directory to specified project
%2
cd %3
build.exe -b -w %6 %7 %8 %9 %10

goto exit

:usage
echo zymakedrv.bat usage:
echo.
echo   zymakedrv.bat [DDK_path(%%1)] [project_volume(%%2):] [project_path(%%3)] [fre/chk(%%4)] [wxp/wnet/w2k(%%5)] [other_build_options(%%6+)]
echo.
echo   options (%%1),(%%4),(%%5) is for setenv.bat which is in DDK_path(%%1)/bin.
echo   options (%%2),(%%3) is for changing current directory to specified project.
echo   options (%%6+) is for build.exe which is in DDK_path(%%1)/bin/x86.
echo.
echo e.g.
echo zymakedrv.bat D:/tool/develop_tool/WINDDK/3790.1830 D: /source/c_c++/learn/LearnDriver/DriverTest_1 chk wxp -ceZ
rem  %0            %1                                    %2 %3                                           %4  %5  %6
echo zymakedrv.bat D:/tool/develop_tool/WINDDK/3790 D: /source/c_c++/learn/LearnDriver/SfilterEx chk WXP -e
rem  %0           %1                               %2 %3                                        %4  %5  %6

:exit

7.把微软的sfilter示例代码复制出来,新建一个工程,只要做以上修改。就可以编译。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值