1. 新建一個空DLL項目
2. 增加一個主程序文件,如 entry.c
3. 找到配置管理器,添加一個新的配置叫做 Driver Debug(以后還可以再設置一個Driver Release),如圖
4. 在屬性管理器上找到 Driver Debug,右鍵菜單中找到“屬性”,開始配置
5. 在“常規”選項卡中
5.1 目標文件擴展名:修改為 .sys
5.2 清除時要刪除的擴展名:添加一個 *.sys,其他繼承原來的系統設置
6. “VC++目錄”選項卡中
6.1 可執行文件目錄: 添加一條 F:/WinDDK/7600.16385.1/bin/x86
6.2 包含目錄:添加三條,分別為 F:/WinDDK/7600.16385.1/inc
F:/WinDDK/7600.16385.1/inc/api
F:/WinDDK/7600.16385.1/inc/ddk
6.3 庫目錄: 添加一條 F:/WinDDK/7600.16385.1/lib/win7/i386
7. “C/C++” 選項卡中
7.1 預處理器: “預處理器定義” 添加定義 WIN32=100;_X86_=1;WINVER=0x501;DBG=1 如果是 Release,那么可想而知,不需要 DBG=1
7.2 高級: “ 調用約定” 修改為 __stdcall(/Gz)
7.3 常規: “警告等級”設置為 /W4 將警告視為錯誤選為 是/WX
其他為建議可選項目
優化: 優化選項可以選擇為 已禁用/Od
代碼生成: 緩沖區安全檢查 否
8. “鏈接器” 選項卡中
8.1 輸入: 在“附加依賴項”中輸入 ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB
把“忽略所有默認庫” 選擇為 是 (/NODEFAULTLIB)
8.2 清單文件: 啟用用戶賬戶控制(UAC) 否 否則會出現 “/MANIFESTUAC”與“/DRIVER”規范不兼容
8.3 系統: “子系統” 選擇為 控制台(/SUBSYSTEM:CONSOLE)
“驅動程序” 選擇為 驅動程序(/DRIVER)
8.4 高級: “入口點” 輸入為 DriverEntry
“基址” 輸入為 0x10000
把 “隨機基址” 中原來的 是 (/DYNAMICBASE) 內容刪掉,只留下空的文本框,因為 “/DYNAMICBASE”與“/DRIVER”規范不兼容
把 “數據執行保護(DEP)” 中原來的 是 (/NXCOMPAT:NO) 內容刪除,只留下空的文本框,因為 “/NXCOMPAT:NO”與“/DRIVER”規范不兼容
8.5 調試: 根據當前是 Driver Debug 還是 Driver Release 選擇是否生成調試信息 是(/DEBUG)
8.6 命令行: 添加一段 /SECTION:INIT,D /IGNORE:4078 這樣可以防止出現 4078的警告 【找到多個“INIT”節,它們具有不同的屬性(E2000020)】
其他為可以選擇的選項
常規: “啟用增量鏈接” 可以設置為 否(/INCREMENTAL:NO) 建議選上
這樣編譯環境就設置完成了,還可以再添加一個 Driver Release 版本,去掉調試信息
但是,這樣設置還是會有一堆編譯錯誤,如:
C:/Program Files/Microsoft Visual Studio 10.0/VC/include/crtdefs.h(550): error C2143: syntax error : missing ')' before 'const'
C:/Program Files/Microsoft Visual Studio 10.0/VC/include/crtdefs.h(550): error C2143: syntax error : missing '{' before 'const'
C:/Program Files/Microsoft Visual Studio 10.0/VC/include/crtdefs.h(550): error C2059: syntax error : ','
C:/Program Files/Microsoft Visual Studio 10.0/VC/include/crtdefs.h(550): error C2059: syntax error : ')'
C:/Program Files/Microsoft Visual Studio 10.0/VC/include/excpt.h(56): error C2143: syntax error : missing ')' before 'type'
那么這時候需要拷貝F:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/include/sal.h,然后覆蓋掉F:/WinDDK/7600.16385.1/inc/api/sal.h
這樣就會導致另外一個問 題,Microsoft Visual Studio 10.0/VC/include/sal.h 中include了CodeAnalysis/sourceannotations.h,所以如果在編譯環境中調用build,會出現錯誤找不 到 sourceannotations.h,所以要:
把 Microsoft Visual Studio 10.0/VC/include/CodeAnalysis 拷貝到 F:/WinDDK/7600.16385.1/inc/api 下!!
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。