本机环境: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++项目→win32→win32控制台项目)建立一个优化
填写上名称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.lib,WmiXXX函数在 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)