講驅動開發的書市面上並不多的,我手上有四本:Ronald D.Reeves的《Window7 設備驅動程序開發》中文版,武安河老師的《Windows 設備驅動程序WDF開發》,經典的《Windows 驅動開發技術詳解》,還有驅網著名的《竹林蹊徑》,當然,我一本也沒看懂,因爲此文是綜合借鑑大家之言,當然不能掩蓋別人的功勞,爲此略表結以上作者的崇拜之情。
言歸正傳吧。
(1)設置VM與WinDBG通訊用的虛擬串口
虛擬機的使用是驅動開發必須的,理由我就不多說了。網上有很多這樣的文章,其實都挺實用的,唯一的缺點是,沒有深入到斷點調試的那一步,而且有些地方不盡詳細,那我不妨多作點無用功,將自己搭建的調試環境一步步展現給大家吧。
我的VM是8.0版本的,目標機裝的xp(因爲我的測試源碼是基於xp的),win7下面的配置我暫時不說,網上攻略頗多,或以後我自己開始配置Win7時我補回去吧。
怎麼在VM裝XP我就不廢話了。裝好系統後,先別急着開啓,打開目標系統的Virtual Machine Setting選項,在Hardware中添加新硬件:1)選擇Serial Port;2)serial Port Type 選擇“Output to named pipe”;3)Specify 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