VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序
哎,我都快要成為轉帖男了,不過有用的話我覺得還是有必要轉一下的。拿來和大家一起分享也是一種快樂!
先說明引自:http://blog.csdn.net/zzqccc/archive/2009/05/05/4151142.aspx
我希望的就是DDK(2600)+VS2005+DRIVER STUDIO(3.2)
這里的driver studio3.2不是破解版本,只能免費使用14天,難道卸載在安裝?我爭取再去找找破解版本,有了我就貼出來,沒有的話只有卸載重安裝了!
搭建好windows設備驅動程序的開發環境,終于能在VS2005中編譯出第一個測試驅動程序了,現在把安裝和編譯的過程中遇到的一些細節問題總結一下。
?
1.?WINDD下載的是2600版本,不知道跟xp sp1 DDK和xp sp2 DDK有什么區別,找后面兩個版本的DDK下載地址找了好久都沒找到,驅運之家有下載,但是要高級會員才能下,要Money。電驢里搜到一個xp sp1DDK的下載鏈接,但是下不了,在此把我找到的2600版本的下載地址貼出來
?? ftp://202.113.29.4/ISO/M$/WinDDK/winxp_ddk.rar
?
2.?注意安裝DDK時,建議將例子等全部安裝,否則Driver Studio編譯時會提示缺少頭文件
3.?在VS2005環境下,安裝Driver Studio時會有對話框彈出,單擊Ignore按鈕,解決辦法會在后面詳細說明;
??? 安裝DriverStudio3.2 過程中出現DSDDKEnv8.dll failed to register錯誤的解決方法
原因:與VS2005集成時會發生此錯誤。
解決方法,下載補丁:http://download.csdn.net/down/660936/amazingzyx
>Extract it into a temp directory.
>Copy the file DSDDKEnv8.dll into the <INSTALL_DIR>\DriverStudio\Common\Bin directory.
>Select "yes" if prompted to copy over an existing one.
>Copy the file DSDDKEnv8UI.dll into the <INSTALL_DIR>\DriverStudio\Common\Bin\1033 directory. Select "yes" if prompted to copy over an existing one.
>Then unregister the older version
Go to start->run and type "regsvr32 -u " <INSTALL_DIR> \DriverStudio\Common\ Bin\ dsddkenv8.dll"
注意〈INSTALL_DIR〉不能含有空格,否則命令無法執行,筆者曾將DriverStudio安裝在C:\Program Files下,總是運行不了,為此郁悶了好久,后經別人提點才解決此問題,但不知其原因,請問有人知道嗎?
>Then register the new copy
Go to start->run and type "regsvr32 <INSTALL_DIR>\ DriverStudio\ Common\ Bin\ dsddkenv8.dll"
>DriverStudio menu should now be part of the VisualStudio 2005 menu
?
如果在vs2005+補丁后生成的解決方案文件.sln無法雙擊打開工程時可以使用文本編輯器打開.sln文件在第二行加入“# Visual Studio 2005”保存即可,例如:
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aa", "driver\aa.vcproj", "{6A0A9D07-FD4C-4D7C-805D-48D25FB4BE6C}" EndProject
根治方法:
打開\DriverStudio\DriverWizard\Templates目錄的WdmDriver.sln.net文件
找到“Microsoft Visual Studio Solution File, Format Version 9.00”這一行,在其后下一行加入“# Visual Studio 2005”保存即可,以后用DriverWizard生成的工程就可以正常雙擊打開了。
?
4.?編譯中可能遇到的問題(VS2005環境下)
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
這個錯誤,解決方法如下:
打開project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430選項。
?
error LNK2019: unresolved external symbol
error LNK2001: unresolved external symbol
?
解決:在鏈接選項中加入 /verbose:lib,就可以看到鏈接生成執行文件時鏈接程序所要鏈接的庫的路徑。發現所有鏈接庫的路徑為DDK所在路徑。原來先前用VS寫驅動時,在VC++ Directories-->Library Files中加入了驅動庫的路徑。只要把DDK的路徑去掉,讓連接器自動尋找默認庫進行鏈接就沒有該問題了。
?
5.???? 用DriverWizard 新建的工程要在VS2005中編譯必須先設置DDK路徑,在VS2005菜單欄Toos=>DriverStudio=>DriverStudio=>DDK Build Settings中設置DDK Root Directory
6.?然后還要編譯DriverStudio安裝目錄DriverStudio\DriverWorks\source\VdwLibs2005.sln,以得到vdw_wdm.lib這個庫文件。編譯時,注意用VC打開VdwLibs2005.sln工程文件后,有兩個工程,要先將VdwLibs工程設為當前Active Project,然后右擊選擇“Property” ,在VdwLibs Property Pages中Configuration要改成“win32 Active(WDM Checked)”
?
7.?編譯驅動時,不要使用VC的"編譯",那會產生很多莫名其妙的錯誤,而應該選擇"DriverStudio"-->“Build with BUILD.exe”。
1>NMAKE :? U1073: don't know how to make 'D:\WINDDK\2600\lib\wxp\i386\ntstrsafe.lib'這個錯誤。
再上網查查。
原來driverstudio產生的驅動工程都會要連接ntstrsafe.lib這個庫,但實際上這個庫并不存在,在Project的Property pages里的Link=>Input=>Additional Dependencies項中去掉這個庫就可以了,還有說DDK2003版本就不存在這個問題,還沒試過。
于是去掉之。可是問題依然存在。
狂暈!
最后終于在網上看到一個解決辦法
就是將工程中的sources文件里邊的:
TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\csq.lib
直接刪除。就行了。
編譯后終于成了
?
?
轉載于:https://www.cnblogs.com/Torres_fans/archive/2009/12/28/1634149.html
總結
以上是生活随笔為你收集整理的VS2005+WINDDK+Driver Studio 3.2编译出第一个测试驱动程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用stsadm命令部署和激活webpa
- 下一篇: VB.NET 委托处理 传递参数