1. 程式人生 > 實用技巧 >VS2012 ddk驅動編譯與虛擬機器聯機除錯設定

VS2012 ddk驅動編譯與虛擬機器聯機除錯設定

一.安裝WindowsDriverKit8
1首先在計算機上安裝VS2012(12很容易安裝,安裝步驟略),然後到官網上下載WindowsDriverKit8下載地址:
http://msdn.microsoft.com/zh-cn/windows/hardware/hh852362/


下載完畢點選名稱:  001.jpg檢視次數: 0檔案大小:  3.4 KB進行安裝。安裝模式有兩種,一種是線上直接安裝,一種是下載安裝包到本地,之後再進行安裝(如果網速夠快建議直接線上安裝。下載安裝包安裝,會多一步操作,由於剛開始不知道那一步操作,執行2012報一個錯誤,也無法進行除錯設定,所以搞得我頭大了好幾天!!!)
1.線上安裝,直接預設路徑即可,安裝完應該沒有問題的,本人沒試過。
2.說下下載安裝包安裝吧:下載完全部檔案307M,開啟資料夾點選其中的名稱:  002.jpg檢視次數: 0檔案大小:  5.4 KB
檔案安裝,一路OK,最後點選finish完成安裝。安裝完別急著開啟2012,再次點名稱:  003.jpg檢視次數: 0檔案大小:  3.4 KB這次選擇線上安裝,過程中會有兩個選項,一個yes...,一個no,我選了yes,具體什麼意思,不清楚,嘿嘿。然後next,進度條很快讀完。到此WindowsDriverKit8就已經安裝成功了,這時開啟2012,會發現新建專案中多了一些Driver專案,選單欄上也多出了一個選單選項DRIVER。
二驅動專案與虛擬機器com串列埠聯機調設定
怎樣在2012下直接生成DDK驅動專案我目前還沒搞出來,不過可以通過2012把我們寫的驅動載入轉換成2012可以執行的專案
就讓我們用最簡單的Hello級DDK驅動演示下吧,寫好Hello.cmakefile和sources檔案。
然後執行2012
名稱:  004.jpg檢視次數: 0檔案大小:  23.0 KB
選擇檔案開啟ConvertSources/Dirs...
找到驅動所在的資料夾,選中sources檔案
名稱:  005.jpg檢視次數: 1檔案大小:  13.8 KB
這時2012就會對我們的驅動專案進行自動轉換了,轉換完成後還會彈出對話方塊詢問你是否檢視有關轉換細節的記錄,這裡隨意。

然後在上邊工具欄中
名稱:  006.jpg檢視次數: 0檔案大小:  28.5 KB

選中驅動程式所要執行的系統環境,可惜,不支援XP系統平臺!!!
按F7快捷鍵編譯連線即可生成我們想要的.sys檔案了。另編譯Vista以上版本系統平臺驅動檔案時makefile檔案是可有可無的,沒有此檔案編譯器會自動為我們加上相關定義!(StartingwiththeWindowsDriverKit(WDK)forWindowsVista,itisnolongerrequiredfortheMakefilefiletobeineveryproject.Bydefault,theBuildutilityincludestheMakefile.defiftheMakefilefileisnotfoundintheproject.AnycustomtasksthatarerequiredinaprojectshouldbemovedtoMakefile.incasappropriate.)

名稱:  007.jpg檢視次數: 1檔案大小:  32.8 KB
驅動檔案生成完成,現在開始進行虛擬機器連線設定:
名稱:  008.jpg檢視次數: 0檔案大小:  8.5 KB
點選選單選項DRIVERTestConfigureComputers
名稱:  009.jpg檢視次數: 0檔案大小:  14.4 KB
點選“AddNewComputer”
名稱:  010.jpg檢視次數: 1檔案大小:  59.6 KB
Computername:中輸入你真實的計算機的名字(不是虛擬機器中計算機的名字)
下邊三個選項選擇最後一項”Manuallyconfiguredebuggersand...”,手動配置除錯
名稱:  011.jpg檢視次數: 0檔案大小:  41.5 KB
按上圖配置即可,ConnectionType選為Serial(串列埠)
(波特率)BaudRate115200
(管道)Pipe勾選
(重連線)Reconnect勾選
(管道名)Pipename\\.\pipe\com_1

