有人知道是否有可能检测到上次启动是否在Windows中出现电源故障?
我想要检测到这一点的原因是知道何时重新扫描我经常使用我的服务在磁盘上修改的文件。
如果正常启动,我可以确定关闭顺利,并且内存文件缓冲区中的数据被刷新到磁盘。
答案 0 :(得分:5)
检测电源故障只会涵盖异常终止的一个可能原因。这样做的安全方法是在启动时创建标记文件,然后在干净关闭时将其删除。如果下次启动时标记文件存在,则表示您的服务未被彻底终止。
如果您只想查找powerloss,请阅读event log将告诉您上次关机是否意外。
答案 1 :(得分:2)
为什么不检查您的流程是否正常终止?在注册表或文件系统中放置一些特殊标记,这意味着您的进程仍在工作,并在gracefull关闭时删除它。然后在每次启动时检查它。
答案 2 :(得分:1)
作为一个简单的实现,CreateFile与FILE_FLAG_DELETE_ON_CLOSE(不可否认,FlushFileBuffers只是为了确定)不起作用吗?
如果系统干净地关闭,您的应用程序将退出并且文件句柄将被关闭,因此操作系统将删除该文件。
如果断电或世界结束,操作系统将无法关闭任何句柄或删除任何文件。因此,系统再次出现后文件仍然存在。