搭建開發(fā)環(huán)境是開發(fā)驅(qū)動的第一步,這個搭建的過程還是有點(diǎn)小折騰的,在這兒我遇到的問題記下來,免得日后忘記,也希望可以幫到一些人。
其實(shí)問題基本都處在DriverStudio3.2的安裝和編譯上。
下面就開始了:
這三個軟件的安裝順序是:VS2005、Windows XP DDK、DriverStudio3.2。這是推薦的安裝順序。
首先,上網(wǎng)找Windows XP DDK安裝程序、DriverStudio3.2安裝程序、DriverStudio3.2的補(bǔ)丁DSDDKEnv.zip
補(bǔ)丁文件我上傳了,可以在這兒下http://download.csdn.net/source/2896238
默認(rèn)VS2005已經(jīng)裝好了,然后裝DDK,DDK就一路默認(rèn)裝就可以了。
(建議把DDK的所有Example都裝上,不然可能以后編譯時會缺少頭文件之類問題)
然后裝DriverStudio3.2,也是一路默認(rèn)安裝就可以了(注:安裝目錄中不要出現(xiàn)空格,原因馬上講到)。
安裝過程中會出現(xiàn)一個錯誤對話框,大概是說DSDDKEnv8.dll failed to register,選Ignore。
出現(xiàn)這個錯誤的原因是:Driver Studio 3.2在與VS2005集成的過程中出錯了,
這個錯誤我們將在DS3.2安裝完成后用補(bǔ)丁修復(fù)。
接下來補(bǔ)丁修復(fù)。
DSDDKEnv.zip解壓,用文件DSDDKEnv8.dll、DSDDKEnv8UI.dll分別替換掉...../DriverStudio/Common/Bin和DriverStudio/Common/Bin/1033目錄下的同名文件。
然后在開始菜單的運(yùn)行中分別輸入以下兩條命令:
regsvr32 -u <安裝目錄>\DriverStudio\Common\Bin\dsddkenv8.dll
regsvr32 <安裝目錄>\DriverStudio\Common\Bin\dsddkenv8.dll
注:如果<安裝目錄>中有空格,那么以上兩條命令會執(zhí)行出錯。
這時打開VS2005,其菜單欄的Tools中出現(xiàn)了DriverStudio子菜單。接下來還有以下幾個工作要做:
1:Tools->DriverStudio->DDK Build Settings設(shè)置DDK路徑,即將DDK Root Directory設(shè)置為C:/WINDDK/2600(根據(jù)自己的安裝路徑修改)
2:生成vdw_wdm.lib,這個庫文件在以后編譯驅(qū)動時是需要的。過程如下:
首先,用VS2005打開..../DriverStudio/DriverWorks/source/VdwLibs2005.sln;
將VdwLibs設(shè)為Active Project;
然后右擊VdwLibs->Properties,VdwLibs Property Pages頂部的Configuration和Platform要分別改成Active(WDM Checked)和win32 Active,這個很重要。
注1:這個一定要改對!!不然生成的vdw_wdm.lib是錯誤的,錯誤的庫會導(dǎo)致以后編譯驅(qū)動時出錯,很煩的。
注2:檢查VdwLibs Property Pages->Librarian中的Output File是否為$(OutDir)/vdw_wdm.lib,如果不是,就改成這個。
最后編譯工程(用Tools->DriverStudio->Build Solution),vdw_wdm.lib就生成了。
應(yīng)該到此就安裝完成了。大家可以用VS2005打開.../DriverStudio/DriverWorks/Examples/wdm中的一個例程,比如hellowdm。然后用菜單欄的Tools->DriverStudio->Build Solution with DDK Build.exe。如果生成正確,即在.../DriverStudio/DriverWorks/Examples/wdm/hellowdm/sys/objchk/i386中出現(xiàn)了HelloWdm.sys,那么就大功告成了,配置好了。
接下來我們用Tools->DriverWizard生成驅(qū)動模板(具體怎么生成大家自己研究吧^_^)
驅(qū)動工程文件生成后,同樣用Tools->DriverStudio->Build Solution with DDK Build.exe編譯時,
會出現(xiàn)這個錯誤: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項(xiàng)中去掉這個庫
2:在Project的source文件中找到這句話,刪掉就可以了哦:TARGETLIBS=$(DDK_LIB_PATH)/ntstrsafe.lib $(DDK_LIB_PATH)/csq.lib。