WaitForSingleObject 函数 (synchapi.h)
等待指定的对象处于信号状态或超时间隔过。
若要进入可警报的等待状态,请使用 WaitForSingleObjectEx 函数。 若要等待多个对象,请使用 WaitForMultipleObjects。
语法
DWORD WaitForSingleObject(
[in] HANDLE hHandle,
[in] DWORD dwMilliseconds
);
参数
[in] hHandle
对象的句柄。 有关可以指定句柄的对象类型的列表,请参阅以下“备注”部分。
如果在等待仍在挂起时关闭此句柄,则函数的行为是未定义的。
句柄必须具有 SYNCHRONIZE 访问权限。 有关详细信息,请参阅 标准访问权限。
[in] dwMilliseconds
超时间隔(以毫秒为单位)。 如果指定了非零值,函数将等待对象发出信号或间隔。 如果 dwMilliseconds 为零,则函数不会在对象未发出信号时进入等待状态;它始终会立即返回。 如果 dwMillisecondsINFINITE,则仅当发出对象信号时,函数才会返回。
Windows XP、Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 和 Windows Server 2008 R2:dwMilliseconds 值确实包括用于低功率状态的时间。 例如,当计算机处于睡眠状态时,超时确实会不断倒计时。
Windows 8 及更新版本、Windows Server 2012 及更新版本:dwMilliseconds 值不包括在低功率状态下花费的时间。 例如,当计算机处于睡眠状态时,超时不会不断倒计时。
返回值
如果函数成功,则返回值指示导致函数返回的事件。 它可以是以下值之一。
返回代码/值 | 描述 |
---|---|
|
指定的对象是一个互斥体对象,该对象不是由拥有互斥体对象的线程在拥有线程终止之前释放的。 mutex 对象的所有权授予调用线程,互斥体状态设置为非对齐状态。
如果互斥体保护持久状态信息,则应检查它是否一致性。 |
|
指定对象的状态已发出信号。 |
|
超时间隔已用,并且对象的状态不对齐。 |
|
函数失败。 若要获取扩展的错误信息,请调用 GetLastError。 |
言论
WaitForSingleObject 函数检查指定对象的当前状态。 如果对象的状态不对齐,则调用线程将进入等待状态,直到发出该对象的信号或超时间隔结束。
该函数修改某些类型的同步对象的状态。 仅针对发出信号状态导致函数返回的对象进行修改。 例如,信号灯对象的计数减少一个。
WaitForSingleObject 函数可以等待以下对象:
- 更改通知
- 控制台输入
- 事件
- 内存资源通知
- Mutex
- 过程
- 信号
- 线
- 可等待计时器
例子
有关示例,请参阅 使用互斥体对象。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [桌面应用 |UWP 应用] |
支持的最低服务器 | Windows Server 2003 [桌面应用 |UWP 应用] |
目标平台 | 窗户 |
标头 | synchapi.h (包括 Windows Server 2003、Windows Vista、Windows 7、Windows Server 2008 Windows Server 2008 R2 上的 Windows.h) |
库 | Kernel32.lib |
DLL | Kernel32.dll |