Windows 7 + Visual 2010 + WDK 7600.16385.1 配置方法


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 下!!


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com