搭建開發環境是開發驅動的第一步,這個搭建的過程還是有點小折騰的,在這兒我遇到的問題記下來,免得日後忘記,也希望可以幫到一些人。
其實問題基本都處在DriverStudio3.2的安裝和編譯上。
下面就開始了:
這三個軟體的安裝順序是:VS2005、Windows XP DDK、DriverStudio3.2。這是推薦的安裝順序。
首先,上網找Windows XP DDK安裝程式、DriverStudio3.2安裝程式、DriverStudio3.2的更新檔DSDDKEnv.zip
更新檔檔案我上傳了,可以在這兒下http://download.csdn.net/source/2896238
預設VS2005已經裝好了,然後裝DDK,DDK就一路預設裝就可以了。
(建議把DDK的所有Example都裝上,不然可能以後編譯時會缺少頭檔案之類問題)
然後裝DriverStudio3.2,也是一路預設安裝就可以了(注:安裝目錄中不要出現空格,原因馬上講到)。
安裝過程中會出現一個錯誤對話框,大概是說DSDDKEnv8.dll failed to register,選Ignore。
出現這個錯誤的原因是:Driver Studio 3.2在與VS2005內建的過程中出錯了,
這個錯誤我們将在DS3.2安裝完成後用更新檔修複。
接下來更新檔修複。
DSDDKEnv.zip解壓,用檔案DSDDKEnv8.dll、DSDDKEnv8UI.dll分别替換掉...../DriverStudio/Common/Bin和DriverStudio/Common/Bin/1033目錄下的同名檔案。
然後在開始菜單的運作中分别輸入以下兩條指令:
regsvr32 -u <安裝目錄>\DriverStudio\Common\Bin\dsddkenv8.dll
regsvr32 <安裝目錄>\DriverStudio\Common\Bin\dsddkenv8.dll
注:如果<安裝目錄>中有空格,那麼以上兩條指令會執行出錯。
這時打開VS2005,其菜單欄的Tools中出現了DriverStudio子菜單。接下來還有以下幾個工作要做:
1:Tools->DriverStudio->DDK Build Settings設定DDK路徑,即将DDK Root Directory設定為C:/WINDDK/2600(根據自己的安裝路徑修改)
2:生成vdw_wdm.lib,這個庫檔案在以後編譯驅動時是需要的。過程如下:
首先,用VS2005打開..../DriverStudio/DriverWorks/source/VdwLibs2005.sln;
将VdwLibs設為Active Project;
然後右擊VdwLibs->Properties,VdwLibs Property Pages頂部的Configuration和Platform要分别改成Active(WDM Checked)和win32 Active,這個很重要。
注1:這個一定要改對!!不然生成的vdw_wdm.lib是錯誤的,錯誤的庫會導緻以後編譯驅動時出錯,很煩的。
注2:檢查VdwLibs Property Pages->Librarian中的Output File是否為$(OutDir)/vdw_wdm.lib,如果不是,就改成這個。
最後編譯工程(用Tools->DriverStudio->Build Solution),vdw_wdm.lib就生成了。
應該到此就安裝完成了。大家可以用VS2005打開.../DriverStudio/DriverWorks/Examples/wdm中的一個例程,比如hellowdm。然後用菜單欄的Tools->DriverStudio->Build Solution with DDK Build.exe。如果生成正确,即在.../DriverStudio/DriverWorks/Examples/wdm/hellowdm/sys/objchk/i386中出現了HelloWdm.sys,那麼就大功告成了,配置好了。
接下來我們用Tools->DriverWizard生成驅動模闆(具體怎麼生成大家自己研究吧^_^)
驅動工程檔案生成後,同樣用Tools->DriverStudio->Build Solution with DDK Build.exe編譯時,
會出現這個錯誤:1>NMAKE : U1073: don't know how to make 'C:/WINDDK/2600/lib/wxp/i386/ntstrsafe.lib'
出錯原因是:根本就沒有C:/WINDDK/2600/lib/wxp/i386/ntstrsafe.lib這個庫檔案,這貌似是DS3.2的bug
解決辦法是:1:在Project的Property pages裡的Link=>Input=>Additional Dependencies項中去掉這個庫
2:在Project的source檔案中找到這句話,删掉就可以了哦:TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib $(DDK_LIB_PATH)/csq.lib。