開始學windows核心或驅動程式設計注意事項
1 vmware 新增虛擬串列埠:
\\.pipe\com_1
This end is the server
The other end is an application
2 在虛擬機器XP系統的boot.ini中新增:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debug /debugport=com1 /baudrate=115200
3 設定環境變數 _NT_SYMBOL_PATH
值為srv*d:\mysymbols*http://msdl.microsoft.com/download/symbols
4 在windbg.exe的快捷方式裡的“目標”中的“...windbg.exe”後增加啟動引數:
windbg.exe -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
注意windbg.exe的全路徑是在雙引號裡面的,而剛新增的命令列引數應該在引號外。
5 但是按照 通常的步驟做下去之後,執行虛擬機器中的xp系統後,再執行windbg,雖然windbg的啟動引數都設定正確,但是在windbg的窗口裡,顯示
Opened \\.\pipe\com_1
Waiting to reconnect...
最底部顯示的: Debuggee not connected.
這是因為在Edit virtual machine settings裡看下你那個串列埠是不是叫Serial port 2,如果是,問題就在這裡,就是多了那個2。
關閉虛擬的xp系統,把這個串列埠刪掉,然後把那個printer也刪掉,然後重新新增一個串列埠就可以了,這個時候串列埠就叫Serial port了。然後就可以正常連線了
6 編譯一個常見的first.c的演示驅動
在這裡會遇到一個問題是。出現編譯錯誤:WDK cannot open include file ntddk.h 問題解決
這是因為與first.c同一資料夾的
sources檔案缺少INCLUDES指令
第一行加上:INCLUDES=$(WDMROOT);$(DDK_INC_PATH) 即可編譯通過。
7 將編譯好的first.sys用srvinstw.exe安裝至虛擬機器xp裡
執行前需要給主機的windbg新增上first.sys的符號檔案路徑。
然後開啟虛擬xp的命令列工具,輸入net start first。 觀察主機windbg的輸出顯示
然後再輸入net stop first。觀察主機windbg的輸出顯示。