這幾個選項根據你虛擬機器設定來設定
最後點選完成。

開啟虛擬機器進入系統後(除錯模式)(按我以前的步驟是先在虛擬機器中執行驅動,然後附加下斷點,會導致2012卡死掉,後來摸索發現在沒有載入驅動之前就讓2012把系統斷一下,這樣就連線成功了!驅動執行之前設定斷點也會成功!)

再在vs2012中選擇選單欄中的工具附加到程序
名稱:  014.jpg檢視次數: 0檔案大小:  13.3 KB
點選圖片以檢視大圖圖片名稱: 015.jpg檢視次數: 6檔案大小: 64.8 KB檔案 ID : 77352
傳輸:WindowsKernelModeDebugger
限定符:就是我們新增的計算機名


點選附加2012會自動進入除錯狀態,
此時顯示Waitingtoreconnect...;
名稱:  016.jpg檢視次數: 0檔案大小:  40.7 KB
名稱:  026.jpg檢視次數: 0檔案大小:  914 位元組把虛擬機器斷下,這時在原始碼中就可以下斷點了!完成斷點設定輸入g命令或F5,讓虛擬機器走起。當你執行虛擬機器中驅動程式到相應程式碼位置就是會被2012斷下。(經過這幾天摸索,2012不用關閉重新開啟也是可以地!)
名稱:  017.jpg檢視次數: 0檔案大小:  23.6 KB

把我們生成的hello.sys
名稱:  012.jpg檢視次數: 0檔案大小:  9.9 KB
檔案放到虛擬機器中,用INSTDRV工具安裝啟動
名稱:  013.jpg檢視次數: 0檔案大小:  28.7 KB



點選圖片以檢視大圖圖片名稱: 018.jpg檢視次數: 2檔案大小: 23.3 KB檔案 ID : 77355
名稱:  019.jpg檢視次數: 0檔案大小:  17.1 KB
名稱:  020.jpg檢視次數: 0檔案大小:  70.6 KB
點選圖片以檢視大圖圖片名稱: 021.jpg檢視次數: 4檔案大小: 42.4 KB檔案 ID : 77358
在2012中驅動專案的符號檔案是不用特殊指定的,編譯器會自動找到符號檔案所在位置。

系統符號我知道的其中一個方法是用命令的形式來載入或下載符號檔案
如果系統中沒有單獨安裝符號檔案,在DebuggerImmediateWindows視窗中輸入命令
.sympathsrv*c:\MyServerSymbols*[url]http://msdl.microsoft.com/download/symbols

名稱:  022.jpg檢視次數: 0檔案大小:  15.6 KB
*c:\MyServerSymbols*之間的路徑就是你要儲存的符號檔案的路徑

如果你已經下載並單獨安裝了符號檔案可以用如下形式的命令來指定:
.sympathc:\MyRegularSymbols回車後顯示
名稱:  023.jpg檢視次數: 0檔案大小:  14.1 KB
我們再.reaload一下(重新載入符號檔案)
名稱:  024.jpg檢視次數: 0檔案大小:  10.9 KB
哈哈,這裡輸入命令還有智慧提示哦!
名稱:  025.jpg檢視次數: 0檔案大小:  73.3 KB
部分符號檔案沒有找到也屬於正常情況,指定目錄下沒有這些驅動的符號檔案!可以指定到官方網站去下載符號檔案
.sympathsrv*c:\MyServerSymbols*http://msdl.microsoft.com/download/symbols

以上設定均參考自:DebuggingHelp.(WDK8安裝後會有相關文件)

轉載於:https://blog.51cto.com/whatday/1382317