2017-01-31 86 views
1

我有一個Windows 7嵌入式設備,經常會像這樣循環上電:本地應用程序將一個條目寫入應用程序事件日誌,幾秒鐘後它會命令自定義電源循環切換電源。乾淨的Windows關機無法完成。設備啓動後,我檢查Windows事件日誌並注意缺少最後一項。如何將Windows事件日誌刷新到磁盤?

是否有某種方法將Windows事件日誌刷新到磁盤,以便我不會錯過最後一項?該應用程序是用C++編寫的。

感謝, 阿德南

+1

爲什麼你認爲它很重要?你試圖解決什麼*實際*問題?操作系統本身負責這一點,並確保事件始終保留**假設**您使用了正確的功能。順便提一下你的代碼 –

+0

如果你的應用程序導致異常關機,你應該修復應用程序。這不僅僅是您的事件信息可能會丟失 - 您還會丟失數據,可能會導致未保存或已保存一半的文件損壞。 –

+0

「實際」問題與硬件有關。系統包含定製板卡,這些板卡發生故障並需要重新通電才能解決問題。正確的解決方案是修復硬件,但這超出了我的範圍。相同的電源也爲Windows嵌入式SBC提供電源。 Windows ReportEvent api函數用於寫入事件日誌,並將COM端口消息發送到電源以告訴它循環供電。 – adnan

回答

1

所以最好的辦法是解決它的硬件有硬件問題。但繼續前進。

使用BIOS,以確保計算機電源循環

你有一個硬件工具來執行重啓後總是啓動。你可以重新配置,這樣,而不是做在計算機上運行的硬實力週期,您:

  • 通知硬件電源週期工具,
  • 執行有序關機,然後
  • 電源在電腦上再次使用硬件電源開關?

通常有一個bios設置可以讓你指定重新開機後的動作,例如,

  • 關閉電腦,
  • 打開它,
  • 打開它,只有當它是當電源被丟失。

如果你可以做到這一點,那麼你仍然可以做一個有序的關機,並等待它重新開機之前完成。

軟件解決方案:關閉磁盤寫入緩存

這不完全清楚是什麼原因造成您的問題,但下面的內容可能相關。

最有可能的是,這是由磁盤控制器硬件或操作系統進行磁盤寫入緩存的結果。

您可以通過磁盤管理工具來關閉這個功能:

軟件解決方案:刷新磁盤編程

或者,你可以以編程方式刷新磁盤緩存。這個工具可以幫助:

或者確實與WMI和PowerShell:

+0

本,謝謝你的好建議。我嘗試使用SysInternals的同步實用程序手動刷新磁盤緩存,正如你所建議的,但沒有成功。我將嘗試禁用磁盤寫入緩存,但我不確定這將是長期性能優秀的解決方案。 – adnan

+0

它肯定不會有好的表現,你就在那裏。但這些都不是很好的解決方案。如果你有一個很好的解決方案,你應該使用它:-)如果不是,我希望這些幫助。 – Ben