菜鳥WDF驅動開發系列(1):VM+Windbg調試平臺的搭建

因爲打算進行一下Win7的驅動開發,於是不得不硬着頭皮以一個新手的姿態重新學習驅動的東西,驅動開發只能用噁心來形容,也許是因爲我根本還不算入門,單就搭建一個可以設斷點的調試平臺就讓我耗盡心力——當然,我是菜鳥,這也很正常是吧。Windows的驅動開發已經進入到WDF的年代,據說會比以前開發效率更高,我是沒法作比較,姑且將我作的開發筆記記錄到博客上,主要是備忘——沒辦法,本人記性奇差無比。

    講驅動開發的書市面上並不多的,我手上有四本:Ronald D.Reeves的《Window7 設備驅動程序開發》中文版,武安河老師的《Windows 設備驅動程序WDF開發》,經典的《Windows 驅動開發技術詳解》,還有驅網著名的《竹林蹊徑》,當然,我一本也沒看懂,因爲此文是綜合借鑑大家之言,當然不能掩蓋別人的功勞,爲此略表結以上作者的崇拜之情。

    言歸正傳吧。

(1)設置VMWinDBG通訊用的虛擬串口

    虛擬機的使用是驅動開發必須的,理由我就不多說了。網上有很多這樣的文章,其實都挺實用的,唯一的缺點是,沒有深入到斷點調試的那一步,而且有些地方不盡詳細,那我不妨多作點無用功,將自己搭建的調試環境一步步展現給大家吧。

    我的VM8.0版本的,目標機裝的xp(因爲我的測試源碼是基於xp的),win7下面的配置我暫時不說,網上攻略頗多,或以後我自己開始配置Win7時我補回去吧。

    怎麼在VMXP我就不廢話了。裝好系統後,先別急着開啓,打開目標系統的Virtual Machine Setting選項,在Hardware中添加新硬件:1)選擇Serial Port2serial Port Type 選擇“Output to named pipe”;3Specify Socket的選項如圖1吧;4)最終的配置結果如圖2所示。然後啓動VM的目標系統吧。

2)設置目標機系統的啓動項

    進入WinXP的虛擬機操作系統,打開系統盤(C:\),將文件夾查看選項全開了,那在C盤根目錄下有一個叫boot.ini的啓動項文件,先去掉只讀屬性,以文本文件的方式打開,拷貝原來的啓動項,作如下修改:

Multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debug /debugport=com2 /baudrate=115200

    然後重新啓動,則虛擬機設置完成。在此處需要注意的是,在第一步如果你添加的是Serial Port 1,則在boot.ini中修改/debugport=com1,似乎這是因爲目標系統本身就帶有一串口,所以新增一個用於命名管道的Serial Port時,系統內部增加的是COM2。還有就是將boot.ini的timeout值弄得大一點,方便選調試模式,以後VM啓動時就會出現調試的啓動項,如下圖3所示:

3)配置WinDBG的快捷方式

    如果你裝了WDK的話,你可以在如下路徑找到WinDBG的執行文件:D:\WinDDK\7600.16385.1\Debuggers,當然,你也可以在開始菜單中找出WinDBG的啓動方式(似乎有x86\x64之分,對應本機系統,但沒什麼區別),我選擇的是開始菜單中的WinDBG。然後添加桌面快捷方式,修改快捷方式的屬性快捷方式,在“目標”中添加如下文字,注意pipe的名稱與VM的串口設置一致:

-b -k com:pipe,port=\\.\pipe\com_xp,baud=115200,resets=0      

       至此,完成全部的調試環境配置,接下來就可以調試第一個驅動程序了,其實Win7下面的環境配置會比XP下面要煩挺多的,但一般照網上說的去做也沒什麼太大的問題。值得一提的是,可以用VirtualDDK的配置調試環境,那相當方便,由於我連接成功一次後就莫名其妙地不行,我就放棄了用它,若以後我找出什麼連接不了的原因後再作補充吧。 

本文出自 “幾縷蕭雨鎖清秋” 博客,請務必保留此出處http://joeyliu.blog.51cto.com/3647812/937476

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章