2011-03-02 19 views
6

是否有人知道是否有可能檢測到最近一次啓動是否在Windows電源故障之前?當Windows在系統崩潰或電源故障後重新啓動時檢測到

我想檢測到這個問題的原因是知道何時重新掃描我經常使用我的服務在磁盤上修改的文件。

如果有正常的啓動,我可以確定關閉順利,內存文件緩衝區中的數據被刷新到磁盤。

回答

1

作爲一個簡單的實現,將CreateFile與FILE_FLAG_DELETE_ON_CLOSE(不知道後面跟着FlushFileBuffers只是爲了確定)不起作用?

如果系統關閉乾淨,您的應用程序將退出並且文件句柄將被關閉,因此操作系統將刪除該文件。

如果電源故障或世界結束,操作系統不會有機會關閉任何句柄或刪除任何文件。因此,系統再次出現後,該文件仍然存在。

+0

這也適用於Linux,非常有趣! –

5

檢測到powerfailure只會涵蓋異常終止的一個可能的原因。這樣做的安全方法是在啓動時創建標記文件,然後在乾淨關閉時將其刪除。如果標記文件在下次啓動時存在,則您知道您的服務未完全終止。

如果您只想查找powerloss,請閱讀event log將會告訴您上次關機是否意外。

2

爲什麼不檢查你的進程是否優雅地終止?在註冊表或文件系統中放置一些特殊的標記,這將意味着您的進程仍在工作並在gracefull關閉時將其刪除。然後在每次啓動時檢查它。