aboutsummaryrefslogtreecommitdiff
path: root/src/qt/winshutdownmonitor.h
diff options
context:
space:
mode:
authorPhilip Kaufmann <phil.kaufmann@t-online.de>2014-04-10 08:19:58 +0200
committerPhilip Kaufmann <phil.kaufmann@t-online.de>2014-04-15 11:57:55 +0200
commitd282c1fb64ae570caab951247e6ead4b9059043d (patch)
tree4e447f31035eeef8268a8c333e45cd2dcd01d092 /src/qt/winshutdownmonitor.h
parent74dd52a9fc13851a6ec847da985388a6bfb70be7 (diff)
downloadbitcoin-d282c1fb64ae570caab951247e6ead4b9059043d.tar.xz
[Qt] catch Windows shutdown events while client is running
- prevents unsafe shutdowns on Windows, which is known to be able to cause problems with wallet.dat - if a users ends a Windows session, this will initiate a client shutdown and show a Windows dialog, that tells the user what is going on (for Windows Vista and higher it will even show a reason for blocking the Windows session end)
Diffstat (limited to 'src/qt/winshutdownmonitor.h')
-rw-r--r--src/qt/winshutdownmonitor.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/qt/winshutdownmonitor.h b/src/qt/winshutdownmonitor.h
new file mode 100644
index 0000000000..4c76d2c816
--- /dev/null
+++ b/src/qt/winshutdownmonitor.h
@@ -0,0 +1,29 @@
+// Copyright (c) 2014 The Bitcoin developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#ifndef WINSHUTDOWNMONITOR_H
+#define WINSHUTDOWNMONITOR_H
+
+#ifdef WIN32
+#include <QByteArray>
+#include <QString>
+
+#if QT_VERSION >= 0x050000
+#include <windef.h> // for HWND
+
+#include <QAbstractNativeEventFilter>
+
+class WinShutdownMonitor : public QAbstractNativeEventFilter
+{
+public:
+ /** Implements QAbstractNativeEventFilter interface for processing Windows messages */
+ bool nativeEventFilter(const QByteArray &eventType, void *pMessage, long *pnResult);
+
+ /** Register the reason for blocking shutdown on Windows to allow clean client exit */
+ static void registerShutdownBlockReason(const QString& strReason, const HWND& mainWinId);
+};
+#endif
+#endif
+
+#endif // WINSHUTDOWNMONITOR_H