Vs2010 配置驅動開發環境配置


1、安裝VS2010,安裝WDK 7.0(DDK);

2、新建VC++->空項目

3、打開(生成-->配置管理器) 並新建一個名稱為"Dirver"的解決方案配置 從此處復制設置:debug

並將"Dirver" 設為活動解決方案配置。

4、打開 視圖 -> 屬性管理器。

5、在"Dirver" 解決方案配置 上點擊右鍵,選擇 添加新項目屬性表 取名為"dirverProperty" 並對他進行以下設置。
5.1 C\C++ 常規 調試信息格式 = 程序數據庫(/ZI)

5.2 C\C++ 預處理器 - 預處理器定義 = _X86_
_WIN32_WINNT=0x0500

5.3 C\C++ 代碼生成 - 啟用 C++ 異常 = 否

5.4 C\C++ 代碼生成 - 基本運行時檢查 = 默認

5.5 C\C++ 代碼生成 - 緩沖區安全檢查 = 否(/GS-)

5.6 C\C++ 高級 - 調用約定 = __stdcall(/Gz)

5.7 C\C++ 高級 - 編譯為 = 編譯為C代碼(/Tz)

5.8 鏈接器 - 常規 - 輸出文件 = $(OutDir)\$(ProjectName).sys

5.9 鏈接器 - 常規 - 啟用增量鏈接 = 默認

5.10 鏈接器 - 輸入 - 附加依賴項 = *
ntoskrnl.lib
hal.lib
wdm.lib
wdmsec.lib
wmilib.lib
ndis.lib
MSVCRT.LIB
LIBCMT.LIB
5.11 鏈接器 - 輸入 - 忽略所有默認庫 = 是(/NODEFAULTLIB)

5.12 鏈接器 - 清單文件 - 生成清單 = 否(/MANIFEST:NO)

5.13 鏈接器 - 系統 - 子系統 = 本機(/SUBSYSTEM:NATIVE)

5.14 鏈接器 - 系統 - 驅動程序 = 驅動程序(/Driver)

5.15 鏈接器 - 高級 - 入口點 = DriverEntry

5.16 鏈接器 - 高級 - 基址 = 0x10000

5.17 鏈接器 - 高級 - 隨機基址 = 置空 *

5.18 鏈接器 - 高級 - 數據執行保護 = 置空 *

5.19 通用屬性-常規 - 目標文件擴展名 =.sys


6、配置vc++目錄

6.1 視圖 - 屬性管理器

展開 Dirver -> 找到 Microsoft.Cpp.Win32.user 右鍵 -> 屬性

打開 VC++ 目錄

包含目錄 =

D:\WinDDK\7600.16385.1\inc
D:\WinDDK\7600.16385.1\inc\ddk
D:\WinDDK\7600.16385.1\inc\api

庫目錄 =

D:\WinDDK\7600.16385.1\lib\wnet\i386

 

============================================

但是這樣配置的在運行helloworld時基本上不會報錯,但是一旦往后面寫,比如說在某個程序中調用ObDereferenceObject,

就會發現error LNK2019: 無法解析的外部符號 _ObfDereferenceObject@4,該符號在函數 _ccpOpenCom@8 中被引用


這時解決方案是

寫道
最后發現我配置的vs2010中c/c++中預處理器定義里面的
就是5.2. C\C++ - Preprocessor - Preprocessor Definitions
_WIN32_WINNT=0x0400這句有問題,刪掉_WIN32_WINNT=0x0400這句,再次編譯連接就生成成功了,所以說網上給的那個vs2010配置驅動好像有點問題,
目前進展就到這里.


===========================

ClCompile:
mogui.cpp
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 語法錯誤 : 缺少“)”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 語法錯誤 : 缺少“{”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 語法錯誤:“,”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 語法錯誤 : 缺少“)”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 語法錯誤 : 缺少“{”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 語法錯誤:“,”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(56): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(56): error C2085: “_ExceptionRecord”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(57): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(57): error C2085: “_EstablisherFrame”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2085: “_Inout_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2085: “_ContextRecord”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(59): error C2085: “_Inout_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(59): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(60): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(60): error C2085: “_DispatcherContext”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(104): error C2082: 形參“_exception_code”的重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(105): error C2082: 形參“_exception_info”的重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(106): error C2082: 形參“_abnormal_termination”的重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(92): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_isctype_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_In_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_Type”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(94): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2086: “int _Check_return_”: 重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 參見“_Check_return_”的聲明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_isalpha_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(96): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2086: “int _Check_return_”: 重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 參見“_Check_return_”的聲明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_isupper_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(98): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2086: “int _Check_return_”: 重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 參見“_Check_return_”的聲明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_islower_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(100): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2086: “int _Check_return_”: 重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 參見“_Check_return_”的聲明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_isdigit_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(102): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2086: “int _Check_return_”: 重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 參見“_Check_return_”的聲明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_isxdigit_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(104): error C2061: 語法錯誤: 標識符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2086: “int _Check_return_”: 重定義
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 參見“_Check_return_”的聲明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2054: 在“_Check_return_”之后應輸入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2143: 語法錯誤 : 缺少“)”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_isspace_l”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2143: 語法錯誤 : 缺少“;”(在“類型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_C”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_In_opt_”: 不在形參表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2146: 語法錯誤: 缺少“,”(在標識符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2146: 語法錯誤: 缺少“,”(在標識符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2059: 語法錯誤:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): fatal error C1003: 錯誤計數超過 100;正在停止編譯


如果出現類似如下編譯錯誤,解決方法是:拷貝C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h,然后覆蓋掉C:\WinDDK\7600.16385.1\inc\api\sal.h。

===============================================


mogui.cpp
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.exe) 與 Linker 的 OutputFile 屬性值(d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.sys)不匹配。這可能導致項目生成不正確。若要更正此問題,請確保 $(OutDir)、$(TargetName) 和 $(TargetExt) 屬性值與 %(Link.OutputFile) 中指定的值匹配。
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetExt(.exe) 與 Linker 的 OutputFile 屬性值(.sys)不匹配。這可能導致項目生成不正確。若要更正此問題,請確保 $(OutDir)、$(TargetName) 和 $(TargetExt) 屬性值與 %(Link.OutputFile) 中指定的值匹配。
LINK : warning LNK4039: 用 /SECTION 選項指定的節“INIT”不存在
driverp.vcxproj -> d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.exe

 

解決修改通用——>常規——>目標文件擴展名為:.sys

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM