CreateWaitableTimerExW 函数 (synchapi.h)

创建或打开可等待的计时器对象,并返回对象的句柄。

语法

HANDLE CreateWaitableTimerExW(
  [in, optional] LPSECURITY_ATTRIBUTES lpTimerAttributes,
  [in, optional] LPCWSTR               lpTimerName,
  [in]           DWORD                 dwFlags,
  [in]           DWORD                 dwDesiredAccess
);

参数

[in, optional] lpTimerAttributes

指向 SECURITY_ATTRIBUTES 结构的指针。 如果此参数 NULL,则子进程无法继承计时器句柄。

如果 lpTimerAttributesNULL,计时器对象将获取默认的安全描述符,并且无法继承句柄。 计时器的默认安全描述符中的 ACL 来自创建者的主要或模拟令牌。

[in, optional] lpTimerName

计时器对象的名称。 名称限制为 MAX_PATH 个字符。 名称比较区分大小写。

如果 lpTimerNameNULL,则创建计时器对象时不带名称。

如果 lpTimerName 与现有事件、信号灯、互斥体、作业或文件映射对象的名称匹配,则函数将失败,GetLastError 返回 ERROR_INVALID_HANDLE。 之所以发生这种情况,是因为这些对象共享相同的命名空间。

该名称可以具有“全局”或“本地”前缀,以在全局或会话命名空间中显式创建对象。 名称的其余部分可以包含除反斜杠字符(\)以外的任何字符。 有关详细信息,请参阅 内核对象命名空间。 快速用户切换是使用终端服务会话实现的。 内核对象名称必须遵循终端服务概述的准则,以便应用程序能够支持多个用户。

可以在专用命名空间中创建对象。 有关详细信息,请参阅 对象命名空间

[in] dwFlags

此参数可以是 0 或以下值。

价值 意义
CREATE_WAITABLE_TIMER_MANUAL_RESET
0x00000001
必须手动重置计时器。 否则,系统会在释放单个等待线程后自动重置计时器。
CREATE_WAITABLE_TIMER_HIGH_RESOLUTION
0x00000002
创建高分辨率计时器。 对于时间关键型情况,当短过期延迟的几毫秒不能接受时,请使用此值。 Windows 10 版本 1803 及更高版本中支持此值。

[in] dwDesiredAccess

计时器对象的访问掩码。 有关访问权限列表,请参阅 同步对象安全和访问权限

返回值

如果函数成功,则返回值是计时器对象的句柄。 如果在函数调用之前存在命名计时器对象,该函数将返回现有对象的句柄,GetLastError 返回 ERROR_ALREADY_EXISTS

如果函数失败,则返回值 NULL。 若要获取扩展的错误信息,请调用 GetLastError

言论

调用进程的任何线程都可以在调用其中一个 等待函数中指定计时器对象句柄。

多个进程可以具有对同一计时器对象的句柄,从而允许使用该对象进行进程间同步。

  • 如果 lpTimerAttribut es CreateWaitableTimerEx 启用继承,则 CreateProcess 函数创建的进程可以继承计时器对象。
  • 进程可以在调用 DuplicateHandle 函数时指定计时器对象句柄。 生成的句柄可由另一个进程使用。
  • 进程可以在调用 OpenWaitableTimerCreateWaitableTimerEx 函数中指定计时器对象的名称。

使用 CloseHandle 函数关闭句柄。 系统在进程终止时自动关闭句柄。 计时器对象在最后一个句柄关闭时被销毁。

若要将计时器与窗口相关联,请使用 SetTimer 函数。

要求

要求 价值
最低支持的客户端 Windows Vista [桌面应用 |UWP 应用]
支持的最低服务器 Windows Server 2008 [桌面应用 |UWP 应用]
目标平台 窗户
标头 synchapi.h (包括 Windows.h)
Kernel32.lib
DLL Kernel32.dll

另请参阅

CloseHandle

同步函数

可等待计时器对象