SetWaitableTimer

【勇芳软件工作室】汉化HomePreviousNext

[New - Windows NT]

SetWaitableTimer功能激活指定的“等待”定时器。当到达时间到达时,定时器发出信号,设置定时器的线程调用可选的完成例程。

BOOL SetWaitableTimer(

HANDLE 【hTimer】,//处理定时器对象
const LARGE_INTEGER 【*pDueTime】,//当定时器变成信号时
LONG【lPeriod】,//周期性定时器间隔
PTIMERAPCROUTINE 【pfnCompletionRoutine】,//指向完成例程的指针
LPVOID 【lpArgToCompletionRoutine】,//数据传递到完成例程
BOOL 【fResume】//标志为恢复状态
); 

参数

【hTimer】

标识定时器对象。CreateWaitableTimerOpenWaitableTimer函数返回此句柄。

【pDueTime】

指定何时将定时器的状态设置为发信号,以100纳秒为间隔。使用FILETIME结构描述的格式。正值表示绝对时间。负值表示相对时间。实际的定时精度取决于硬件的能力。

【lPeriod】

指定定时器的周期,单位为毫秒。如果【lPeriod】为零,则定时器发出一次信号。如果【lPeriod】大于0,定时器是周期性的。周期性定时器在每次使用时间段内自动重新激活,直到使用CancelWaitableTimer函数取消定时器或使用SetWaitableTimer复位。如果【lPeriod】小于0,则该函数失败。

【pfnCompletionRoutine】

指定可选的完成例程。完成例程有以下原型:

VOID

(APIENTRY *PTIMERAPCROUTINE)(

LPVOID lpArgToCompletionRoutine,

DWORD dwTimerLowValue,

DWORD dwTimerHighValue

);

定时器激活时,在【lpArgToCompletionRoutine】参数中指定完成例程的参数。完成例程还需要两个DWORD值,指定定时器发出信号的时间的高低时间值。这些值由系统使用FILETIME格式传递给例程。

【lpArgToCompletionRoutine】

指向传递给由指针【pfnCompletionRoutine】指定的函数的结构的指针。

【fResume】

指定当定时器状态设置为发信号时,是否将系统恢复为暂停节电模式。如果在不支持还原的平台上【fResume】为TRUE,则呼叫将成功,但GetLastError返回ERROR_NOT_SUPPORTED。

回报值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

计时器最初无效。定时器通过调用SetWaitableTimer激活。如果调用SetWaitableTimer时定时器已经激活,则定时器停止,然后重新激活。以这种方式停止定时器不会将定时器状态设置为发信号,因此在定时器的等待操作中阻塞的线程保持阻塞。

当指定的到期时间到达时,定时器变为无效。定时器的状态设置为发出信号,定时器使用指定的周期重新激活,线程调用完成例程。如果您调用SetWaitableTimer并且线程不处于可警告状态,则完成例程将被取消。

当手动复位定时器设置为信号状态时,它将保持在此状态,直到SetWaitableTimer被调用来重置定时器。因此,当初始到期时间到达时,定期手动复位定时器被设置为信号状态,并保持信号,直到被取消或复位为止。当同步定时器设置为信号状态时,它将保持在此状态,直到线程完成对定时器对象的等待操作。

也可以看看

CancelWaitableTimer,CreateWaitableTimer,FILETIME,OpenWaitableTimer