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