在崩溃或电源故障后重新启动Windows时检测

ROA*_*OAR 6 c++ windows winapi

有谁知道是否有可能检测到最后一次启动是否在Windows之前出现电源故障?

我想要检测到这一点的原因是知道何时重新扫描我经常使用我的服务在磁盘上修改的文件.

如果正常启动,我可以确定关闭顺利,并且内存文件缓冲区中的数据被刷新到磁盘.

Eri*_*rik 5

检测电力故障只会涵盖异常终止的一个可能原因.这样做的安全方法是在启动时创建标记文件,然后在干净关闭时将其删除.如果下次启动时标记文件存在,则表示您的服务未完全终止.

如果您只想查找powerloss,读取事件日志将告诉您上次关闭是否意外.


Dam*_*mon 1

作为一个简单的实现,带有 FILE_FLAG_DELETE_ON_CLOSE 的 CreateFile(为了确定起见,后面紧跟着 FlushFileBuffers)会不起作用吗?

如果系统完全关闭,您的应用程序将退出并且文件句柄将关闭,因此操作系统将删除该文件。

如果断电或世界末日,操作系统将没有机会关闭任何句柄或删除任何文件。这样,系统再次启动后,该文件仍然存在。