VS2003 驱动编程环境配置

 本机环境:winXP SP3 + DDk3790.1830安全

下载:cookie

DDK3790.1830多线程

http://pan.baidu.com/s/1jG9f9Oi函数

http://download.microsoft.com/download/9/0/f/90f019ac-8243-48d3-91cf-81fc4093ecfd/1830_usa_ddk.iso 工具


1、新建一个空的 win32控制台程序测试

 1、选(文件→新建→项目→Visual C++项目→win32win32控制台项目)建立一个优化





填写上名称event而后按肯定
在弹出的win32应用程序向导里 选应用程序设置 →附加选项 勾选空项目→完成。


spa

 

二   选项目菜单→添加现有项→添加全部驱动相关的*.h,*.c,*.cpp,*.rc之类的文件。.net

3、 选工具(T)→选项(O)....→项目→VC++目录→命令行

  1可执行文件目录中添加:(注意顺序)

    D:\WINDDK\3790.1830\BIN\X86

 


  2、在包含文件目录添加以下路径(注意顺序) (须要安装DDK)

    D:\WINDDK\3790.1830\inc\wxp
    D:\WINDDK\3790.1830\inc\crt 
    D:\WINDDK\3790.1830\inc\ddk\wxp
 


  3库文件目录中添加:(注意顺序)

    D:\WINDDK\3790.1830\LIB\WXP\I386

 

4、 项目event属性设置 

新建项目配置 check //必选

()C/C++属性设置

    常规选项卡

        调试信息格式:C7 兼容(/Z7)

        警告等级:2 级(/W2)

        将警告视为错误:是(/WX)


   优化选项卡

      优化:禁用(/Od) 

  预处理器

      预处理器定义:WIN32=100;_X86_=1;WINVER=0x501;DBG=1 

  代码生成

     启用最小从新生成:否  

        基本运行时检查:默认值

        运行时库:多线程调试(/MTd) 或 多线程(/MT) 

        缓冲区安全检查:否 (可避免出现 LINK : error LNK2001: 没法解析外部符号 __security_cookie)

  高级

    调用约定:__stdcall(/Gz) 

      编译为:默认


(二)连接器

  常规:

     输出文件:$(OutDir)\$(ProjectName).sys 

     启用增量连接:否(/INCREMENTAL:NO)

      忽略导入库:是  ( 设置为此值时,必须在附加库目录中加:D:\WINDDK\3790.1830\lib\wxp\i386 ,这样项目就不会依赖IDE环境的设置 )   否 设置为此值时,将依赖 IDE 的环境的相关设置 )

    输入:

    附加依赖项:ntoskrnl.lib Hal.lib wdm.lib wdmsec.lib wmilib.lib ndis.lib MSVCRT.LIB LIBCMT.LIB   

         //NT式驱动 ntoskrnl.lib  WDM式驱动  wdm.lib

          ( HalXXX函数在Hal.libWmiXXX函数在 wmilib.lib NdisXXX函数在 ndis.lib )
            ( 必要时须要增长微软的标准库 MSVCRT.LIB MSVCRTD.LIB(调试库) LIBCMT.LIBIBCMTD.LIB(调试库) )
            
( 若是源码中有 source 文件,那么该文件的 TARGETLIBS 字段会列出该项目须要的库 )

   忽略全部默认库:是(/NODEFAULTLIB)

    

    调试:

    生成调试信息:是(/DEBUG) 

       生成映像文件:是(/MAP)

       映像文件名:$(TargetDir)$(TargetName).map

    系统(System)

     子系统控制台(/SUBSYSTEM:CONSOLE)

        堆栈保留大小:4194304

        堆栈提交大小:4096

    高级:

        入口点:DriverEntry

        设置校验和:是(/RELEASE)

        基址:0x10000

  命令行”->附加选项:

     附加选项:

                /DRIVER

                /subsystem:native

                /IGNORE:4198,4010,4037,4039,4065,4070,4078,4087,4089,4221

                /SECTION:INIT,d


驱动测试:

测试方法->把event.c文件附加至工程->编译

//event.c
#include <ntddk.h>
VOID DriverUnload(PDRIVER_OBJECT pdrvier)
{
	DbgPrint("驱动被卸载了!");
}
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING path_reg)
{
	DbgPrint("驱动被加载了!");
	pDriverObject->DriverUnload=DriverUnload;
	return 1;
}

(完)

 

 

 编者:richardx(http://my.oschina.net/richardx)

相关文章
相关标签/搜索