=====================================================================================================

使用Windows操作系統的人有時會遇到這樣的錯誤信息:「0X????????指令引用的0x00000000記憶體,

該記憶體不能written」,然後應用程式被關閉。

如果去請教一些「高手」,得到的回答往往是「Windows就是這樣不穩定」之類的義憤和不屑。其實,這個錯誤並不

一定是Windows不穩定造成的。本文就來簡單分析這種錯誤的一般原因。

 

一、應用程式沒有檢查記憶體分配失敗

程序需要一塊記憶體用以儲存資料時,就需要使用操作系統提供的「功能函數」來申請,如果記憶體分配成功,函

數就會將所新開闢的記憶體區位址返回給應用程式,應用程式就可以通過這個位址使用這塊記憶體。這就是「動態

記憶體分配」,記憶體位址也就是編程中的「游標」。記憶體不是永遠都招之即來、用之不盡的,有時候記憶體分

配也會失敗。當分配失敗時系統函數會返回一個0值,這時返回值「0」已不表示新啟用的游標,而是系統向應用程

式發出的一個通知,告知出現了錯誤。作為應用程式,在每一次申請記憶體後都應該檢查返回值是否為0,如果是,

則意味著出現了故障,應該採取一些措施挽救,這就增強了程序的「健壯性」。若應用程式沒有檢查這個錯誤,它

就會按照「思維慣性」認為這個值是給它分配的可用游標,繼續在之後的執行中使用這塊記憶體。真正的0位址記憶

體區儲存的是電腦系統中最重要的「中斷描述符表」,絕對不允許應用程式使用。在沒有保護機制的操作系統下(如

DOS),寫資料到這個位址會導致立即當機,而在健壯的操作系統中,如Windows等,

這個操作會馬上被系統的保護機制捕獲,其結果就是由操作系統強行關閉出錯的應用程式,以防止其錯誤擴大。這

時候,就會出現上述的「寫記憶體」錯誤,並指出被引用的記憶體位址為「0x00000000」。記憶體分配失敗故障的

原因很多,記憶體不夠、系統函數的版本不匹配等都可能有影響。因此,這種分配失敗多見於操作系統使用很長時

間後,安裝了多種應用程式(包括無意中「安裝」的病毒程序),更改了大量的系統參數和系統檔案之後。

 

二、應用程式由於自身BUG引用了不正常的記憶體游標

在使用動態分配的應用程式中,有時會有這樣的情況出現:程序試突讀寫一塊「應該可用」的記憶體,但不知為什

麼,這個預料中可用的游標已經失效了。有可能是「忘記了」向操作系統要求分配,也可能是程序自己在某個時候

已經註銷了這塊記憶體而「沒有留意」等等。註銷了的記憶體被系統回收,其訪問權已經不屬於該應用程式,因此

讀寫操作也同樣會觸發系統的保護機制,企圖「違法」的程序唯一的下場就是被操作終止執行,回收全部資源。電

腦世界的法律還是要比人類有效和嚴厲得多啊!像這樣的情況都屬於程序自身的BUG,你往往可在特定的操作順序下

重現錯誤。無效游標不一定總是0,因此錯誤提示中的記憶體位址也不一定為「0x00000000」,而是其他隨機數字。

如果系統經常有所提到的錯誤提示,下面的建議可能會有說明 :

 

 

1.檢視系統中是否有木馬或病毒。這類程序為了控制系統往往不負責任地修改系統,從而導致操作系統異常。平常

應加強信息安全意識,對來源不明的可執行程序絕不好奇。

2.更新操作系統,讓操作系統的安裝程序重新拷貝正確版本的系統檔案、修正系統參數。有時候操作系統本身也會

有BUG,要注意安裝官方發行的昇級程序。

3.試用新版本的應用程式。

 

Mode:將虛擬記憶體撤換

答案:目前為止是肯定的,也就是如在下次冷天到來時亦沒再發生,就代表這是主因追加:

如果你用 Ghost 恢復 OS 後建議 刪除WINDOWS\PREFETCH目錄下所有*.PF文件,因為需讓windows重新收集程式的物

理位址有些應用程式錯誤: "0x7cd64998" 指令參考的 "0x14c96730" 記憶體。該記憶體不能為 "read"推論是此原

源由:

Win XP的「預讀取」技術

這種最佳化技術也被用到了應用軟體上,系統對每一個應用軟體的前幾次啟動情況進行分析,然後新增一個描述套

用需求的虛擬「記憶體映像」,並把這些信息儲存到WINDOWS\PREFETCH資料夾。一旦建立了映像,應用軟體的裝入

速度大大提高。XP的預讀取資料儲存了最近8次系統啟動或應用軟體啟動的信息。

後敘:目前此方法亦是獨步網路的(其碼自己針對此問題查了許久),也是常見問題,原本幾乎每天睡前關閉軟體時一

