Bitcoin Core
31.0.0
P2P Digital Currency
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
Ticks
constexpr auto Ticks(Dur2 d)
Helper to count the seconds of a duration/time_point.
Definition
time.h:73
winshutdownmonitor.h
Generated on Thu Apr 16 2026 09:42:38 for Bitcoin Core by
1.10.0