1. 程式人生 > >開始學windows核心或驅動程式設計注意事項

開始學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的輸出顯示。