]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/boost/winapi/waitable_timer.hpp
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / boost / winapi / waitable_timer.hpp
CommitLineData
b32b8144
FG
1/*
2 * Copyright 2013 Andrey Semashev
3 *
4 * Distributed under the Boost Software License, Version 1.0.
5 * See http://www.boost.org/LICENSE_1_0.txt
6 */
7c673cae 7
b32b8144
FG
8#ifndef BOOST_WINAPI_WAITABLE_TIMER_HPP_INCLUDED_
9#define BOOST_WINAPI_WAITABLE_TIMER_HPP_INCLUDED_
7c673cae 10
b32b8144 11#include <boost/winapi/basic_types.hpp>
7c673cae
FG
12
13#ifdef BOOST_HAS_PRAGMA_ONCE
14#pragma once
15#endif
16
b32b8144
FG
17#if BOOST_WINAPI_PARTITION_APP_SYSTEM
18
7c673cae
FG
19#if !defined( BOOST_USE_WINDOWS_H )
20extern "C" {
b32b8144 21typedef boost::winapi::VOID_
92f5a8d4 22(BOOST_WINAPI_WINAPI_CC *PTIMERAPCROUTINE)(
b32b8144
FG
23 boost::winapi::LPVOID_ lpArgToCompletionRoutine,
24 boost::winapi::DWORD_ dwTimerLowValue,
25 boost::winapi::DWORD_ dwTimerHighValue);
7c673cae
FG
26
27#if !defined( BOOST_NO_ANSI_APIS )
92f5a8d4 28BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae
FG
29CreateWaitableTimerA(
30 ::_SECURITY_ATTRIBUTES* lpTimerAttributes,
b32b8144
FG
31 boost::winapi::BOOL_ bManualReset,
32 boost::winapi::LPCSTR_ lpTimerName);
7c673cae 33
92f5a8d4 34BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae 35OpenWaitableTimerA(
b32b8144
FG
36 boost::winapi::DWORD_ dwDesiredAccess,
37 boost::winapi::BOOL_ bInheritHandle,
38 boost::winapi::LPCSTR_ lpTimerName);
7c673cae
FG
39#endif
40
92f5a8d4 41BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae
FG
42CreateWaitableTimerW(
43 ::_SECURITY_ATTRIBUTES* lpTimerAttributes,
b32b8144
FG
44 boost::winapi::BOOL_ bManualReset,
45 boost::winapi::LPCWSTR_ lpTimerName);
7c673cae 46
92f5a8d4 47BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
7c673cae 48OpenWaitableTimerW(
b32b8144
FG
49 boost::winapi::DWORD_ dwDesiredAccess,
50 boost::winapi::BOOL_ bInheritHandle,
51 boost::winapi::LPCWSTR_ lpTimerName);
7c673cae 52
92f5a8d4 53BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
7c673cae 54SetWaitableTimer(
b32b8144 55 boost::winapi::HANDLE_ hTimer,
7c673cae 56 const ::_LARGE_INTEGER* lpDueTime,
b32b8144 57 boost::winapi::LONG_ lPeriod,
7c673cae 58 PTIMERAPCROUTINE pfnCompletionRoutine,
b32b8144
FG
59 boost::winapi::LPVOID_ lpArgToCompletionRoutine,
60 boost::winapi::BOOL_ fResume);
7c673cae 61
92f5a8d4 62BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
b32b8144
FG
63CancelWaitableTimer(boost::winapi::HANDLE_ hTimer);
64} // extern "C"
7c673cae
FG
65#endif
66
67namespace boost {
7c673cae
FG
68namespace winapi {
69
70typedef ::PTIMERAPCROUTINE PTIMERAPCROUTINE_;
71
72#if !defined( BOOST_NO_ANSI_APIS )
73using ::OpenWaitableTimerA;
74#endif
75using ::OpenWaitableTimerW;
76using ::CancelWaitableTimer;
77
78#if defined( BOOST_USE_WINDOWS_H )
79
92f5a8d4
TL
80BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_ALL_ACCESS_ = TIMER_ALL_ACCESS;
81BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_MODIFY_STATE_ = TIMER_MODIFY_STATE;
82BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_QUERY_STATE_ = TIMER_QUERY_STATE;
7c673cae
FG
83
84#else // defined( BOOST_USE_WINDOWS_H )
85
92f5a8d4
TL
86BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_ALL_ACCESS_ = 0x001F0003;
87BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_MODIFY_STATE_ = 0x00000002;
88BOOST_CONSTEXPR_OR_CONST DWORD_ TIMER_QUERY_STATE_ = 0x00000001;
7c673cae
FG
89
90#endif // defined( BOOST_USE_WINDOWS_H )
91
92f5a8d4
TL
92BOOST_CONSTEXPR_OR_CONST DWORD_ timer_all_access = TIMER_ALL_ACCESS_;
93BOOST_CONSTEXPR_OR_CONST DWORD_ timer_modify_state = TIMER_MODIFY_STATE_;
94BOOST_CONSTEXPR_OR_CONST DWORD_ timer_query_state = TIMER_QUERY_STATE_;
7c673cae
FG
95
96
97#if !defined( BOOST_NO_ANSI_APIS )
98BOOST_FORCEINLINE HANDLE_ CreateWaitableTimerA(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCSTR_ lpTimerName)
99{
100 return ::CreateWaitableTimerA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
101}
102#endif
103
104BOOST_FORCEINLINE HANDLE_ CreateWaitableTimerW(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCWSTR_ lpTimerName)
105{
106 return ::CreateWaitableTimerW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
107}
108
109BOOST_FORCEINLINE BOOL_ SetWaitableTimer(
110 HANDLE_ hTimer,
111 const LARGE_INTEGER_* lpDueTime,
112 LONG_ lPeriod,
113 PTIMERAPCROUTINE_ pfnCompletionRoutine,
114 LPVOID_ lpArgToCompletionRoutine,
115 BOOL_ fResume)
116{
117 return ::SetWaitableTimer(hTimer, reinterpret_cast< const ::_LARGE_INTEGER* >(lpDueTime), lPeriod, pfnCompletionRoutine, lpArgToCompletionRoutine, fResume);
118}
119
120#if !defined( BOOST_NO_ANSI_APIS )
121BOOST_FORCEINLINE HANDLE_ create_waitable_timer(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCSTR_ lpTimerName)
122{
123 return ::CreateWaitableTimerA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
124}
125#endif
126
127BOOST_FORCEINLINE HANDLE_ create_waitable_timer(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset, LPCWSTR_ lpTimerName)
128{
129 return ::CreateWaitableTimerW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, lpTimerName);
130}
131
132BOOST_FORCEINLINE HANDLE_ create_anonymous_waitable_timer(PSECURITY_ATTRIBUTES_ lpTimerAttributes, BOOL_ bManualReset)
133{
134#ifdef BOOST_NO_ANSI_APIS
135 return ::CreateWaitableTimerW(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, 0);
136#else
137 return ::CreateWaitableTimerA(reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpTimerAttributes), bManualReset, 0);
138#endif
139}
140
7c673cae
FG
141}
142}
143
b32b8144
FG
144#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
145#endif // BOOST_WINAPI_WAITABLE_TIMER_HPP_INCLUDED_