我需要檢測由不同操作系統中的BSOD引起的重新啓動。可以追蹤這種情況嗎?內存轉儲足夠嗎? Windows 7顯示一個很好的對話框,系統已經從一個嚴重錯誤中恢復 - 它是如何知道的?在重新啓動到另一個操作系統後,可以可靠地檢測到BSOD?
回答
搜索互聯網似乎Windows 嘗試生成C:/Windows/Minidump
轉儲文件。你可以在那裏尋找文件。請注意,我說嘗試,因爲BSOD可能非常致命,無法創建轉儲文件(例如,在硬盤驅動器崩潰期間,出於顯而易見的原因)。
您可以在文件上查找創建日期以檢測最新的日期。
這顯然要求你可以在另一個操作系統中掛載Windows文件系統,但它似乎是一個體面的解決方案。
有趣的是,即使BSOD是由硬盤驅動器消失造成的(我的主板/ SATA控制器和早期的SATA3 SSD進入參數定期,導致主板轉儲驅動器,BSOD,它*嘗試*生成轉儲,並要求冷啓動)。 Windows會在下次啓動時看到崩潰,儘管我從未查找轉儲。 – ssube 2012-02-14 15:35:59
Windows提供了一個接口來註冊一個callback on bugchecks因此,您可能會註冊一個函數來執行特定於錯誤檢查的事情 - 創建一個簡單的文件或類似的東西,然後在這個其他操作系統中,您可能會檢查此文件是否存在 - 如果它確實那麼你的錯誤檢查回調就會被執行。錯誤檢查已經發生?當然,你需要考慮的是,你的函數的調用是在IRQL爲HIGH_LEVEL的情況下發出的,所以你必須看到什麼限制適用,這也是在Windows驅動程序開發領域。
問題說「__after__重新啓動到__another__ OS」。該操作系統可能根本不是Windows,並且在BSOD之後發起回調,實屬徒勞。 – orlp 2012-02-14 15:33:07
如果在這個回調中,他可以創建一個文件或者一個持久的東西。所以其他操作系統可以檢查這個「東西」是否存在?雖然我似乎無法找到充分的理由想要這樣做 – LordDoskias 2012-02-14 15:36:50
我已經看過了BugCheckCallback,但我還沒有任何想法,如果它被允許寫入磁盤 - IOW,我不明白是什麼限於http://www.osronline.com/ddkx/kmarch/other_1anb.htm。我很滿意能夠寫入磁盤上的預定義扇區,但文件顯然會更好。 – Baczek 2012-02-14 16:45:26
您可以編寫一個簡單的Windows服務,將狀態信息寫入其他操作系統可以查找的地方。例如,這可以是MBR,專用分區或USB記憶棒之後的未使用扇區之一。
當服務啓動時,您會寫一條消息來指示Windows已啓動並正在運行,可能帶有時間戳。你可能經常更新它,甚至可以包含狀態信息,例如CPU負載或驅動程序加載/卸載事件,如果這很有用的話。當服務檢測到系統正在關閉時,它會寫入一條消息說明。當您的其他操作系統查看此信息時,如果最後一條消息沒有說系統有意關閉,那麼您可以斷定Windows崩潰了。 Windows做了類似的事情,以便引導裝載程序可以提供在安全模式下引導系統。
顯然,這不能讓你區分BSOD和其他類型的崩潰,如果系統掉電,你會得到誤報。如果在系統關機過程中發生BSOD,您也無法檢測到BSOD。這些警告是否重要取決於你沒有告訴我們的細節。
默認情況下,Windows會在系統崩潰時將事件記錄到事件日誌中。 (請參閱下面的評論)。
我相信在系統重新啓動到Windows之後會發生這種情況,即在這種情況下太遲而無法使用。即使事件已經寫好,除非您知道解析來自其他操作系統的Windows事件日誌的方法,否則它將無濟於事。 – 2012-02-22 22:10:11
Hummm,在kernelmode中寫入日誌的最簡單方法是通過EventLog的內核API。但是你可能是對的,我不確定內核是否在重啓後寫入事件。解析Windows事件脫機是可能的,解析二進制數據[MSDN](http://msdn.microsoft.com/en-us/library/windows/desktop/bb309026%28v=vs.85%29.aspx)或Win7中的XML 。 – zapador 2012-02-23 12:01:46
不是正常的方式,因爲crashdump實際上是通過執行BSoD的代碼寫入頁面文件,然後在重新啓動後,Windows將其寫入最終轉儲文件。
- 1. 鼠標檢測,操作系統啓動
- 2. jquery瀏覽器和操作系統檢測,可以檢測到android和iOs
- 3. 我可以雙啓動兩個iPhone操作系統嗎?
- 4. 將rpm從一個操作系統複製到另一個操作系統
- 5. 是否可以可靠地檢測到我正在使用哪個WiFi網絡?
- 6. 啓動另一個操作系統,而在樹莓派rasbian
- 7. 是否可以檢測Haxe中的當前操作系統?
- 8. 是否有可能重新啓動在Docker容器內運行的操作系統(linux)? (重新啓動GPU)
- 9. 是否可以將Git SSHKey從一個系統轉移到另一個系統
- 10. 在Windows桌面小工具中可靠地檢測操作系統體系結構
- 11. 使用Javascript檢測操作系統的可靠方法是什麼?
- 12. 我可以做一個python包依靠不同的包由操作系統?
- 13. 檢測操作系統
- 14. CodeIgniter移動操作系統檢測
- 15. 64位操作系統環境變量,無需重新啓動即可識別
- 16. 如何重新啓動Ubuntu系統後重新啓動devstack?
- 17. 我可以在多個操作系統中的應用程序啓動C++?
- 18. 我在哪裏可以得到一個紅寶石1.8.6的CentOS操作系統
- 19. 我在哪裏可以找到Linux操作系統的第一個版本?
- 20. 在Python中可靠地檢測Windows
- 21. 在shell腳本崩潰後可靠地重新啓動java進程
- 22. 在Android系統中可靠地暫停媒體播放系統
- 23. 是否有可能上傳一個文件,可以自動運行並在Linux系統上重新啓動
- 24. jQuery - 檢測操作系統和操作系統版本
- 25. Zend_Measure可以檢測公制系統嗎?
- 26. 沒有在Ubuntu操作系統中找到Gulp-plumber,但在雙啓動的Windows操作系統中找到
- 27. 在wix中執行自定義操作後重新啓動系統
- 28. 我怎麼可靠地插入一個表格,然後在多用戶系統中檢索自動編號
- 29. 在Clojure中檢測操作系統
- 30. 在Windows C++或C#中,您可以詢問操作系統是否正在關閉/重新啓動/註銷
你爲什麼不給更多的信息。什麼導致了BSOD?你看看Windows 7的轉儲嗎?它是哪個操作系統?你採取了什麼確切的步驟來產生這些結果? ... – tenfour 2012-02-14 15:42:55
BSODs是由驅動程序引起的,我希望更具體,但我不被允許。 – Baczek 2012-02-14 17:06:51