些程式都會發生...read...

現在就沒發生了

 

=====================================================================================================

[防毒防駭]測試你家的防毒軟體有沒有認真工作

 

請在附屬應用程式打開一個新的「記事本」,將下面一行文本拷貝進去

 

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

 

注意不要複製到空格

 

保存文件,保存在哪要記好,最好存在你指定的資料夾

文件類型選擇「所有文件」,文件名為「EICAR.COM」

 

拷貝成功後,產生的文件應該有69或70個字節長。

現在你可以用你的殺毒軟件來查這個文件,

如果報告發現病毒(實際上這個文件只是測試用的,不是病毒),

則表示你的反病毒軟件已經成功地安裝到你的電腦上,

並且已經有效地維護著你的計算機。

 

強調:這個文件不是病毒!

在檢測完畢後請您刪除這個文件,以免以後給您造成誤解。

=====================================================================================================

 

NT核心的操作系統採用的是分層結構(層又稱為模式), 主要有使用者層(User Mode)和核心層(Kernel Mode), 我

們可以通過下面這個形象的比喻來理解Windows的執行規範和"藍底白字畫面"起因.

┌────────────────────────────┐

│ 產品製造工廠: 整個電腦(包含操作系統、硬體和軟體) │

│ 廠 領 導: 核心層 │

│ 生 產 小 組: 使用者層(軟體、驅動程式) │

│ 值 班 員: Dr.Watson │

│ 保 衛 員: KeDugCheck │

└────────────────────────────┘

平時產品製造廠執行得有序而高效, 每個 生產小組加班加點製造各種用途的產品, 工廠裡有個極為嚴格的規定,

那就是不管要用什麼裝配零件, 都必須經過直接控制所有零件的廠領導(具有高特許級別, 可以直接訪問所歐硬體

和記憶體)的批准, 之後才能到倉庫中提取相應零件, 而生產小組只負責生產(只擁有較低權限, 不能直接訪問硬

體和有限地利用記憶體).

有一天, A生產小組沒有經過廠領導批准, 偷偷跑到倉庫裡面想拿一個裝配零件, 但馬上被年年被評為先進的值班

員Dr.Watson發現了, 於是Dr.Watson理解通知廠領導, 這個生產小組的工作馬上被停止, 而且還在廠宣傳欄上貼

出一個告示:XXX生產小組出現了錯誤, 廠領導決定馬上將其關閉、整頓, 並會產生記錄在案, 以觀後效.

但A生產小組的錯誤似乎沒有引起大家的注意, 一天, D生產小組居然闖入倉庫哄搶裝配零件, 為了防止零件資源失

控, 產生更嚴重的混亂, 廠領導立即決定停止整個工廠的工作, 並命令保衛科對所有生長小組進行全面檢查, 保衛

科在檢查後為廠領導提交了一份用藍色紙寫的報告, 這個報告主要分成三部分:故障資訊、建議操作、調整端口資訊.

 

一、藍底白字畫面含義

 

1.故障檢查資訊

***STOP 0x0000001E(0xC0000005,0xFDE38AF9,0x0000001,0x7E8B0EB4)

KMODE_EXCEPTION_NOT_HANDLED ***

其中錯誤的第一部分是停止碼(Stop Code)也就是STOP 0x0000001E, 用於識別已發生錯誤的類型, 錯誤第二部分是

被括號括起來的四個數字集, 表示隨機的開發人員定義的參數(這個參數對於普通使用者根本無法理解, 只有驅動程

式編寫者或者微軟操作系統的開發人員才懂). 第三部分是錯誤名. 資訊第一行通常用來識別生產錯誤的驅動程式或

者設備. 這種資訊多數很簡潔, 但停止碼可以作為搜尋項在微軟知識庫和其他技術資料中使用.

 

2.建議操作

"藍底白字畫面"第二部分是建議使用者進行的操作資訊. 有時, 建議的操作僅僅是一般性的建議(比如: 到銷售商網

站查找BIOS的更新等); 有時, 也就是顯示一條與當前問題相關的提示. 一般來說, 惟一的建議就是重新啟動.

 

3.調整端口告訴使用者記憶體轉儲映像是否寫到磁碟商了, 使用記憶體轉儲映像可以確定發生問題的性質, 還會告

訴使用者調整資訊是否被傳到另一台電腦商, 以及使用了什麼端口完成這次通訊. 不過, 這裡的資訊對於普通使用

者來說, 沒有什麼意義.

 

有時保衛科可以順利的查到是哪個生產小組的問題, 會在第一部分明確報告是哪個檔案犯的錯, 但常常它也只能查

個大概範圍, 而無法明確指明問題所在. 由於工廠全面被迫停止, 只有重新整頓開工, 有時, 那個生產小組會意識

