新建一個空的win32控制臺程序
1、選(文件→新建→項目→Visual C++項目→win32→win32控制臺項目)創建一個
填寫上名稱event然后按確定
在彈出的win32應用程序向導里 選應用程序設置 →附加選項 勾選空項目→完成。
二 、 選項目菜單→添加現有項→添加所有驅動相關的*.h,*.c,*.cpp,*.rc之類的文件。
選工具(T)→選項(O)....→項目→VC++目錄→
1、在可執行文件目錄中添加:
D:/WINDDK/3790.1830/BIN/X86 //VS2003(沒測),VS2005(沒測),VS2008內不需要
2、在包含文件目錄添加如下路徑
D:/WINDDK/3790.1830/inc/wxp
D:/WINDDK/3790.1830/inc/crt (可選)
D:/WINDDK/3790.1830/inc/ddk/wxp
D:/WINDDK/3790.1830/inc/ddk/wdm/wxp
3、在庫文件目錄中添加:
D:/WINDDK/3790.1830/LIB/WXP/I386
項目event屬性設置
新建項目配置check //必選
(一)C/C++屬性設置
常規選項卡
1調試信息格式(C7兼容(/Z7) //可選
2警告等級 (2級(/W2) //可選
3將警告視為錯誤(是(/wx) //可選
優化選項卡
1優化(禁用/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 //必選其12
//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)
清單文件:
啟用用戶賬戶控制(UAC) 否//必選 不然會出現 >LINK : fatal error LNK1295: “/MANIFESTUAC”與“/DRIVER”規范不兼容;鏈接時不使用“/MANIFESTUAC”
調試:
生成調試信息 是(/DEBUG) //可選
生成映像文件:是(/MAP) //可選
映像文件名:$(TargetDir)$(TargetName).map //可選
系統(System):
子系統:控制臺(/SUBSYSTEM:CONSOLE) //必選
堆棧保留大小:4194304 //可選
堆棧提交大小:4096 //可選
驅動程序: 驅動程序(/DRIVER) //必選
高級:
入口點:DriverEntry //必選
隨機基址:默認值 //必選 不然會出現 1>G:/event2008/check/event2008.exe : fatal error LNK1295: “/DYNAMICBASE”與“/DRIVER”規范不兼容;鏈接時不使用“/DYNAMICBASE”
數據執行保護(DEP): 默認值//必選 不然會出現G:/event2008/check/event2008.sys : fatal error LNK1295: “/NXCOMPAT:NO”與“/DRIVER”規范不兼容;鏈接時不使用“/NXCOMPAT:NO”
設置效應和:是(/RELEASE) //可選
基址:0x10000 //建議選上
命令行”->附加選項:
添加開關:/SECTION:INIT,D /IGNORE:4078 //建議填上
可以避免以下錯誤提示
LINK : warning LNK4078: 找到多個“INIT”節,它們具有不同的屬性(E2000020)
LINK : error LNK2001: 無法解析的外部符號__load_config_used
五.編譯,鏈接。
一些要修改DDK例子源碼方能成功的問題,目前不知道什么選項可以不改:
源碼中的關鍵字try 要改為__try , except 要改為__except .