本文描述了如何使用Visual Studio+VMMare+VisualDDK來創(chuàng)建、編譯和調(diào)試你的第一個驅(qū)動程序。本文提供在開發(fā)和調(diào)試工具的環(huán)境下詳細的操作步驟,而無需太多的關心這些環(huán)境背后所做的事情。如果你想學習更多驅(qū)動程序開發(fā)的API,可以參考 Online WDK help。 本教程我們會創(chuàng)建以下驅(qū)動測序并且在虛擬機上測試它: 如果你有另外一臺實體機,你就不用安裝虛擬機了。不過,你可能需要COM連接或者一個火線連接兩臺機子。 必備軟件開始寫驅(qū)動之前,你需要準備一些軟件(點擊超鏈接直接下載)。 如果你不知道ISO鏡像怎么使用,下載一個UltraISO然后去找下相關用法。 準備工作第一步是安裝虛擬機軟件。這個過程很簡單,只需要按照步驟一步一步來。 然后是創(chuàng)建一個虛擬機,以VMWare Workstation 8為例。 點擊File-New Virtual Machine 選擇Custom(advanced)
硬件兼容性無所謂,如果你用最新的VMWare,選擇Workstation 8.0 選擇操作系統(tǒng):這里選擇你的操作系統(tǒng)鏡像
 然后填寫虛擬機操作系統(tǒng)的個人資料(Windows7的話密鑰可以不填) 然后是設置CPU和內(nèi)存,默認的就可以。 選擇網(wǎng)絡設置,Bridge或者NAT都可以
 IO設置默認,磁盤創(chuàng)建新的磁盤文件
     最后點一下Finish,會自動安裝操作系統(tǒng),等其裝好(太扯淡裝Win7用了10分鐘)。

在虛擬機上安裝支持軟件并創(chuàng)建快照。 如果使用自動安裝系統(tǒng)的方式,系統(tǒng)安裝好后,會自動安裝支持工具 手動安裝的方式是點擊菜單VM-Install VMware Tools,安裝一步步跟著向?qū)Ь托辛恕?br/> 給干凈的系統(tǒng)創(chuàng)建一個快照。點擊菜單VM-Snapshot-Take Snapshot,快照名字叫干凈系統(tǒng)之類的。然后點Take Snapshot


安裝Visual Studio 2010,裝過了就跳過。不過要注意的是,你的VS要至少包括C++和C#兩個模塊,如果不全,請重新安裝。 安裝VAX(可選)。VAX只是要來方便你寫C++代碼的。 安裝Windows Driver Kit(WDK)。 安裝32位的Windows調(diào)試工具(DDK)。 安裝和配置VisualDDK 雙擊"VisualDDK-1.5.6.exe"開始安裝DDK 裝完(很快)之后,會出現(xiàn)一個配置向?qū)?。如果你按照上面的步驟安裝,那么WDK位置和DDK位置會自動識別,直接點下一步。
 然后會讓你選擇VS的版本,如果你已經(jīng)裝有VS,它也會自動識別。
 點Finish開始進行物理機的配置(可能會自動啟動VS,不要動它,會自動關閉)。