到錯誤 , 不再重犯. 但有時仍然會試圖哄搶零件, 於是廠領導不得不重複停工決定(不能啟動並顯示"藍底白字畫

面"資訊, 或在進行相同操作時再次出現"藍底白字畫面").

 

 

二、藍底白字畫面的解決方案

 

出現"藍底白字畫面"後的九個一般解決方案

 

Windows 2K/XP"藍底白字畫面"資訊非常多, 無法在一篇文章中全面講解, 但他們產生的原因往往集中在不相容的

硬體和驅動程式、有問題的軟體、病毒等, 因此首先為大家提供了一些一般的解決方案, 在遇到"藍底白字畫面"

錯誤時, 應先對照這些方案進行排除

 

1.重新啟動

有時只是某個程式或驅動程式一時犯錯, 重新啟動後他們會改過自新.(注意:此時參見7.查詢停止碼)

 

2.新硬體

首先, 應該檢查新硬體是否插牢, 這個被許多人忽視的問題往往會引發許多莫名其妙的故障. 如果確認沒有問題,

將其拔下, 然後換個插槽試試, 並安裝最新的驅動程式. 同時還應對照微軟網站的硬體相容類別檢查一下硬體是

否與操作系統相容. 如果你的硬體沒有在表中, 那麼就得到硬體廠商網站進行查詢, 或者撥打他們的咨詢電話.

 

最新的 Windows XP 硬體相容性清單:

http://support.microsoft.com/default.aspx?scid=kb;zh-tw;314062

最新的 Windows 2000/Windows NT 硬體相容清單:

http://support.microsoft.com/default.aspx?scid=kb;zh-tw;131303

 

3.新驅動和新服務

如果剛安裝完某個硬體的新驅動, 或安裝了某個軟體, 而它又在系統服務中新增了相應項目(比如:殺毒軟體、CPU

降溫軟體、防火牆軟體等), 在重新啟動或使用中出現了"藍底白字畫面"故障, 請到安全模式來反安裝或禁用它們.

 

4.檢查病毒

比如衝擊波和振蕩波等病毒有時會導致Windows"藍底白字畫面"死機, 因此查殺病毒必不可少. 同時一些木馬間諜

軟體也會引發"藍底白字畫面", 所以最好再用相關工具進行掃瞄檢查.

 

5.檢查BIOS和硬體相容性

對於新裝的電腦經常出現"藍底白字畫面"問題, 應該檢查並升級BIOS到最新版本, 同時關閉其中的記憶體相關項,

比如:CACHE和映射. 另外, 還應該對照微軟的硬體相容列表檢查自己的硬體. 還有就是, 如果主板BIOS無法支持

大容量硬盤也會導致"藍底白字畫面", 需要對其進行升級.

┌────────────────────────────┐

│小提示: │

│ BIOS的CACHE和映射項 │

│ Video BIOS Shadowing (VGA CARD BIOS映射) │

│ Shadowing address ranges(映射地址列) │

│ System BIOS Cacheable(系統BIOS緩衝) │

│ Video BIOS Cacheable(視頻BIOS緩衝) │

│ Video RAM Cacheable(視頻記憶體緩衝) │

└────────────────────────────┘

 

6.檢查系統日誌

在開始-->選單中輸入:EventVwr.msc, "ENTER"出現"事件查看器", 注意檢查其中的"系統日誌"和"應用程式日誌"

中表明"錯誤"的項.

 

7.查詢停止碼 (STOP CODE)

把"藍底白字畫面"中密密麻麻的文字記下來, 接著到其他電腦中上網,

進入微軟幫助與支持網站 : http://support.microsoft.com/ , 在左上角的"搜尋字串"中輸入停止碼, 如果搜尋

結果沒有適合資訊, 可以選擇"英文知識庫"在搜尋一遍. 一般情況下, 會在這裡找到有用的解決案例. 另外,

在baidu、Google等搜尋引擎中使用"藍底白字畫面"的停止碼或者後面的說明文字為關鍵詞搜尋, 往往也會有以外

的收穫.

 

 

8.最後一次正確設定

一般情況下, "藍底白字畫面"都出現於更新了硬體驅動或新加硬體並安裝其驅動後,

這時Windows 2K/XP提供的"最後一次正確設定"就是解決"藍底白字畫面"的快捷方式. 重新啟動系統, 在出現啟動

選單時按下F8鍵就會出現高級啟動選項選單, 接著選擇"最後一次正確設定".

 

9.安裝最新的系統更新和Service Pack

有些"藍底白字畫面"是Windows本身存在缺陷造成的, 應此可通過安裝最新的系統更新和Service Pack來解決.

 

=====================================================================================================

創作者介紹

豐誠電腦急救站

kkmanlee 發表在 痞客邦 PIXNET 留言(0) 人氣()