2011-12-23 20:52:41|
本文描述了如何使用Visual Studio+VMMare+VisualDDK來創(chuàng)建、編譯和調(diào)試你的第一個驅(qū)動程序。本文提供在開發(fā)和調(diào)試工具的環(huán)境下詳細(xì)的操作步驟,而無需太多的關(guān)心這些環(huán)境背后所做的事情。如果你想學(xué)習(xí)更多驅(qū)動程序開發(fā)的API,可以參考 Online WDK help。
本教程我們會創(chuàng)建以下驅(qū)動測序并且在虛擬機(jī)上測試它:
一個超級簡單的驅(qū)動,加載時打印一條信息
如果你有另外一臺實(shí)體機(jī),你就不用安裝虛擬機(jī)了。不過,你可能需要COM連接或者一個火線連接兩臺機(jī)子。
開始寫驅(qū)動之前,你需要準(zhǔn)備一些軟件(點(diǎn)擊超鏈接直接下載)。
VMWare,虛擬機(jī)軟件,用于運(yùn)行用于調(diào)試的虛擬機(jī)。
Windows安裝鏡像,用來給虛擬機(jī)裝系統(tǒng)。建議使用XP或Windows7(如果你內(nèi)存大一點(diǎn),建議Windows7)。要是沒有你可以找人拷或者到msdn.itellyou.cn下載
Visual Studio 2010,用來寫代碼
Windows Driver Kit (WDK) 7.1.0,用于Windows驅(qū)動開發(fā)的工具包
VisualDDK,將WDK和VS結(jié)合配置好的一個可視化VS插件
如果你不知道ISO鏡像怎么使用,下載一個UltraISO然后去找下相關(guān)用法。
第一步是安裝虛擬機(jī)軟件。這個過程很簡單,只需要按照步驟一步一步來。
點(diǎn)擊File-New Virtual Machine
硬件兼容性無所謂,如果你用最新的VMWare,選擇Workstation 8.0
選擇操作系統(tǒng):這里選擇你的操作系統(tǒng)鏡像
然后填寫虛擬機(jī)操作系統(tǒng)的個人資料(Windows7的話密鑰可以不填)
然后是設(shè)置CPU和內(nèi)存,默認(rèn)的就可以。
選擇網(wǎng)絡(luò)設(shè)置,Bridge或者NAT都可以
IO設(shè)置默認(rèn),磁盤創(chuàng)建新的磁盤文件
最后點(diǎn)一下Finish,會自動安裝操作系統(tǒng),等其裝好(太扯淡裝Win7用了10分鐘)。
如果使用自動安裝系統(tǒng)的方式,系統(tǒng)安裝好后,會自動安裝支持工具
手動安裝的方式是點(diǎn)擊菜單VM-Install VMware Tools,安裝一步步跟著向?qū)Ь托辛恕?br>
給干凈的系統(tǒng)創(chuàng)建一個快照。點(diǎn)擊菜單VM-Snapshot-Take Snapshot,快照名字叫干凈系統(tǒng)之類的。然后點(diǎn)Take Snapshot
安裝Visual Studio 2010,裝過了就跳過。不過要注意的是,你的VS要至少包括C++和C#兩個模塊,如果不全,請重新安裝。
啟動Visual Studio,選擇菜單工具-拓展管理器
在"聯(lián)機(jī)庫"搜索"Visual Assist X",點(diǎn)擊下載
下載完成后安裝,下次啟動VS就有效了。
用UltraISO加載WDK的鏡像。(下文H: 表示虛擬光驅(qū)的盤符)
選擇要安裝的功能,建議配置如下:
安裝目錄就選擇默認(rèn)目錄,改了的話你自己記住在哪兒。
雙擊"VisualDDK-1.5.6.exe"開始安裝DDK
裝完(很快)之后,會出現(xiàn)一個配置向?qū)АH绻惆凑丈厦娴牟襟E安裝,那么WDK位置和DDK位置會自動識別,直接點(diǎn)下一步。
然后會讓你選擇VS的版本,如果你已經(jīng)裝有VS,它也會自動識別。
點(diǎn)Finish開始進(jìn)行物理機(jī)的配置(可能會自動啟動VS,不要動它,會自動關(guān)閉)。
然后測試你的網(wǎng)絡(luò)連接,主機(jī)ping虛擬機(jī),虛擬機(jī)ping主機(jī)應(yīng)該能互通。
點(diǎn)擊安裝,提示重啟(虛擬機(jī)),點(diǎn)是就可以了。重啟后,關(guān)閉虛擬機(jī)(沒錯,關(guān)掉它)。
注意:項目位置不可以包含空格,不可以包含中文,否則你會很悲?。o法生成解決方案)
選擇一個Pnp的驅(qū)動,其他配置默認(rèn)
如果沒有錯誤,證明生成成功了。生成成功后,你可以右擊項目,點(diǎn)擊"在Windows資源管理器中打開文件夾",進(jìn)入生成目錄(如objchk_win7_x86\i386)可以看到成功生成的sys驅(qū)動文件。
如果不需要調(diào)試,運(yùn)行該sys文件就可以使用驅(qū)動了(安裝方式你得自己研究)。下面介紹調(diào)試的方法(調(diào)試會自動幫你安裝驅(qū)動程序)。
注意,這步至關(guān)重要,如果你看到的PID字段上那個圖標(biāo)不是綠色的,或者說Pipe name沒有建立出來,將不能進(jìn)行內(nèi)核調(diào)試。這個步驟我搞了n久找到了解決方案。如果你有這樣的問題,你可以這么做:
重試上面的步驟
選擇好你的調(diào)試工具的目錄(如上,需要32位的調(diào)試工具)和符號目錄(調(diào)試符號,到時候會自動下載到該目錄)
選擇Virtual Machine的調(diào)試方式,此時,應(yīng)該可以選擇已經(jīng)加載管道的虛擬機(jī)了。其他使用默認(rèn)配置(如果你手動指定了虛擬機(jī)的IP,最好再這里填寫),配置好之后,點(diǎn)Launch。
如果有不能加載的符號,VisualDDK會彈出提醒(服務(wù)器上沒有),問你下次是否跳過這些符號,點(diǎn)OK就行了。
點(diǎn)擊之后,可以看到以下對話框。因為剛才填寫調(diào)試配置的時候沒有填寫IP,現(xiàn)在需要重新填寫才能跟虛擬機(jī)通信。
點(diǎn)擊菜單調(diào)試-停止調(diào)試,重新選擇菜單調(diào)試-Driver Launch Settings… ,將虛擬機(jī)的IP填上。
這次再點(diǎn)擊Launch,你能成功連接了。
要結(jié)束調(diào)試,記住點(diǎn)擊"調(diào)試"-"結(jié)束調(diào)試"。
此時你可以試試打開我的文檔,把Visual Studio 2010目錄底下的Addins文件夾刪掉再重裝VisualDDK。如果還不行,你可以試試把整個Visual Studio 2010目錄刪掉(注意備份你以前的工程)
正確的步驟是,在VMWare啟動時,將界面停留在os 選擇這里,然后點(diǎn)擊Driver Launch Settings,設(shè)置好,然后點(diǎn)擊Launch,然后在VMWare里進(jìn)入系統(tǒng)。經(jīng)過這樣的步驟后,虛擬機(jī)系統(tǒng)里的驅(qū)動,才可以被正常的調(diào)試。
如果你在VMMon看到的"指示圖標(biāo)"不是綠色的,你需要刪除%USERPROFILE%\AppData\Roaming\VirtualKD下的*.vmpatch文件