1 0×00000001 不正確的函數。 2 0×00000002 系統找不到指定的檔案。 3 0×00000003 系統找不到指定的路徑。 4 0×00000004 系統沒法開啓檔案。 5 0×00000005 拒絕存取。 6 0×00000006 無效的代碼。 7 0×00000007 儲存體控制區塊已毀。 8 0×00000008 儲存體空間不足,沒法處理這個指令。 9 0×00000009 儲存體控制區塊地址無效。 10 0×0000000A 環境不正確。 11 0×0000000B 嘗試加載一個格式錯誤的程序。 12 0×0000000C 存取碼錯誤。 13 0×0000000D 資料錯誤。 14 0×0000000E 儲存體空間不夠,沒法完成這項做業。 15 0×0000000F 系統找不到指定的磁盤驅動器。 16 0×00000010 沒法移除目錄。 17 0×00000011 系統沒法將檔案移到其它的磁盤驅動器。 18 0×00000012 沒有任何檔案。 19 0×00000013 儲存媒體爲寫保護狀態。 20 0×00000014 系統找不到指定的裝置。 21 0×00000015 裝置還沒有就緒。 22 0×00000016 裝置沒法識別指令。 23 0×00000017 資料錯誤(cyclic redundancy check) 24 0×00000018 程序發出一個長度錯誤的指令。 25 0×00000019 磁盤驅動器在磁盤找不到持定的扇區或磁道。 26 0×0000001A 指定的磁盤或磁盤沒法存取。 27 0×0000001B 磁盤驅動器找不到要求的扇區。 28 0×0000001C 打印機沒有紙。 29 0×0000001D 系統沒法將資料寫入指定的磁盤驅動器。 30 0×0000001E 系統沒法讀取指定的裝置。 31 0×0000001F 鏈接到系統的某個裝置沒有做用。 32 0×00000020 該進程沒法訪問文件,由於它正由另外一個進程使用。 33 0×00000021 檔案的一部份被鎖定,如今沒法存取。 34 0×00000022 磁盤驅動器的磁盤不正確。請將%2 (Volume Serial Number: %3) 插入磁盤機%1。 35 0×00000024 開啓的分享檔案數量太多。 36 0×00000026 到達檔案結尾。 37 0×00000027 磁盤已滿。 38 0×00000032 不支持這種網絡要求。 39 0×00000033 遠程計算機沒法使用。 40 0×00000034 網絡名稱重複。 41 0×00000035 網絡路徑找不到。 42 0×00000036 網絡忙碌中。 43 0×00000037 指定的網絡資源或設備不可再用。 44 0×00000038 網絡BIOS命令限制已經達到 45 0×00000039 網絡配接卡發生問題。 46 0×0000003A 指定的服務器沒法執行要求的做業。 47 0×0000003B 網絡發生意外錯誤。 48 0×0000003C 遠程配接卡不兼容。 49 0×0000003D 打印機隊列已滿。 50 0×0000003E 服務器的空間沒法儲存等候打印的檔案。 51 0×0000003F 等候打印的檔案已經刪除。 52 0×00000040 指定的網絡名稱沒法使用。 53 0×00000041 拒絕存取網絡。 54 0×00000042 網絡資源類型錯誤。 55 0×00000043 網絡名稱找不到。 56 0×00000044 超過區域計算機網絡配接卡的名稱限制。 57 0×00000045 超過網絡BIOS 做業階段的限制。 58 0×00000046 遠程服務器已經暫停或者正在起始中。 59 0×00000047 因爲聯機數目已達上限,此時沒法再聯機到這臺遠程計算機。 60 0×00000048 指定的打印機或磁盤裝置已經暫停做用。 61 0×00000050 檔案已經存在。 62 0×00000052 沒法創建目錄或檔案。 63 0×00000053 INT 24 失敗 64 0×00000054 處理這項要求的儲存體沒法使用。 65 0×00000055 近端裝置名稱已經在使用中。 66 0×00000056 指定的網絡密碼錯誤。 67 0×00000057 參數錯誤。 68 0×00000058 網絡發生資料寫入錯誤。 69 0×00000059 此時系統沒法執行其它行程。 使用windows出現藍色屏幕是常常的事,並且往往由於不清楚錯誤的來源而頻繁從新安裝系統,勞神費時。星晴吧收集了一些windows死機密碼,供你們參考。 代碼含義 1.0x0000000A:IRQL_NOT_LESS_OR_EQUAL ◆錯誤分析:主要是由問題的驅動程序、有缺陷或不兼容的硬件與軟件形成的。 從技術角度講. 代表在內核模式中有級別進程請求(IRQL)訪問其沒有權限訪問的內存地址。 ◇解決方案:請用前面介紹的解決方案中的二、三、五、八、9方案嘗試排除. 二、0x00000012:TRAP_CAUSE_UNKNOWN ◆錯誤分析:若是遇到這個錯誤信息, 那麼很不幸, 應爲KeBudCheck分析的結果是錯誤緣由 未知。 ◇解決方案:既然微軟都幫不上忙, 就得靠本身了, 請仔細回想這個錯誤是何時出現的; 第一次發生時你對系統作了哪些操做; 發生時正在進行什麼操做. 從這些信息中找出可能的緣由, 從而選擇相應解決方案嘗試排除。 三、0x0000001A:MEMORY_MANAGEMENT ◆錯誤分析:這個內存管理錯誤每每是由硬件引發的, 好比: 新安裝的硬件、內存自己有問題等. ◇解決方案:若是是在安裝Windows時出現, 有多是因爲你的電腦達不到安裝Windows的最小內存和磁盤要求。 四、0x0000001E:KMODE_EXCEPTION_NOT_HANDLED ◆錯誤分析:Windows內核檢查到一個非法或者未知的進程指令,這個停機碼通常是由問題的內存或是與前面0x0000000A類似的緣由形成的. ◇解決方案: (1)硬件兼容有問題:請對照前面提到的最新硬件兼容性列表, 查看全部硬件是否包含在該列表中。 (2)有問題的設備驅動、系統服務或內存衝突和中斷衝突: 若是在藍屏信息中出現了驅動程序的名字, 請試着在安裝模式或者故障恢復控制檯中禁用或刪除驅動程序, 並禁用全部剛安裝的驅動和軟件. 若是錯誤出如今系統啓動過程當中, 請進入安全模式, 將藍屏信息中所標明的文件重命名或者刪除。 (3)若是錯誤信息中明確指出Win32K.sys: 頗有多是第三方遠程控制軟件形成的, 須要從故障恢復控制檯中將對該軟件的服務關閉。 (4)在安裝Windows後第一次重啓時出現:最大嫌疑可能時系統分區的磁盤空間不足或BIOS兼容有問題. (5)若是是在關閉某個軟件時出現的:頗有可能時軟件本生存在設計缺陷, 請升級或卸載它。 五、0x00000023:FAT_FILE_SYSTEM 0x00000024:NTFS_FILE_SYSTEM ◆錯誤分析:0x00000023一般發生在讀寫FAT16或者FAT32文件系統的系統分區時, 而0x00000024則是因爲NTFS.sys文件出現錯誤(這個驅動文件的做用是允許系統讀寫使用。(NTFS文件系統的磁盤). 這兩個藍屏錯誤頗有多是磁盤自己存在物理損壞, 或是中斷要求封包(IRP)損壞而致使的。 其餘緣由還包括:硬盤磁盤碎片過多; 文件讀寫操做過於頻繁, 而且數據量很是大或者是因爲一些磁盤鏡像軟件或殺毒軟件引發的. ◇解決方案: 第一步:首先打開命令行提示符, 運行"Chkdsk /r"(注:不是CHKDISK, 感受象這個, 可是它們所指的內容是不同的)命令檢查並修復硬盤錯誤, 若是報告存在壞道(Bad Track), 請使用硬盤廠商提供的檢查工具進行檢查和修復。 第二步:接着禁用全部即便掃描文件的軟件, 好比:殺毒軟件、防火牆或備份工具. 第三步:右擊C:\winnt\system32\drivers\fastfat.sys文件並選擇"屬性", 查看其版本是否與當前系統所使用的Windows版本相符合。(注:若是是XP, 應該是C:\windows\system32\drivers\fastfat.sys) 第四步:安裝最新的主板驅動程序, 特別IDE驅動. 若是你的光驅、可移動存儲器也提供有驅動程序, 最好將它們升級至最新版。 六、0x00000027:RDR_FILE_SYSTEM ◆錯誤分析:這個錯誤產生的緣由很難判斷, 不過Windows內存管理出了問題極可能會致使這個停機碼的出現. ◇解決方案:若是是內存管理的緣故, 一般增長內存會解決問題。 七、0x0000002EATA_BUS_ERROR ◆錯誤分析:系統內存存儲器奇偶校驗產生錯誤, 一般是由於有缺陷的內存(包括物理內存、二級緩存或者顯卡顯存)時設備驅動程序訪問不存在的內存地址等緣由引發的. 另外, 硬盤被病毒或者其餘問題所損傷, 以出現這個停機碼。 ◇解決方案: (1)檢查病毒 (2)使用"chkdsk /r"命令檢查全部磁盤分區. (3)用Memtest86等內存測試軟件檢查內存。 (4)檢查硬件是否正確安裝, 好比:是否牢固、金手指是否有污漬. 八、0x00000035:NO_MORE_IRP_STACK_LOCATIONS ◆錯誤分析:從字面上理解, 應該時驅動程序或某些軟件出現堆棧問題。 其實這個故障的真正緣由應該時驅動程序本生存在問題, 或是內存有質量問題. ◇解決方案:請使用前面介紹的常規解決方案中與驅動程序和內存相關的方案進行排除。 九、0x0000003F:NO_MORE_SYSTEM_PTES ◆錯誤分析:一個與系統內存管理相關的錯誤, 好比:因爲執行了大量的輸入/輸出操做, 形成內存管理出現問題: 有缺陷的驅動程序不正確地使用內存資源; 某個應用程序(好比:備份軟件)被分配了大量的內核內存等. ◇解決方案:卸載全部最新安裝的軟件(特別是哪些加強磁盤性能的應用程序和殺毒軟件)和驅動程序。 十、0x00000044:MULTIPLE_IRP_COMPLIETE_REQUESTS ◆錯誤分析:一般是由硬件驅動程序引發的. ◇解決方案:卸載最近安裝的驅動程序。 這個故障不多出現, 目前已經知道的是, 在使用這家公司的某些軟件時會出現, 其中的罪魁就是Falstaff.sys文件。(做者難道不怕吃官司嘛, 把公司網址公佈) 十一、0x00000050: PAGE_FAULT_IN_NONPAGED+AREA ◆錯誤分析:有問題的內存(包括物理內存、二級緩存、顯存)、不兼容的軟件(主要是遠程控制和殺毒軟件)、損壞的NTFS卷以及有問題的硬件(好比: PCI插卡自己已損壞)等都會引起這個錯誤. ◇解決方案:請使用前面介紹的常規解決方案中與內存、軟件、硬件、硬盤等相關的方案進行排除。 若是電腦中安裝有maxdos(或是用maxdos的啓動盤)也能夠在命令模式下直接刪除C盤的頁面文件。 十二、0x00000051:REGISTRY_ERROR ◆錯誤分析:這個停機碼說明註冊表或系統配置管理器出現錯誤, 因爲硬盤自己有物理損壞或文件系統存在問題, 從而形成在讀取註冊文件時出現輸入/輸出錯誤. ◇解決方案:使用"chkdsk /r"檢查並修復磁盤錯誤。 1三、0x00000058:FTDISK_INTERNAL_ERROR ◆錯誤分析:說明在容錯集的主驅動發生錯誤. ? ◇解決方案:首先嚐試重啓電腦看是否能解決問題, 若是不行, 則嘗試"最後一次正確配置"進行解決。 1四、0x0000005E:CRITICAL_SERVICE_FAILED ◆錯誤分析:某個很是重要的系統服務啓動識別形成的. ◇解決方案:若是是在安裝了某個新硬件後出新的, 能夠先移除該硬件, 並經過網上列表檢查它是否與Windows 2K/XP兼容, 接着啓動電腦, 若是藍屏仍是出現, 請使用"最後一次正確配置"來啓動Windows, 若是這樣仍是失敗, 建議進行修復安裝或是重裝。 1五、0x0000006F:SESSION3_INITIALIZATION-FAILED ◆錯誤分析:這個錯誤一般出如今Windows啓動時, 通常是由有問題的驅動程序或損壞的系統文件引發的. ◇解決方案:建議使用Windows安裝光盤對系統進行修復安裝。 1六、0x00000076ROCESS_HAS_LOCKED_PAGES ◆錯誤分析:一般是由於某個驅動程序在完成了一次輸入/輸出操做後, 沒有正確釋放所佔有的內存 ◇解決方案: 第一步:點擊開始-->運行:regedt32, 找到[HKLM\SYSTEM\Currentcontrol set\control\session manager\memory management], 在右側新建雙字節值"TrackLockedPages", 值爲1. 這樣Windows便會在錯誤再次出現時跟蹤到是哪一個驅動程序的問題。第二步:若是再次出現藍屏, 那麼錯誤信息會變成:STOP:0x0000000CB(0xY,0xY,0xY,0xY)DRIVER_LEFT_LOCKED_PAGES_IN_PROCESS其中第四個"0xY"會顯示爲問題驅動程序的名字, 接着對其進行更新或刪除.第三步:進入註冊表, 刪除添加的"TrackLockedPages". 1七、0x00000077:KERNEL_STACK_INPAGE_ERROR ◆錯誤分析:說明須要使用的內核數據沒有在虛擬內存或物理內存中找到。 這個錯誤經常是磁盤有問題, 相應數據損壞或受到病毒侵蝕. ◇解決方案:使用殺毒軟件掃描系統; 使用"chkdsk /r"命令檢查並修復磁盤錯誤, 如不行則使用磁盤廠商提供的工具檢查修復。 1八、0x0000007A:KERNEL_DATA_INPAGE_ERROR ◆錯誤分析:這個錯誤每每是虛擬內存中的內核數據沒法讀入內存形成的. 緣由多是虛擬內存頁面文件中存在壞簇病毒、磁盤控制器出錯、內存有問題。 ◇解決方案:首先用升級爲最新病毒庫殺毒軟件查殺病毒, 若是信息中還有0xC000009C或0xC000016A代碼, 那麼表示是壞簇形成的, 而且系統的磁盤檢測工具沒法自動修復, 這時要進入"故障恢復控制檯", 用"chkdsk /r"命令進行手動修復. 1九、0x0000007B:INACESSIBLE_BOOT_DEVICE ◆錯誤分析:Windows在啓動過程當中沒法訪問系統分區或啓動卷。 通常發生在更換主板後第一次啓動時, 主要是由於新主板和舊主板的IDE控制器使用了不一樣芯片組形成的. 有時也多是病毒或硬盤損傷所引發的。 ◇解決方案:通常只要用安裝光盤啓動電腦, 而後執行修復安裝便可解決問題. 對於病毒則可以使用DOS版的殺毒軟件進行查殺(有kv2005DOS版下載). 若是是硬盤自己存在問題, 請將其安裝到其餘電腦中, 而後使用"chkdsk /r"來檢查並修復磁盤錯誤。 若是是BIOS設置問題,只要將BIOS設置IDE模式便可. 20、0x0000007E:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED ◆錯誤分析:系統進程產生錯誤, 但Windows錯誤處理器沒法捕獲。 其產生緣由不少, 包括:硬件兼容性、有問題的驅動程序或系統服務、或者是某些軟件. ◇解決方案:請使用"事件查看器"來獲取更多的信息, 從中發現錯誤根源。(發現好像不是解決哦, 看來這裏你們要自力更生了!) 2一、0x0000007F:UNEXPECTED_KERNEL_MOED_TRAP ◆錯誤分析:通常是因爲有問題的硬件(好比:內存)或某些軟件引發的. 有時超頻也會產生這個錯誤。 ◇解決方案:用檢測軟件(好比:Memtest86)檢查內存, 若是進行了超頻, 請取消超頻. 將PCI硬件插卡從主板插槽拔下來, 或更換插槽。 另外, 有些主板(好比:nForce2主板)在進行超頻後, 南橋芯片過熱也會致使藍屏, 此時爲該芯片單獨增長散熱片每每能夠有效解決問題. 2二、0x00000080:NMI_HARDWARE_FAILURE ◆錯誤分析:一般是有硬件引發的。(彷佛藍屏與硬件錯誤有不解之緣) ◇解決方案:若是最近安裝了新硬件, 請將其移除, 而後試試更換插槽和安裝最新的驅動程序, 若是升級了驅動程序, 請恢復後原來的版本; 檢查內存金手指是否有污染和損壞; 掃描病毒; 運行"chkdsk /r"檢查並修復磁盤錯誤; 檢查全部硬件插卡已經插牢. 若是以上嘗試都無效果, 就得找專業的電腦維修公司請求幫助了。 2三、0x0000008E:KERNEL_MODE_EXCEPTION_NOT_HANDLED ◆錯誤分析:內核級應用程序產生了錯誤, 但Windows錯誤處理器沒有捕獲. 一般是硬件兼容性錯誤。 ◇解決方案:升級驅動程序或升級BIOS. 2四、0x0000009C:MACHINE_CHECK_EXCEPTION ◆錯誤分析:一般是硬件引發的。 通常是由於超頻或是硬件存在問題(內存、CPU、總線、電 源). ◇解決方案:若是進行了超頻, 請降下CPU原來頻率, 檢查硬件。 2五、0x0000009DRIVER_POWER_STATE_FAILURE ◆錯誤分析:每每與電源有關係, 經常發生在與電源相關的操做, 好比:關機、待機或休睡. ◇解決方案:重裝系統, 若是不能解決, 請更換電源。 2六、0x000000A5:ACPI_BIOS_ERROR ◆錯誤分析:一般是由於主板BIOS不能全面支持ACPI規範. ◇解決方案:若是沒有相應BIOS升級, 那麼可在安裝Windows 2K/XP時, 當出現"press F6 if you need to install a third-party SCSI or RAID driver"提示時, 按下F7鍵, 這樣Windows便會自動禁止安裝ACPI HAL, 而安裝Standard PC HAL. 2七、0x000000B4:VIDEO_DRIVER_INIT_FAILURE ◆錯誤分析:這個中止信息表示Windows由於不能啓動顯卡驅動, 從而沒法進入圖形界面. 一般是顯卡的問題, 或者是存在與顯卡的硬件衝突(好比:與並行或串行端口衝突). ◇解決方案:進入安全模式查看問題是否解決, 若是能夠, 請升級最新的顯卡驅動程序, 若是還不行, 則極可能是顯卡與並行端口存在衝突, 須要在安全模式按下WIN+break組合鍵打開"系統屬性", 在硬件-->設備管理器中找到並雙擊鏈接打印的LPT1端口的選項, 在"資源"選項卡中取消"使用自動配置"的勾選, 而後將"輸入/輸出範圍"的"03BC"改成"0378". 2八、0x000000BE:ATTEMPTED_WRITE_TO_READONLY_MEMORY ◆錯誤分析:某個驅動程序試圖向只讀內存寫入數據形成的。 一般是在安裝了新的驅動程序, 系統服務或升級了設備的固件程序後. ◇解決方案:若是在錯誤信息中包含有驅動程序或者服務文件名稱, 請根據這個信息將新安裝的驅動程序或軟件卸載或禁用。 2九、0x000000C2:BAD_POOL_CALLER ◆錯誤分析:一個內核層的進程或驅動程序錯誤地試圖進入內存操做. 一般是驅動程序或存在BUG的軟件形成的。 ◇解決方案:請參考前面介紹的常規解決方案相關項目進行排除. 30、0x000000CERIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS ◆錯誤分析:一般是由有問題的驅動程序或系統服務形成的。 ◇解決方案:請參考前面介紹的常規解決方案相關項目進行排除. 3一、0x000000D1RIVER_IRQL_NOT_LESS_OR_EQUAL ◆錯誤分析:一般是由有問題的驅動程序引發的(好比羅技鼠標的Logitech MouseWare 9.10和9.24版驅動程序會引起這個故障). 同時,有缺陷的內存、損壞的虛擬內存文件、 某些軟件(好比多媒體軟件、殺毒軟件、備份軟件、DVD播放軟件)等也會致使這個錯誤。 ◇解決方案:檢查最新安裝或升級的驅動程序(若是藍屏中出現"acpi.sys"等相似文件名, 能夠很是確定是驅動程序問題)和軟件; 測試內存是否存在問題; 進入"故障恢復控制檯", 轉到虛擬內存頁面文件Pagefile.sys所在分區, 執行"del pagefile.sys"命令, 將頁面文件刪除; 而後在頁面文件所在分區執行"chkdsk /r"命令;進入Windows後從新設置虛擬內存。若是在上網時遇到這個藍屏, 而你偏偏又在進行大量的數據下載和上傳(好比:網絡遊戲、BT下載), 那麼應該是網卡驅動的問題, 須要升級其驅動程序. 3二、0x000000EA:THREAD_STUCK_IN_DEVICE_DRIVER ◆錯誤分析:一般是由顯卡或顯卡驅動程序引起的。 ◇解決方案:先升級最新的顯卡驅動, 若是不行, 則須要更換顯卡測試故障是否依然發生. 3三、0x000000ED:UNMOUNTABLE_BOOT_VOLUME ◆錯誤分析:通常是因爲磁盤存在錯誤致使的, 有時也建議檢查硬盤連線是否接觸不良, 或是沒有使用合乎該硬盤傳輸規格的鏈接線, 例如ATA-100仍使用ATA-33的鏈接線, 對低速硬盤無所謂, 但高速硬盤(支持ATA-66以上)的要求較嚴格, 規格不對的連線有時也會引發這類沒辦法開機的故障。 若是在修復後, 仍是常常出現這個錯誤, 極可能是硬盤損壞的前兆. ◇解決方案:通常狀況下, 重啓會解決問題, 無論怎麼樣都建議執行"chkdsk /r"命令來檢查修復硬盤 3四、0x000000F2:HARDWAREINTERRUPT_STORM ◆錯誤分析:內核層檢查到系統出現中斷錯誤, 好比:某個設備在完成操做後沒有釋放所佔用的中斷。 一般這是由缺陷的驅動程序形成的. ◇解決方案:升級或卸載最新安裝的硬件驅動程序。 3五、0x00000135:UNABLE_TO_LOCATE_DLL ◆錯誤分析:一般表示某個文件丟失或已經損壞, 或者是註冊表出現錯誤. ◇解決方案:若是是文件丟失或損壞, 在藍屏信息中一般會顯示相應的文件名, 你能夠經過網絡或是其餘電腦找到相應的文件, 並將其複製到系統文件夾下的SYSTEM32子文件夾中。 若是沒有顯示文件名, 那就頗有多是註冊表損壞, 請利用系統還原或是之前的註冊表備份進行恢復. 3六、0x0000021A:STATUS_SYSTEM_PROCESS_TERMINATED ◆錯誤分析:用戶模式子系統, 例如Winlogon或客服服務運行時子系統(CSRSS)已損壞, 因此沒法再保證安全性, 致使系統沒法啓動。 有時, 當系統管理員錯誤地修改了用戶賬號權限, 致使其沒法訪問系統文件和文件夾. ◇解決方案:使用"最後一次正確的配置", 若是無效, 可以使用安裝光盤進行修復安裝。 3七、STOP 0xC0000221 or STATUS_IMAGE_CHECKSUM_MISMATCH ◆錯誤分析:一般是因爲驅動程序或系統DLL文件損壞形成的. 通常狀況下, 在藍屏中會出現 文件名稱 .sys文件 3. 將其重命名,如:XXXintelppm.sys 4. 重啓。 一、運行在內核模式下的設備驅動程序或者操做系統函數引起了一個未被處理的異常,好比內存訪問違例(因爲企圖寫一個只讀頁面或者企圖讀一個當前未被映射的內存地址(即無效地址)而引發)。 二、調用一個內核支持例程致使了從新調度,好比當中斷請求級別(IRQL)爲DPC/Dispatch級別或更高級別時等待一個標記爲須要等待的調度對象。 三、在DPC/Dispatch級別或更高的IRQL級別時因爲數據存在於頁面文件或內存映射文件中而發生了頁面錯誤(Page Fault)。(這將要求內存管理器必須等待一個I/O操做發生。但正如上面一項所說,在DPC/Dispatch級別或更高IRQL級別上不可以進行等待,由於那將要求一次從新調度)。 四、當檢測到一個內部狀態代表數據已遭受破壞或者在保證數據不被破壞的狀況下系統沒法繼續執行時,設備驅動程序或操做系統函數明確地要求系統崩潰(經過調用系統函數KeBugCheckEx)。 五、發生硬件錯誤,好比處理器的計算機檢查異常功能(Machine Check)報告有異常或者發生不可屏蔽中斷(NMI)。 在瞭解以上三點知識以後,相信您對Windows的大無畏犧牲精神會有所讚揚,也會原諒它的「藍臉」了。其實,在絕大多數狀況下均是第三方設備驅動程序致使了Windows的崩潰。對於Windows XP用戶提交給微軟在線崩潰分析(Microsoft OCA, Microsoft Online Crash Analysis)站點的內存轉儲文件,微軟對引發崩潰的緣由進行了統計分類,以下圖所示:(數據於2004年4月份生成)。 既然Windows向咱們露出了無奈的「藍臉」,咱們就應該打破沙鍋問到底,儘早將引起系統崩潰的罪魁禍首緝拿歸案,讓咱們的系統早日康復。下面,咱們來看看Windows想經過這張「藍臉」告訴咱們些什麼。 如上圖所示,這是一張顯示了全部參數的藍屏圖像。固然,咱們所遇到的藍屏圖像與之可能存在差別,好比少了一些信息等,可是大體是相同的,咱們就以它爲例進行全面地闡述。 首先,咱們看看圖中用數字1標註的區域,這裏列出了傳遞給KeBugCheckEx函數的中止代碼和四個參數。此圖中的中止代碼爲0x000000D1,四個參數爲後面括號內的用逗號分隔的四段16進制數字;接下來,咱們來看看圖中用數字2標註的區域,這裏顯示的是該中止代碼0x000000D1對應的英文解釋;最後,咱們看看圖中用數字3標註的區域,這個區域當且僅當中止代碼的四個參數中的一個參數包含了操做系統或設備驅動程序代碼的地址時纔會顯示,顯示的內容爲、該地址所處模塊的基地址以及日期戳。如此例中,該設備驅動程序的文件名爲「myfault.sys」。 這些信息對咱們排錯有何做用呢?若是上圖中的區域3出現了,那是最好的結果了,由於您直接就看到了罪魁禍首——「myfault.sys」文件。可是,區域3每每是不出現的,那麼咱們就要在Microsoft的在線幫助和支持中查找該中止代碼等信息或者使用咱們的利器——WinDbg進行手動分析了。筆者推薦後者,由於同一個中止代碼可能由各類各樣的驅動程序錯誤形成,獲得了中止代碼並不等於獲得了問題文件名稱,另外,微軟的在線幫助和支持中不是全部的錯誤都可以搜索到,而WinDbg正好克服了這兩個弱點,直接可以抓出罪魁禍首文件,讓您痛快將其斬首。 WinDbg是免費軟件,其微軟官方下載地址參考擴展閱讀,具體項目爲Install Debugging Tools for Windows 32/64-bit Version。 使用WinDbg分析崩潰時的內存轉儲文件的前提是您要讓系統在崩潰時自動生成一個內存轉儲文件,作法以下: 1.單擊開始,而後單擊運行。 2.鍵入 control sysdm.cpl ,而後單擊肯定。您將會打開系統屬性,請切換到高級選項卡。結果以下圖所示: 3.在高級選項卡上,在啓動和故障恢復部分中單擊設置。這將打開啓動和故障恢復對話框,以下圖所示: 4.在寫入調試信息列表中,選擇「小內存轉儲(64 KB)」或「核心內存轉儲」,這樣系統在崩潰時將會自動生成對應的內存轉儲文件。若是您不想讓藍屏只閃爍一下,而是想看清楚它直到您手動從新啓動計算機,請清除系統失敗部分中自動從新啓動(R)項目前的複選框。而後單擊肯定。 5.在啓動和故障恢復對話框中,單擊肯定。 6.單擊肯定關閉系統屬性對話框。 7.在系統設置更改對話框中,若是要當即從新啓動計算機,則單擊是;若是要稍後從新啓動計算機,則單擊否。 注:? Vista用戶請相似操做。? 對於原版操做系統,以上設置是默認的(除了禁止自動從新啓動)。? 對於第4點中的寫入調試信息列表內容,現給出如下參照釋義: (以上三種轉儲文件的大小依次增大,關於三者的比較不在本文討論範圍以內,筆者僅推薦設置爲「小內存轉儲」或者「核心內存轉儲」,通常性錯誤「小內存轉儲」就足夠了,如不能無缺分析請選擇「核心內存轉儲」。爲了數據的豐富性,您也能夠直接選擇「核心內存轉儲」,但筆者強烈不推薦徹底內存轉儲。) 值得注意的是,爲了確保崩潰時自動生成內存轉儲文件,您可能還須啓用虛擬內存頁面文件。特別地,當您選擇記錄核心內存轉儲時,您必須啓用虛擬內存頁面文件,並且因爲核心內存轉儲文件的大小取決於該機器上操做系統和全部活動驅動程序已經分配的內核模式內存的數量,所以沒有很好的辦法來預測內核內存轉儲的大小。下表僅給出該狀況下的參考虛擬內存大小設置值: 另外,除了頁面文件佔用的磁盤空間,內存轉儲文件(*.DMP)的生成位置所在的磁盤還要有足夠的空閒空間來提取這個轉儲文件,不然同樣會「生成不了」(其實是丟失了)。 設置好這些以後,一旦您的系統發生藍屏崩潰,系統就會在以上設置中選中的相應內存轉儲文件類型下對應的目錄處生成轉儲文件。您所要作的就是馬上拿出利器——啓動WinDbg進行分析。 筆者在此將結合一個實例進行詳細說明,過程當中包含了WinDbg調試藍屏用到的一些命令,這些命令將再也不額外整理,請於閱讀過程當中注意識記。 首先,您要配置WinDbg將要使用的調試符號文件(Symbol File)的位置。什麼是調試符號文件呢?符號文件隨DLL文件或者EXE文件創建時產生,提供包含在可執行文件和動態連接庫(DLL) 中的函數的佔位空間。此外,符號文件還能夠表示達到失敗點的函數調用路線圖。當咱們使用各類Microsoft工具調試應用程序時,必須擁有符號信息,這樣才能正確分析出問題根源。那咱們該如何設置調試符號文件的位置呢?咱們既能夠從微軟官網下載完整的符號文件包(同位於WinDbg下載頁面),也可使用微軟的符號文件服務器(Microsoft Symbol Server)。筆者推薦後者,由於一次分析所要用到的符號文件侷限於有限的幾個而已,使用後者可讓程序自動下載,既節省時間,又能夠確保符號文件是最新的而且是正確的。在WinDbg中點擊「File」菜單,選擇「Symbol File Path …」,在打開的對話框中輸入 後點擊「OK」按鈕便可。固然,還有一步就是再次點擊「File」菜單,選擇「Save Workspace」來保存當前的設置。 設置了符號文件以後,您就能夠進行內存轉儲文件的分析了。一樣點擊「File」菜單,此次要選擇「Open Crash Dump …」,而後經過文件打開對話框打開生成的待分析的內存轉儲文件。本例中設置的是核心內存轉儲類型,因而應該定位至「%SystemRoot%」(即系統盤Windows文件夾下),打開MEMORY.DMP文件。可是筆者已經事先將其轉移至「E:\Memory Dump\MEMORY.DMP」,所以在後續的圖片中,您看到的是這個地址。此時WinDbg會滾動顯示一些信息而且會稍有掛起的感受,直到從微軟符號文件服務器下載完分析這個崩潰文件所須要的全部符號文件。 在上圖中,咱們看到就是這個打開的調試器命令窗口(Debugger Command Window)(已經將符號文件加載完畢,待命),咱們先看看位於底部的區域6,這個小的長方條就是WinDbg的命令輸入處(Command Entry),它又分爲兩個區域,左邊顯示「0: kd>」的是提示區,右邊空白區是命令輸入區。當剛打開這個窗口而符號文件還沒有下載/加載完畢時,提示區域會什麼都不顯示,而命令輸入區域將顯示「Debuggee not connected」。直到符號加載完畢,窗口中顯示出最後一行「Followup: MachineOwner」纔會變爲空閒狀態。在空閒狀態時,它將顯示爲與上圖中相似的模樣。爲何說相似呢?由於這個空閒待命提示根據調試類型、計算機處理器硬件配置不一樣,好比此例中,進行的是內核調試,因而顯示「kd>」(kernel debug),系統爲多(核)處理器,所以在「kd>」以前還顯示一個「0:」,代表當前位於編號爲0的處理器。在執行了某個命令以後,若是命令須要處理的任務較多(如「!analyze -v」),提示區域將顯示爲忙碌狀態的「*BUSY*」,一旦顯示爲這個狀態,您不論輸入什麼命令都不會當即執行,而是等待變爲空閒狀態時延緩執行。 如上圖所示,圖中區域1處將顯示打開的這個內存轉儲文件的物理路經;區域2處顯示的則是當前加載的符號文件的位置,本例中代表是從微軟服務器下載;區域3共有三行,顯示的爲系統信息,第一行代表了系統爲Windows XP,內核版本爲2600(SP3),多處理器(2顆),32位,第二行代表了系統類型爲NT系統,客戶端系統,第三行代表系統的詳細版本標識;區域4共兩行,第一行代表該內存轉儲文件生成的時間,也就是系統崩潰的具體時間,本例中(這是去年12月獲得的一個崩潰轉儲文件,現用做本例進行說明)爲星期六(Sat),12月(Dec)27日,22:56:31.062,2008年,格林尼治標準時間東八區(GMT+8),第二行顯示的是崩潰時自系統啓動以來,系統共運行了0天4小時5分15.797秒。區域5是很關鍵的錯誤信息,它的第一行僅在加載符號文件遇到錯誤時顯示,此例中,它告訴咱們「對於BaseTDI.SYS文件,模塊已經加載完畢但卻不可以爲其加載符號文件」,若是以前配置了正確的符號文件路徑,這就告訴咱們BaseTDI.SYS不是微軟公司的文件,而是第三方驅動程序文件,這極可能是引發錯誤的緣由,值得關注但須進一步分析。區域5的第二行是WinDbg自動分析的結果,它告訴咱們,引發崩潰的緣由(Probably caused by:)極可能是HookUrl.sys文件。通常狀況下,這就是引發錯誤的罪魁禍首了,可是也有很多的例外,最典型的就是顯示一個微軟本身的文件在此處,您可要注意了,爲了不枉殺無辜,最好進一步分析來看看都有哪些模塊牽扯在崩潰的最後一刻,這樣就可以保證審判無誤了!進一步分析的命令能夠從「!analyze -v」開始。 咱們既能夠在命令輸入區域手動鍵入命令 !analyze -v ,也能夠在上圖中的區域7所示位置單擊藍色的這個命令。以後,提示區域將顯示爲「*BUSY*」,WinDbg將分析一段時間直到將結果顯示完畢並再次轉爲空閒狀態。下面咱們根據一張例圖闡釋執行「!analyze -v」後顯示的各類結果: WinDbg通過自動的分析,可能會顯示上圖中區域1處所示第一行的錯誤檢查說明(Bug Check Interpretation),而第二行則給出了詳細的解釋,從圖中信息看得出,此例錯誤因爲「驅動程序在隊列工做項目完成以前卸載」形成的。這個「DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS」就應該是顯示在藍屏上方的錯誤說明字樣,後面的Arguments1~4就是藍屏時中止代碼後面的四個參數。圖中區域2所示的BUGCHECK_STR是WinDbg中分了類別的錯誤檢查(Bug Check)的一項,此例中爲0xCE,也是中止代碼的分類簡寫,咱們在命令輸入區執行 .bugcheck 命令,能夠獲得中止代碼及其參數,這和上圖的區域一、藍屏上的信息是一致的。本例中能夠獲得以下結果: 0: kd> .bugcheck Bugcheck code 000000CE Arguments bacb0a4e 00000008 bacb0a4e 00000000 咱們在Bugcheck code值前補上「0x」就能夠獲得藍屏上的信息「***STOP: 0x000000CE (bacb0a4e, 00000008, bacb0a4e, 00000000)」。固然,關於這個錯誤若是您想了解更多,一個是能夠在微軟在線幫助和支持網站上搜索字符串「0x000000CE」,再就是能夠利用上圖中區域2的BUGCHECK_STR值「0xCE」執行 .hh bug check 0xCE 命令,在打開的窗口左欄右下角點擊「Display」按鈕。若是要在WinDbg中顯示一箇中止代碼或者錯誤檢查類的詳細說明(以此錯誤爲例),鍵入命令 !analyze -show 0x000000CE 或者 !analyze -show 000000CE ,也能夠是 !analyze -show 0xCE 。區域3中顯示的就是二審判決的重要信息——線程堆棧信息。特別注意紅色框內的部分,第一行是「WARNING: Frame IP not in any known module. Following frames may be wrong.」意思就是「警告:堆棧幀IP(InstructionPtr,僅x86處理器,用於決定幀的堆棧回朔的指令指針)不存在於任何已知的模塊中,下面的幀可能出現錯誤」。這個意思的解釋已超出本文討論範圍,筆者僅告訴你們,這行文字下面的一行右側的模塊是系統藍屏崩潰時刻使用的最後一個模塊(除了Windows內核最後調用KeBugCheckEx犧牲本身,就是警告文字上方的三行),每每就是它引發了崩潰!咱們來細看。你們若是瞭解了堆棧的數據結構或是Windows內存分配機制就應該知道,Windows爲線程分配額外內存時是從高地指向低地址進行的,就是說,藍色區域3中的堆棧信息咱們得倒過來由下往上看,這樣纔是系統崩潰以前的一刻內核態函數的調用和傳遞狀況,好比此例,系統內核執行體(nt!,即Ntoskrnl.exe)經過函數IopfCallDriver調用了BaseTDI,而後BaseTDI又調用了HookUrl.sys(Unloaded_字樣表示未加載),再而後就藍屏了。那麼在這最後一刻就涉及到了兩個非Windows內核的模塊——BaseTDI以及HookUrl.sys。之因此要進行這個「二審判決」,就是要避免一種狀況——萬一HookUrl.sys與BaseTDI是來自兩個公司或者兩個軟件的模塊,而最後加載的HookUrl.sys是沒有問題的,出錯是由於BaseTDI給HookUrl.sys傳遞了格式錯誤或者已被破壞的、或者非法的參數信息,HookUrl.sys接受此無效數據而引起了崩潰。若是咱們不看線程棧,就根據以前的「Probably Cause by:HookUrl.sys」進行判決,咱們頗有可能枉殺無辜而讓兇手逍遙法外。只有經過線程棧咱們才能發現另外一個驅動程序BaseTDI也被牽連進來。(在應用程序崩潰不致系統崩潰的調試分析中,因爲處於用戶態,WinDbg自動分析結果中的「Probably Cause by:」幾乎都是錯誤的。在這種狀況下,使用!thread命令是不能顯示出任何信息的,由於這個命令僅對內核態的崩潰調試有效,然而kb命令也顯示不出有用的信息,只有用「~*kb」來顯示詳細的所有線程棧纔可能發現問題根源,有的時候還需配合其餘命令,本文不做討論) 固然,若是您熟練之後,以爲沒有必要使用「!analyze -v」命令的話,能夠直接使用 !thread 或者 kb 命令顯示出核心的線程棧信息來二審判決。如今好了,犯罪嫌疑人目標鎖定在BaseTDI和HookUrl.sys身上。如今,咱們來看看它們到底是什麼、是哪一個公司、哪一個程序的模塊。(從以前不可以自動從微軟服務器爲他們加載符號文件就能夠知道,它們必定都是第三方驅動程序) 使用命令 lm kv m Basetdi* (使用lm(列出模塊)命令和內核k選項、詳細v選項以及參數m,配合包含通配符*的字符串BaseTDI,來列出當時已加載於內核模式的包含字符BaseTDI的全部驅動文件詳細信息。使用通配符來取代完整的文件名後綴能夠避免信息的侷限性,藉此也許能夠發現多個相關的模塊以提供更多診斷線索),咱們獲得下圖結果: 從圖中藍色框選部分,咱們能夠看出,當時內核態下只有一個叫BaseTDI.SYS的文件,這個文件的路徑位於System32\Drivers下,屬於名稱爲「瑞星我的防火牆」(ProductName: Rising PFW, PFW=Personal Firewall)的程序組件,軟件公司註冊商標爲「瑞星」(LegalTrademarks: RISING)。文件的這些英文描述信息若是您不知道,能夠百度一下。固然,沒有被筆者高亮顯示的信息(如文件時間戳、版本、校驗和等等)也是很是有用的,好比百度一下文件版本,也許您會發現該軟件已經提供了更新的解決此問題的文件。一樣,咱們使用 lm kv m hookurl* 來顯示當時內核態下包含HookUrl的文件及其詳細信息。結果以下: 圖示是一個不使人滿意的結果,由於如高亮部分所示,這個模塊未被加載,所以沒有信息被記錄。不過咱們有百度,不用急,百度一下你就知道。在搜索完HookUrl.sys以後,發現這個也是瑞星我的防火牆的文件。其實這個案例就是著名的「瑞星我的防火牆跨版本升級到2009版時引起藍屏」事件。您能夠經過關鍵字「瑞星防火牆2009升級形成藍屏」進行百度搜索。到目前爲止,瑞星官方都沒有任何針對此事件的正式答覆,雖然不是每一個用戶都出現此問題,可是很是多的用戶都報告了此問題,瑞星也不認可這個是軟件缺陷,只有官方卡卡論壇上有一個不知道是否是工做人員的人發帖要求你們遇到藍屏就上傳內存轉儲文件。說到這裏,我對瑞星又要失望了,可是經過這個可見藍屏內存轉儲文件的分析是多麼的有用! 在這裏,我還要給出兩個要獲得更多信息時可能會使用到的命令,一個是 !process 0 0 ,它能夠列出當時運行着的全部進程的技術信息;另外一個則是 !vm ,它可以顯示出當時的虛擬內存使用狀況,這對於分析系統是否耗盡了虛擬內存、換頁內存池或非換頁內存池,並結合進程列表找到可能的內存泄漏錯誤很是有用,不過已超出了本文的討論範圍。 最後,咱們來看看如下的兩種特殊狀況該如何使用WinDbg進行調試分析: 第一種狀況是系統掛起,也就是「死機」、「系統沒有響應」,在這種狀況下,系統是根本沒法自動生成內存轉儲文件的,並且您也不可能操做本地軟件來查明是什麼掛起了系統,這個時候咱們須要手動讓系統崩潰,以生成內存轉儲文件。具體作法爲,在系統掛起以前,打開註冊表編輯器並定位至 HKEY_LOCAL_MACHINE \System\CurrentControlSet\Services\i8042prt\Parameters ,在該項下面創建一個名爲 CrashOnCtrlScroll 的DWORD類型鍵值(注意大小寫),並將其設置爲1,而後從新啓動應用此更改。一旦系統掛起,就能夠經過按住右邊Ctrl鍵的同時擊ScrollLock鍵兩次來生成一箇中止代碼爲0x000000E2(MANUALLY_INITIATED_CRASH)的手動崩潰。獲得內存轉儲文件之後按照上面的方法分析。注意,此方法對插入USB口的USB鍵盤無效。(筆記本計算機鍵盤不少都是經過PS/2接口鏈接的,所以有效) 第二種狀況是進不了系統就自動崩潰,沒法提取出內存轉儲文件。這種情形以及當有特定的須要時,咱們均可以採起雙機調試的方法。咱們將發生崩潰的機器稱爲「目標機」,將用來鏈接到「目標機」進行調試的機器稱爲「調試主機」,調試主機必須安裝有WinDbg。 首先,咱們須要在兩臺機器間創建鏈接,在新版的WinDbg中,這裏一共有三種方式鏈接到目標機。第一種方式爲經過COM端口鏈接,使用零調制解調器線纜(Null-Modem),也就是COM對接線——兩個頭都是孔的RS232線;第二種是利用IEEE 1394線纜鏈接,可是這種鏈接要求兩臺機器運行相同版本的至少爲Windows XP的系統;第三種方式是使用特製的USB 2.0調試線纜鏈接,這不是普通的USB鏈接線,是一種內置硬件芯片來支持調試的線纜,並且這種方式要求目標機運行的系統至少爲Windows Vista。使用這三種鏈接方式進行雙機調試都須要在目標機上做出相應的設置調整,具體參見WinDbg幫助文件,這裏僅討論第一種鏈接方式的設置,由於這是XP及以上系統默認支持的最簡單的方式。此時咱們假設已經使用COM線纜鏈接好了兩臺機器。 其次,在調試主機上啓動WinDbg,配製好符號文件以後,咱們展開「File」菜單,選擇「Kernal Debug…」,這將會打開以下的「Kernal Debugging」對話框: 默認打開的就是COM鏈接方式的配置頁面。這裏的「Baud Rate(傳輸速率)」以及「Port(端口)」須要根據下一個步驟的操做方式來配置。 最後一步,咱們能夠啓動目標機,在引導Windows以前按下F8,在啓動菜單中選擇「調試模式」,這樣,傳輸速率被系統默認設爲19200,端口也默認被設爲COM2,所以上一步驟中應該照此設置後點擊「OK」。關於XP修改Boot.ini、Vista修改Bootcfg的方式啓用指定端口、傳輸速率的調試,請參見WinDbg幫助文件,在此再也不贅述。目標機一塊兒動Windows,位於調試主機的WinDbg就可以有信息的顯示,而後按照本文介紹的方法進行調試。另外,對於上面提到的系統掛起的狀況,也能夠採用這種雙機調試,而且有新的命令 .crash 強迫目標機在它的本地硬盤驅動器中生成一個崩潰轉儲,當系統從新引導之後就能夠提取此轉儲,固然,也可使用 .dump /m COM.dmp 命令,在調試主機WinDbg所在目錄下生成一個名叫「COM.dmp」的小內存轉儲文件(命令中的文件名能夠改爲其它的)。 其餘 電腦速度反應很卡,打開任務管理器發現裏面有很多可疑進程。 瀏覽器主頁被鎖定爲某個網址導航站,並且還沒法手動刪除 桌面上建立若干個流氓垃圾圖標,而且常常會彈出一些中獎、×××之類的釣魚欺詐網站 網遊玩家還會發現多個主流遊戲賬號(針對的遊戲有《天龍八部》、《劍網3》、《QQ地下城與勇士》、《穿越火線》《魔獸世界》等)等被盜。 編輯本段小技巧 1。按期對重要的註冊表文件進行手工備份,避免系統出錯後,未能及時替換成備份文件而產生不可挽回的錯誤。 2。儘可能避免非正常關機,減小重要文件的丟失。如.VxD .DLL文件等,硬盤出現損傷或系統引導文件丟失。 3。對普通用戶而言,只要能正常運行,沒有必要去升級顯卡、主板的BIOS和驅動程序,避免升級形成的危害。 4。按期檢查優化系統文件,運行「系統文件檢查器」進行文件丟失檢查及版本校對。檢查步驟參見前面相關介紹。 5。減小無用軟件的安裝,儘可能不用手工卸載或刪除程序,以減小非法替換文件和文件指向錯誤的出現。 6。若是不是內存特別大和其管理程序很是優秀,儘可能避免大程序的同時運行,若是你發如今聽MP3時有沙沙拉拉的聲音,基本能夠斷定該故障是由內存不足而形成的。 7。按期用殺毒軟件進行全盤掃描,清除病毒。 8 。不上一些不熟悉的網站,對於一些網站上的帶有誘惑性的圖片和一些中獎的消息,不要點擊。 9 。按期升級操做系統,軟件和驅動。 警戒溫柔殺手致使「電腦藍屏」 「溫柔殺手」病毒首先在系統中釋放病毒執行程序C:\WINDOWS\system32\kb.dll,而後再感染若干個系統關鍵文件,好比"explorer.exe","winlogon.exe"。而且,由於溫柔殺手病毒還會下載更多盜號***,致使系統被大量病毒***破壞,使得針對「溫柔殺手」病毒的修復變得較爲複雜。若被某些殺毒軟件不當處置,則會出現電腦開機藍屏。