這一次,我們講一下如何用VToolsD開發一個最簡單的VxD,以及用SoftIce進行源程序級的調試。
VToolsD的使用
在VtoolsD中,有一個最重要的VxD開發工具:QuickVxD。QuickVxD可以為我們自動生成VxD源程序框架,而且QuickVxD提供了許多VxD的特性選項,例如可以選擇要生成的VxD是動態加載的或是靜態加載的,要使用的編程語言是C還是C++等等。
我們要利用QuickVxD自動生成的是一個可動態加載的、基於C語言的VxD框架。之所以選用動態加載的VxD,是為了調試VxD的方便。每次修改代碼,重新編譯連接之後,要使VxD重新生效,如果采用靜態加載的VxD,那就不得不重新啟動電腦,而若采用了動態加載的VxD,那只須使用VToolsD帶的另一個開發工具VxDLoad就可以卸出或重新加載內存中的VxD。之所以采用C語言而不是C++,是因為其簡潔易懂。請按照如圖1~圖4進行選擇。按下Generate Now按鈕,我們就獲得了動態加載的、基於C語言的VxD的源程序。
如果您是按照上一篇文章中講過的VToolsD的編譯環境設置系統,那我們就可以編譯剛才生成的這個最簡單的VxD了。在DOS提示符下輸入指令:
nmake -f myfirst.mak
看一下當前目錄下是否生成了myfirst.vxd,如果有,那我們下面准備對這個VxD進行源程序級的調試。如果沒有,那麼很可能是您的編譯環境沒有正確配置,請找來上一篇文章好好讀讀。
用VxDLoad加載myfirst.vxd(見圖5)
按下Load按鈕,會出現VxD load successfully消息框。
用SoftIce調試VxD
對於SoftIce選單作如下選擇:
(1)File→Open Module選擇我們剛才生成的myfirst.vxd。
(2)Module→Translate,如果Symbol Loader提示無法加載一些asm文件,那就跳過所有的asm文件。
(3)Module→Load。
按下Ctrl+D,進入SoftIce運行環境中(如果您還沒有按照上一篇文章中安裝SoftIce的話,那就無法再進行下面的測試)。輸入如下指令:
:file
myfirst.c
:file myfirst.c
這時,在SoftIce中,您將會看到myfirst.c的源程序。