DequeueUmsCompletionListItems 函数 (winbase.h)
从指定的 UMS 完成列表中检索用户模式计划 (UMS) 工作线程。
警告
自Windows 11起,不支持用户模式计划。 所有调用都失败,出现错误 ERROR_NOT_SUPPORTED
。
语法
BOOL DequeueUmsCompletionListItems(
[in] PUMS_COMPLETION_LIST UmsCompletionList,
[in] DWORD WaitTimeOut,
[out] PUMS_CONTEXT *UmsThreadList
);
参数
[in] UmsCompletionList
指向从中检索工作线程的完成列表的指针。
[in] WaitTimeOut
检索操作的超时间隔(以毫秒为单位)。 如果间隔已过,函数将返回 ,即使没有工作线程排到完成列表。
如果 WaitTimeOut 参数为零,则会检查完成列表是否有可用的工作线程,而不会等待工作线程变为可用。 如果 WaitTimeOut 参数为 INFINITE,则函数的超时间隔永远不会超过。 但是,不建议这样做,因为它会导致函数阻塞,直到一个或多个工作线程可用。
[out] UmsThreadList
指向UMS_CONTEXT变量的指针。 在输出时,此参数接收指向 UMS 线程上下文列表中第一个 UMS 线程上下文的指针。
如果在 WaitTimeOut 参数指定的超时之前没有可用的工作线程,此参数将设置为 NULL。
返回值
如果函数成功,则返回非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。 可能的错误值包括以下内容。
返回代码 | 说明 |
---|---|
|
在指定的超时间隔过去之前,没有可用的线程。 |
|
不支持 UMS。 |
注解
创建工作线程或取消阻止以前阻止的工作线程时,系统会将 UMS 工作线程排入完成列表。 DequeueUmsCompletionListItems 函数检索指向指定完成列表中所有线程上下文列表的指针。 GetNextUmsListItem 函数可用于将 UMS 线程上下文从列表中弹出到计划程序自己的就绪线程队列中。 计划程序负责根据应用程序选择的优先级选择要运行的线程。
请勿直接从 DequeueUmsCompletionListItems 提供的列表中运行 UMS 线程,或在列表完全为空之前运行从列表传输到就绪线程队列的线程。 这可能会导致应用程序中出现不可预知的行为。
如果多个调用方尝试从共享完成列表中检索线程,则只有第一个调用方检索这些线程。 对于后续调用方, DequeueUmsCompletionListItems 函数返回成功,但 UmsThreadList 参数设置为 NULL。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 仅 Windows 7 (64 位) [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |
API 集 | windows 7) 中引入的 api-ms-win-core-ums-l1-1-0 ( |