個D係藍屏
解決Windows 2000/XP的藍屏陷阱
雖然基於NT架構的Windows 2000/XP系統穩定性已經大大增強,甚至Windows XP號稱“從不死機”,但我們仍然會不時看到藍色警報資訊,這就是通常所說的“藍屏”,究竟是怎麼回事呢?
一、Windows 2000/XP爆發藍色警報的原因
Windows 2000/XP採用了分層結構,它的兩個層又稱模式,分別為用戶模式(User Mode)和內核模式(Kernel Mode),應用程式是無法直接訪問硬體設備的,只有借助驅動程式才能直接訪問。
不過,即使NT架構再穩定,由於會由於某些原因,例如硬體衝突、硬體產生問題、註冊表錯誤、虛擬記憶體不足、動態連結程式庫檔丟失、資源耗盡等,此時可能會導致驅動程式或應用程式出現錯誤,嚴重時甚至會波及內核層。這種情況下,Windows會中止系統執行,並啟動名為KeBugCheck的功能,通過檢查所有中斷的處理進程,並同預設的停止代碼和參數比較後,螢幕將變為藍色,並顯示相應的錯誤資訊和故障提示,由於出現這種現象時實際上就意味著死機,因此常稱為“Blue Screen of Death”(BSOD),又稱“STOP資訊”或“停止資訊”。
二、認識藍色警報中隱藏的資訊
Windows 2000/XP的BSOD視窗與Windows NT4以前的BOSD視窗有著很大的區別,最大的區別是NT的BSOD視窗僅包括一個通用的停止消息代碼,但Windows 2000/XP的BSOD包含了停止消息和硬體消息兩種類型,前者是發現一個無法恢復的軟體錯誤時產生的錯誤資訊,後者是發現一個嚴重的硬體錯誤時產生的錯誤資訊。
雖然圖1視窗中的資訊看起來很複雜,但一般均由以下三部分組成:
1.錯誤資訊
在“*** Stop:”至“****** wdmaud.sys”之間的這段內容是所謂的錯誤資訊,由出錯代碼、自定義參數、錯誤符號等三部分組成,各部分的含義如下:
出錯代碼:STOP後面的16進制數字;
自定義參數:出錯代碼字元的組成,由程式人員定義,一般用戶很難理解;
錯誤符號:KMODE_EXCEPTION_NOT_HANDLED
在錯誤符號後面,這裏還顯示了一個記憶體位置和檔案名,可以瞭解到發生錯誤時的記憶體位置和原始檔案。對我們來說,其實最有用的還是前面的出錯代碼資訊,在搜索微軟知識庫時將會用到。
2.推薦操作
這裏顯示了系統推薦用戶採取的操作措施和步驟,例如在安全模式下卸載程式、回滾驅動程式、更新BIOS、安裝補丁等,不過大部分情況下都需要重新啟動系統後才能考慮進一步的操作。
3.調試埠資訊
這裏會顯示應該如何設定內核調試器的資訊,包括記憶體傾印映射是否已寫入磁片、使用什麼埠來完成這次調試。
其實,根據筆者的經驗,藍色警報中除了出錯代碼比較有用外,對普通用戶來說,其餘的大部分資訊並無多少實際意義,僅供參考而已。
為調試系統的需要,Windows在系統出現BSOP錯誤後,KeBugCheck會自動生成一個名為Memory.dmp的偵錯文件,該文件位於C:WindowsMinidump檔夾下,默認設定下,該檔的大小與系統實體記憶體容量一致,我們可以將該檔壓縮後發送給微軟的技術支持部門,以獲取相應的解決方案,但該檔的容量是如此巨大,如何發送是一個大問題,因此很少有用戶真正這樣做。
提示:打開“系統屬性→高級→啟動和故障恢復”視窗,如圖2所示,在這裏可以看到“寫入調試資訊”的生成方式:小記憶體傾印、核心記憶體傾印、完全記憶體傾印、無,基於上面的分析的原因,建議在這裏選擇“無”。
三、處理藍色警報三部曲
雖然Windows 2000/XP的藍色警報視窗顯示的資訊可能各有不同,或者是硬體原因,或者是驅動程式與系統相容性方面的問題,或者索性是應用程式的某些Bug。首先當然是排除病毒的原因,然後我們可以按照如下步驟進行處理:
第1步:重啟系統
出現藍色警報視窗時,我們首先應該考慮的是重新啟動系統,大部分情況下重啟系統後即可解決問題。不過,一般此時已無法通過“Ctrl+Alt+Del”熱啟動,而只能按下重定按鈕冷啟動,或者索性斷電後重新開機。
進入系統時,從“控制面板→管理工具→事件查看器”,或者在“開始→執行”框中鍵入“eventvwr.msc”命令進入事件查看器介面,如圖所示,在這裏根據日期和時間重點檢查“系統”和“應用程式”中的類型標誌為“錯誤”的事件,例如圖4報告某個服務啟動失敗的錯誤。
第2步:恢復至最後一次正確的配置
Windows 2000/XP出現藍色警報並不是無緣無故而來,NT架構的作業系統也不會亂發脾氣,一般都是由於更新了設備驅動程式或者安裝了某些軟體而造成,有時甚至是用戶自行優化系統或刪除了某些重要的系統檔所導致,此時可以重啟系統,並快速按下F8鍵,選擇“最後一次正確配置”,這樣會恢復註冊表中HKEY_LOCAL_MACHINESystemCurrentControlSet項的有效註冊表資訊,但無法解決驅動程式或檔損壞而導致的錯誤。
或者,你也可以嘗試按下F8鍵選擇啟動至安全模式,如果能夠正常進入安全模式,那麼說明可能是驅動程式或系統服務的問題。
第3步:查詢出錯代碼
記下圖1視窗中的英文資訊,特別是“0x0000001E”這段出錯代碼,然後從另外一台電腦上訪問
http://support.microsoft.com站點,在左上角的“搜索(知識庫)”框中鍵入“stop ***”,這裏的“***”表示出錯代碼,為閱讀的便利,一般當然是選擇“中文知識庫”,不過很多時候我們恐怕只能在“英文知識庫”才能找到答案,或者也可以在Google或百度上進行搜索。
如果以上幾招還是無法解決問題,也許我們應該考慮是否屬於硬體方面的問題,Windows XP可以訪問
http://support.microsoft.com/default.aspx?scid=kb;zh-cn;314062查看硬體相容列表(HCL),Windows 2000用戶可以訪問
http://winqual.microsoft.com/download/display.asp?FileName=hcl/Win2000HCL.txt查看硬體相容列表,然後可以考慮重新插拔記憶體、顯卡、網卡,或者用替換法嘗試逐個更換,比較常見的是記憶體問題或電源問題,如果這一招還不行的話,恐怕就只能考慮重新安裝系統或格式化硬碟了。