2011-01-13 54 views
-2

我寫了一個內核驅動程序,掛鉤到一個進程並隱藏一個文件夾。這個驅動程序工作得很好,直到我連接一個外部硬盤。如何在Windows中調試內核驅動程序崩潰?

此時,我的操作系統(Windows XP或Server 2003)死機藍屏死機(BSOD)。

什麼可能導致此崩潰,以及如何修改我的驅動程序來解決它?

+3

這幾乎就像是說:「醫生,我今天感覺不舒服,你能幫我嗎?」 – Mehrdad

+0

醫生,當我這樣做時,我的手臂很痛。那麼不要那樣做。 – leppie

+0

我需要將外部硬盤連接到系統 –

回答

1

會有一般有兩種方式:

  1. 事後調試。這通常是您在沒有本地計算機可用來重現崩潰時的操作。在這種情況下,您正在檢查crashdump文件(完整或小型轉儲)。
  2. 現場調試。在這種情況下,如果您知道系統會崩潰,請準備一臺機器使用WinDbg控制本機,並通過串行或FireWire電纜連接。後者要快得多。

但是,我同意你讓太少的細節。你「掛鉤」?那麼,怎麼樣? SSDT卡掛?或者您是否使用了編寫過濾器驅動程序的正確方法?如果過濾器驅動程序,哪個模型?迷你過濾器或傳統過濾器?

我剛剛注意到你的評論,你鉤「NtOpenProcess和NtQueryDirectoryFile」,所以它聽起來像SSDT掛鉤。 什麼你到底在做什麼?我知道很多司機做了不適當的SSDT掛鉤。它從用於獲取鉤子的方法開始,通常不會以大膽的實現結束。

請注意,對於實時調試,WinDbg提供了一些很好的功能來在啓動時傳輸和加載最新的驅動程序版本。所以你可以調試你的最新版本而無需額外的準備。遠程終端上的內核調試程序和計算機上的WinDbg將負責處理它。

此外,您可能希望將您的問題發佈到OSR(即NTDEV)上的列表中。

0

你幾乎沒有公佈BSOD的技術細節,或者你的代碼如何工作,所以不可能提供具體的答案。作爲一個普遍的出發點,我建議你分析一下minidump,以獲得有關觸發藍屏錯誤的一些具體細節。這是一個很好的入門指南。

http://forums.majorgeeks.com/showthread.php?p=1418737

1

在開發內核驅動程序時,通常需要在虛擬機中測試它們,並使用內核調試器連接(主機是調試器,VM是調試器)。某些虛擬機環境提供對調試的直接支持。

當然你需要在各種物理和虛擬硬件上進行調試。

相關問題