SetWaitableTimer
[New
- Windows NT]
The SetWaitableTimer
function activates the specified waitable timer. When the due time arrives,
the timer is signaled and the thread that set the timer calls the optional
completion routine.
BOOL SetWaitableTimer(
HANDLE hTimer, |
// handle to a
timer object |
const LARGE_INTEGER *pDueTime, |
// when timer will
become signaled |
LONG lPeriod, |
// periodic timer
interval |
PTIMERAPCROUTINE pfnCompletionRoutine, |
// pointer to the
completion routine |
LPVOID lpArgToCompletionRoutine, |
// data passed to
the completion routine |
BOOL fResume |
// flag for resume
state |
); |
|
Parameters
hTimer
Identifies
the timer object. The CreateWaitableTimer
pDueTime
Specifies
when the state of the timer is to be set to signaled, in 100 nanosecond
intervals. Use the format described by the FILETIME
lPeriod
Specifies the
period of the timer, in milliseconds. If lPeriod is zero, the timer is
signaled once. If lPeriod is greater than zero, the timer is periodic. A
periodic timer automatically reactivates each time the period elapses, until
the timer is canceled using the CancelWaitableTimer
pfnCompletionRoutine
Specifies an
optional completion routine. The completion routine has the following
prototype:
VOID
(APIENTRY *PTIMERAPCROUTINE)(
LPVOID
lpArgToCompletionRoutine,
DWORD
dwTimerLowValue,
DWORD
dwTimerHighValue
);
The argument
for the completion routine is specified when the timer is made active, in the lpArgToCompletionRoutine
parameter. The completion routine also takes two DWORD values that specify
the high and low time values of the time at which the timer was signaled. These
values are passed to the routine by the system using the FILETIME
lpArgToCompletionRoutine
Pointer to
the structure that is passed to the function specified by the pointer pfnCompletionRoutine.
fResume
Specifies
whether to restore a system in suspended power conservation mode when the timer
state is set to signaled. If fResume is TRUE on a platform that does not
support a restore, the call will succeed, but GetLastError returns
ERROR_NOT_SUPPORTED.
Return Value
If the
function succeeds, the return value is nonzero.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError
Remarks
Timer are
initially inactive. Timers are activated by calling SetWaitableTimer. If
the timer is already active when you call SetWaitableTimer, the timer is
stopped, then it is reactivated. Stopping the timer in this manner does not set
the timer state to signaled, so threads blocked in a wait operation on the
timer remain blocked.
When the
specified due time arrives, the timer becomes inactive. The state of the timer
is set to signaled, the timer is reactivated using the specified period, and
the thread calls the completion routine. If you call SetWaitableTimer
and the thread is not in an alertable state, the completion routine is
canceled.
When a
manual-reset timer is set to the signaled state, it remains in this state until
SetWaitableTimer is called to reset the timer. As a result, a periodic
manual-reset timer is set to the signaled state when the initial due time
arrives and remains signaled until it is canceled or reset. When a
synchronization timer is set to the signaled state, it remains in this state
until a thread completes a wait operation on the timer object.
See Also