本機環境: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)