配置虛擬機 網(wǎng)絡配置。依次選擇菜單VM-Settings,打開配置頁。選擇Network Adapter,將配置改為Bridge或者NAT。 
然后測試你的網(wǎng)絡連接,主機ping虛擬機,虛擬機ping主機應該能互通。 復制 C:\Program Files (x86)\VisualDDK\target\vminstall.exe 到虛擬機上運行(如果正確安裝了VMTools,可以直接復制粘貼的,如果不行,重新安裝VMTools或使用VMWare 的網(wǎng)絡功能拷貝該文件)。
點擊安裝,提示重啟(虛擬機),點是就可以了。重啟后,關閉虛擬機(沒錯,關掉它)。
使用向?qū)?chuàng)建驅(qū)動以管理員權限運行Visual Studio(右擊-以管理員權限運行)
點擊文件-新建-項目,打開新建項目向?qū)?,選擇C++下的VisualDDK,
注意:項目位置不可以包含空格,不可以包含中文,否則你會很悲劇(無法生成解決方案) 選擇一個Pnp的驅(qū)動,其他配置默認
現(xiàn)在打開你的源代碼,看到的應該是以下效果
生成解決方案。選擇菜單生成-生成解決方案。
如果沒有錯誤,證明生成成功了。生成成功后,你可以右擊項目,點擊"在Windows資源管理器中打開文件夾",進入生成目錄(如objchk_win7_x86\i386)可以看到成功生成的sys驅(qū)動文件。
如果不需要調(diào)試,運行該sys文件就可以使用驅(qū)動了(安裝方式你得自己研究)。下面介紹調(diào)試的方法(調(diào)試會自動幫你安裝驅(qū)動程序)。
調(diào)試你的驅(qū)動運行VisualDDK安裝目錄下的vmmon.exe或vmmon64.exe(如果你是64位系統(tǒng))。當然,你也可以在開始菜單處搜索到這兩個程序。
這時候啟動虛擬機,不要進入系統(tǒng),停在操作系統(tǒng)選擇菜單上!此時你的VMMonitor和虛擬機畫面應該是這樣的:
注意,這步至關重要,如果你看到的PID字段上那個圖標不是綠色的,或者說Pipe name沒有建立出來,將不能進行內(nèi)核調(diào)試。這個步驟我搞了n久找到了解決方案。如果你有這樣的問題,你可以這么做:
VS中選擇菜單調(diào)試-Driver Launch Settings…
首次調(diào)試,會提示你配置Visual DDK(這個操作你也可以通過菜單工具-VisualDDK Settings…進行)
選擇好你的調(diào)試工具的目錄(如上,需要32位的調(diào)試工具)和符號目錄(調(diào)試符號,到時候會自動下載到該目錄) 設置好VisualDDK后,應該會彈出調(diào)試設置對話框
選擇Virtual Machine的調(diào)試方式,此時,應該可以選擇已經(jīng)加載管道的虛擬機了。其他使用默認配置(如果你手動指定了虛擬機的IP,最好再這里填寫),配置好之后,點Launch。
點擊Launch之后,你應該可以看到一個連接對話框,這個時候點Detail可以看到以下信息。它在等待虛擬機啟動。
這個時候啟動虛擬機(選擇VirtualKD調(diào)試),啟動的時候會為你加載符號。首次加載符號會從符號服務器下載,請耐心等候。
如果有不能加載的符號,VisualDDK會彈出提醒(服務器上沒有),問你下次是否跳過這些符號,點OK就行了。
如果虛擬機版本是Vista以上,會跳出一個對話框,問你是否要打印調(diào)試信息,選是。
然后,VS此時會進入一個中斷。點擊調(diào)試-繼續(xù)讓內(nèi)核和驅(qū)動繼續(xù)加載
啟動的過程可能相當緩慢,而且VisualDDK的控制臺會輸出一些錯誤信息,這是正常的,請耐心等候
如果你的虛擬機成功啟動,恭喜你,你基本已經(jīng)成功了!成功啟動后,啟動虛擬機上的DDKLaunchMonitor(默認在C盤根目錄)。啟動后,可以看到虛擬機的IP是192.168.3.105
現(xiàn)在點擊VisualDDK控制臺上的加載驅(qū)動的命令(如果控制臺不見了,可以選擇菜單調(diào)試-窗口-VisualDDK Console調(diào)出來)
點擊之后,可以看到以下對話框。因為剛才填寫調(diào)試配置的時候沒有填寫IP,現(xiàn)在需要重新填寫才能跟虛擬機通信。
點擊菜單調(diào)試-停止調(diào)試,重新選擇菜單調(diào)試-Driver Launch Settings… ,將虛擬機的IP填上。
這次再點擊Launch,你能成功連接了。
現(xiàn)在彈出了一個驅(qū)動安裝的配置向?qū)?,使用默認設置,然后點擊"Install"
此時看虛擬機,會彈出讓你安裝驅(qū)動程序的對話框,選擇"始終安裝此驅(qū)動程序"
當驅(qū)動安裝成功,你可以看到,輸出的調(diào)試信息"Hello from PnpDriver",輸出的語句你可以在你的源代碼的DriverEntry函數(shù)中找到。
要結束調(diào)試,記住點擊"調(diào)試"-"結束調(diào)試"。 下次繼續(xù)調(diào)試,不用重啟虛擬機,可以直接使用建立好的管道。下面敲個斷點試試。
調(diào)試情況:
問題收集調(diào)試菜單下沒有VisualDDK的相關菜單項。 此時你可以試試打開我的文檔,把Visual Studio 2010目錄底下的Addins文件夾刪掉再重裝VisualDDK。如果還不行,你可以試試把整個Visual Studio 2010目錄刪掉(注意備份你以前的工程) 沒法連接到我的VMWare虛擬機 正確的步驟是,在VMWare啟動時,將界面停留在os 選擇這里,然后點擊Driver Launch Settings,設置好,然后點擊Launch,然后在VMWare里進入系統(tǒng)。經(jīng)過這樣的步驟后,虛擬機系統(tǒng)里的驅(qū)動,才可以被正常的調(diào)試。 如果你在VMMon看到的"指示圖標"不是綠色的,你需要刪除%USERPROFILE%\AppData\Roaming\VirtualKD下的*.vmpatch文件
|