關於Driver Studio 3.2 的安裝詳解

關於Driver Studio 3.2 的安裝詳解

經過對VC、WINDDK、Driver Studio這三個軟件反覆的安裝,終於可以使Driver Studio能在VC環境下正常編譯了。俗話說久病成醫,遇到的問題多了,自然就有了很多解決問題的方法,現在拿出來和大家一起分享一下。

1、分別安裝VC、WINDDK、Driver Studio,爲:VC-〉WINDDK-〉 Driver Studio。其實順序也可以變一下的,筆者曾試過VC-〉 Driver Studio -〉WINDDK,沒問題的,但最好按建議順序安裝;

2、注意安裝DDK時,建議將例子等全部安裝,否則Driver Studio編譯時會提示缺少頭文件;

3、在VS2005環境下,安裝Driver Studio時會有對話框彈出,單擊Ignore按鈕,解決辦法會在後面詳細說明;

4、選擇“DriverStudio->DDK Build Setting”,在“DDK Root Directory”選項中選入DDK目錄,例如“C:/WINDDK/2600”。爲了防止每次啓動VC來編譯WDM時,都要設置DDK目錄,可以在“控制面板”的“系統”-〉“高級”-〉“環境變量E”設置中,添加一個值爲C:/WINDDK/2600的系統變量BASEDIR;

5、用VC打開“…/DriverStudio/DriverWorks/source/VdwLibs.dsw”,用 Driver Studio進行編譯,如果編譯成功就OK了,然後可以進行驅動的開發了。

6、利用DriverWizard嚮導對所要開發的驅動類型進行正確配置,生成所需要的驅動工程框架。

Vista下安裝DriverStudio3.2出現Internal Error 2738

以Adminstrator的身份運行CMD,然後輸入:regsvr32 vbscript.dll

安裝DriverStudio3.2 過程中出現DSDDKEnv8.dll failed to register錯誤的解決方法
原因:與VS2005集成時會發生此錯誤。
解決方法,補丁:ftp://ftp.compuware.com/pub/driverstudio/outgoing/patch/DSDDKEnv.zip
>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生成的工程就可以正常雙擊打開了。

編譯中可能遇到的問題(VS2005環境下)
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
這個錯誤,解決方法如下:
打開project->BaseClasses properties->configuration->C/C++ ->Command Line,增加/wd4430選項。
NextNode()或其他函數沒有返回類型的原因,你的代碼可能是從VC++裏遷移到VS2005裏面來編譯出現的錯誤吧,在VC裏你的函數沒有返回類型他自動默認爲INT,但在VS2005裏就要報你上面的錯誤!

windows驅動程序開發環境配置

網上有很多關於驅動開發環境的資料,但大多不全。

這裏,個人推薦使用vc6.0+DriverStudio3.2+windows ddk2600。

vc6.0大家再熟悉不過的了,也許你可能喜歡使用vc8.0,也就是.net 2005,它功能強大,調試方便,但這裏還是推薦6.0,因爲,ds會在vc6.0開發環境中另外增加一個導航工具條,很方便,同時也會增加一個菜單欄。

vc6.0安裝完畢後,再安裝windows ddk,其安裝包可以在網上搜索到,建議去微軟官方網站下載。具體下載哪個,得根據你電腦的操作系統來定,我的是windows xp,所以安裝了windows xp ddk。

最後,安裝DriverStudio,全稱Compuware DriverStudio ,目前通用版本爲3.2。

編譯ddk包

進入到....../Compuware/DriverStudio目錄下,我們可以看到兩個文件夾,DriverNetworks 和 DriverWorks,裏面分別有BuildAllDNW.bat和BuildAllDW.bat,我們在命令行下面分別cd至這兩個目錄,再運行這兩個批處理文件,可以看到提示,提示中說明了運行的格式,即:BuildAllDNW(或者BuildAllDW) D:/winddk/2600(ddk的安裝路徑,這個是我機器上的路徑) WinXP(操作系統版本) x86(我的CPU類型)。回車即可。把兩個批處理類似運行,就可以了,如果不編譯,系統會報錯,說沒有.lib靜態庫文件。

開始第一個工程

打開vc6.0,設置ddk路徑,選擇菜單中或者工具條中的 ddk build settings,把ddk的根目錄root directory設置好,我的是“D:/WINDDK/2600”。然後選擇菜單或工具條第一項,啓動新建工程嚮導,一步步下去就可以了。編譯時選擇菜單或工具條第四項。

don't know how to make 'D:/WINDDK/2600/lib/wxp/i386/ntstrsafe.lib' 解決辦法

driverstudio產生的驅動工程都會要連接ntstrsafe.lib這個庫,但實際上這個庫並不存在,在Project的Settings裏的Link項中去掉這個庫,然後在工程中的sources文件裏邊,找到下面一行:
TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib $(DDK_LIB_PATH)/csq.lib,直接刪除即可。
有時候還會提示沒有ntstrsafe.h,#include<ntstrsafe.h>出錯,把它註釋掉即可。
上面這個錯誤出現在windows xp操作系統中,我曾經幫別人在2003 server中配置開發環境,結果發現,不會存在上述問題,而且可以使用vc6.0的編譯按鈕進行編譯,這在windows xp下是不行的。

調試

調試方法很多,我一般都用DbgPrint。
check和free的區別。簡單地說,check相當於debug,free相當於release,前者是調試版本,後者是發佈版本。你可以使用以下語句實現僅在check版本中輸出調試語句:
    #if dug
    #define dprintf DbgPrint
    #else
    #define dprintf(x)
    #endif
然後使用dprintf代替DbgPrint。

調試工具

ds自帶的softice,DriverMonitor,等。此外,Dbgview和DriverMonitor類似,可以從網上下載到的。Dbgview和DriverMonitor可以看到DbgPrint的字符串。

驅動的加載

這個比較複雜,有dosname等細節。還有動態和靜態加載的區別。動態加載可以參看FwHookDrv個人防火牆的例子,其中關鍵部分就是TDriver類,注意dosname。靜態加載就是註冊爲服務即可,相對比較簡單。
轉換爲vc工程。開始--程序--Compuware DriverStudio--develop--DDK sources to vcproj Converter,即可轉換,不會使用的多試幾次就會了,什麼都說了,就沒有懸念了,呵呵。

驅動開發調試環境

建議採用虛擬機或者雙機的配置。因爲驅動調試常常會出現藍屏等等,所以得雙機或者虛擬機,免得老是重啓,浪費時間和心神

發佈了18 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章