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,则子进程无法继承计时器句柄。
如果 lpTimerAttributes 为 NULL,则计时器对象将获取默认的安全描述符,并且无法继承句柄。 计时器的默认安全描述符中的 ACL 来自创建者的主要令牌或模拟令牌。
[in, optional] lpTimerName
计时器对象的名称。 名称限制为 MAX_PATH 个字符。 名称比较区分大小写。
如果 lpTimerName 为 NULL,则创建不带名称的计时器对象。
如果 lpTimerName 与现有事件、信号灯、互斥体、作业或文件映射对象的名称匹配,则函数将失败, GetLastError 将返回 ERROR_INVALID_HANDLE。 发生这种情况是因为这些对象共享相同的命名空间。
名称可以具有“Global”或“Local”前缀,以在全局命名空间或会话命名空间中显式创建对象。 名称的其余部分可以包含除反斜杠字符 (\) 以外的任何字符。 有关详细信息,请参阅 内核对象命名空间。 快速用户切换是使用终端服务会话实现的。 内核对象名称必须遵循终端服务概述的准则,以便应用程序可以支持多个用户。
可以在专用命名空间中创建 对象。 有关详细信息,请参阅 对象命名空间。
[in] dwFlags
此参数可以是 0 或以下值。
[in] dwDesiredAccess
计时器对象的访问掩码。 有关访问权限的列表,请参阅 Synchronization Object Security and Access Rights。
返回值
如果函数成功,则返回值是计时器对象的句柄。 如果命名的计时器对象在函数调用之前存在,则函数返回现有对象的句柄, GetLastError 返回 ERROR_ALREADY_EXISTS。
如果函数失败,则返回值为 NULL。 要获得更多的错误信息,请调用 GetLastError。
注解
调用进程的任何线程都可以在调用某个 等待函数时指定计时器对象句柄。
多个进程可以具有同一计时器对象的句柄,从而允许使用该对象进行进程间同步。
- 如果 CreateWaitableTimerEx 的 lpTimerAttributes 参数启用继承,则 CreateProcess 函数创建的进程可以继承计时器对象的句柄。
- 进程可以在调用 DuplicateHandle 函数时指定计时器对象句柄。 生成的句柄可由另一个进程使用。
- 进程可以在调用 OpenWaitableTimer 或 CreateWaitableTimerEx 函数时指定计时器对象的名称。
使用 CloseHandle 函数关闭句柄。 进程终止时,系统会自动关闭句柄。 计时器对象在关闭其最后一个句柄时被销毁。
若要将计时器与窗口相关联,请使用 SetTimer 函数。
要求
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | synchapi.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