網(wǎng)上有很多關(guān)于驅(qū)動(dòng)開發(fā)環(huán)境的資料,但大多不全。
??? 這里,個(gè)人推薦使用vc6.0+ds+windows ddk。
??? vc6.0大家再熟悉不過的了,也許你可能喜歡使用vc8.0,也就是.net 2005,它功能強(qiáng)大,調(diào)試方便,但這里還是推薦6.0,因?yàn)椋琩s會(huì)在vc6.0開發(fā)環(huán)境中另外增加一個(gè)導(dǎo)航工具條,很方便,同時(shí)也會(huì)增加一個(gè)菜單欄。
??? vc6.0安裝完畢后,再安裝windows ddk,其安裝包可以在網(wǎng)上搜索到,建議去微軟官方網(wǎng)站下載。具體下載哪個(gè),得根據(jù)你電腦的操作系統(tǒng)來定,我的是windows xp,所以安裝了windows xp ddk。
??? 最后,安裝DriverStudio,全稱Compuware DriverStudio ,目前通用版本為3.2。
???
編譯ddk包。進(jìn)入到......\Compuware\DriverStudio目錄下,我們可以看到兩個(gè)文件夾,DriverNetworks 和
DriverWorks,里面分別有BuildAllDNW.bat和BuildAllDW.bat,我們?cè)诿钚邢旅娣謩ecd至這兩個(gè)目錄,再運(yùn)行這兩
個(gè)批處理文件,可以看到提示,提示中說明了運(yùn)行的格式,即:BuildAllDNW(或者BuildAllDW)
D:\winddk\2600(ddk的安裝路徑,這個(gè)是我機(jī)器上的路徑) WinXP(操作系統(tǒng)版本)
x86(我的CPU類型)。回車即可。把兩個(gè)批處理類似運(yùn)行,就可以了,如果不編譯,系統(tǒng)會(huì)報(bào)錯(cuò),說沒有.lib靜態(tài)庫文件。
??? 開始第一個(gè)工程。打開vc6.0,設(shè)置ddk路徑,選擇菜單中或者工具條中的 ddk build
settings,把ddk的根目錄root
directory設(shè)置好,我的是“D:\WINDDK\2600”。然后選擇菜單或工具條第一項(xiàng),啟動(dòng)新建工程向?qū)В徊讲较氯ゾ涂梢粤恕>幾g時(shí)選擇菜
單或工具條第四項(xiàng)。
???
driverstudio產(chǎn)生的驅(qū)動(dòng)工程都會(huì)要連接ntstrsafe.lib這個(gè)庫,但實(shí)際上這個(gè)庫并不存在,在Project的Settings里的Link項(xiàng)中去掉這個(gè)庫,然后在工程中的sources文件里邊,找到下面一行:
TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\csq.lib
直接刪除即可。
有時(shí)候還會(huì)提示沒有ntstrsafe.h,#include<ntstrsafe.h>出錯(cuò),把它注釋掉即可。
?
上面這個(gè)錯(cuò)誤出現(xiàn)在windows xp操作系統(tǒng)中,我曾經(jīng)幫別人在2003 server中配置開發(fā)環(huán)境,結(jié)果發(fā)現(xiàn),不會(huì)存在上述問題,而且可以使用vc6.0的編譯按鈕進(jìn)行編譯,這在windows xp下是不行的。
調(diào)試。調(diào)試方法很多,我一般都用DbgPrint。
check和free的區(qū)別。簡單地說,check相當(dāng)于debug,free相當(dāng)于release,前者是調(diào)試版本,后者是發(fā)布版本。你可以使用以下語句實(shí)現(xiàn)僅在check版本中輸出調(diào)試語句:
#if dug
#define dprintf DbgPrint
#else
#define dprintf(x)
#endif
然后使用dprintf代替DbgPrint。
調(diào)試工具。ds自帶的softice,DriverMonitor,等。此外,Dbgview和DriverMonitor類似,可以從網(wǎng)上下載到的。Dbgview和DriverMonitor可以看到DbgPrint的字符串。
驅(qū)動(dòng)的加載。這個(gè)比較復(fù)雜,有dosname等細(xì)節(jié)。還有動(dòng)態(tài)和靜態(tài)加載的區(qū)別。動(dòng)態(tài)加載可以參看FwHookDrv個(gè)人防火墻的例子,其中關(guān)鍵部分就是TDriver類,注意dosname。靜態(tài)加載就是注冊(cè)為服務(wù)即可,相對(duì)比較簡單。
轉(zhuǎn)換為vc工程。開始--程序--Compuware DriverStudio--develop--DDK sources to vcproj Converter,即可轉(zhuǎn)換,不會(huì)使用的多試幾次就會(huì)了,什么都說了,就沒有懸念了,呵呵。
驅(qū)動(dòng)開發(fā)調(diào)試環(huán)境。建議采用虛擬機(jī)或者雙機(jī)的配置。因?yàn)轵?qū)動(dòng)調(diào)試常常會(huì)出現(xiàn)藍(lán)屏等等,所以得雙機(jī)或者虛擬機(jī),免得老是重啟,浪費(fèi)時(shí)間和心神。