Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
qt
winshutdownmonitor.cpp
Go to the documentation of this file.
1
// Copyright (c) 2014-present The Bitcoin Core developers
2
// Distributed under the MIT software license, see the accompanying
3
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
4
5
#include <
qt/winshutdownmonitor.h
>
6
7
#if defined(Q_OS_WIN)
8
9
#include <windows.h>
10
11
#include <QDebug>
12
13
// If we don't want a message to be processed by Qt, return true and set result to
14
// the value that the window procedure should return. Otherwise return false.
15
bool
WinShutdownMonitor::nativeEventFilter(
const
QByteArray &eventType,
void
*pMessage, qintptr *pnResult)
16
{
17
Q_UNUSED(eventType);
18
19
MSG *pMsg =
static_cast<
MSG *
>
(pMessage);
20
21
switch
(pMsg->message)
22
{
23
case
WM_QUERYENDSESSION:
24
{
25
// Initiate a client shutdown after receiving a WM_QUERYENDSESSION and block
26
// Windows session end until we have finished client shutdown.
27
m_shutdown_fn();
28
*pnResult = FALSE;
29
return
true
;
30
}
31
32
case
WM_ENDSESSION:
33
{
34
*pnResult = FALSE;
35
return
true
;
36
}
37
}
38
39
return
false
;
40
}
41
42
void
WinShutdownMonitor::registerShutdownBlockReason(
const
QString& strReason,
const
HWND& mainWinId)
43
{
44
typedef
BOOL (WINAPI *PSHUTDOWNBRCREATE)(HWND, LPCWSTR);
45
PSHUTDOWNBRCREATE shutdownBRCreate = (PSHUTDOWNBRCREATE)(
void
*)GetProcAddress(GetModuleHandleA(
"User32.dll"
),
"ShutdownBlockReasonCreate"
);
46
if
(shutdownBRCreate ==
nullptr
) {
47
qWarning() <<
"registerShutdownBlockReason: GetProcAddress for ShutdownBlockReasonCreate failed"
;
48
return
;
49
}
50
51
if
(shutdownBRCreate(mainWinId, strReason.toStdWString().c_str()))
52
qInfo() <<
"registerShutdownBlockReason: Successfully registered: "
+ strReason;
53
else
54
qWarning() <<
"registerShutdownBlockReason: Failed to register: "
+ strReason;
55
}
56
#endif
winshutdownmonitor.h
Generated on
for Bitcoin Core by
1.17.0