Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 检测Windows在崩溃或电源故障后何时重新启动_C++_Windows_Winapi - Fatal编程技术网

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

C++ 检测Windows在崩溃或电源故障后何时重新启动,c++,windows,winapi,C++,Windows,Winapi,有人知道是否有可能检测到上次启动之前Windows中是否出现电源故障 我想检测这种情况的原因是想知道何时重新扫描我经常使用我的服务在磁盘上修改的文件 如果有一个正常的启动,我可以非常肯定的是关闭顺利进行,并在内存文件缓冲区中的数据刷新到磁盘 检测电源故障将仅涵盖异常终止的一个可能原因。这样做的安全方法是在启动时创建一个标记文件,然后在完全关闭时将其删除。如果标记文件在下一次启动时存在,您就知道您的服务没有完全终止 如果您只想查找掉电情况,阅读将告诉您上次关机是否意外。为什么不检查进程是否正常终止

有人知道是否有可能检测到上次启动之前Windows中是否出现电源故障

我想检测这种情况的原因是想知道何时重新扫描我经常使用我的服务在磁盘上修改的文件


如果有一个正常的启动,我可以非常肯定的是关闭顺利进行,并在内存文件缓冲区中的数据刷新到磁盘

检测电源故障将仅涵盖异常终止的一个可能原因。这样做的安全方法是在启动时创建一个标记文件,然后在完全关闭时将其删除。如果标记文件在下一次启动时存在,您就知道您的服务没有完全终止


如果您只想查找掉电情况,阅读将告诉您上次关机是否意外。

为什么不检查进程是否正常终止?在注册表或文件系统中放置一些特殊标记,这意味着进程仍在工作,并在正常关机时将其删除。然后在每次启动时检查它。

作为一个简单的实现,在关闭时使用FILE\u FLAG\u DELETE\u创建文件(后面紧跟着FlushFileBuffers)会不会不起作用

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


如果停电或世界末日,操作系统将无法关闭任何句柄或删除任何文件。因此,在系统再次启动后,该文件仍将存在。

如果在程序退出后、删除标记文件后,但在其他文件的磁盘缓存完全刷新之前断电,我想这可能会失败。