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。 可能的錯誤值包括下列專案。
傳回碼 | Description |
---|---|
|
在經過指定的超時時間間隔之前,沒有線程可供使用。 |
|
不支援UMS。 |
備註
系統會在建立背景工作線程或先前封鎖的背景工作線程解除封鎖時,將 UMS 背景工作線程排入完成清單。 DequeueUmsCompletionListItems 函式會擷取指定完成清單中所有線程內容的指標。 GetNextUmsListItem 函式可用來將 UMS 線程內容從清單取出到排程器自己的就緒線程佇列中。 排程器負責根據應用程式所選擇的優先順序選取要執行的線程。
請勿直接從 DequeueUmsCompletionListItems 所提供的清單中執行 UMS 線程,或執行從清單傳送至就緒線程佇列的線程,再將清單完全空白。 這可能會在應用程式中造成無法預期的行為。
如果多個呼叫端嘗試從共用完成清單中擷取線程,則只有第一個呼叫端會擷取線程。 針對後續呼叫端, DequeueUmsCompletionListItems 函式會傳回成功,但 UmsThreadList 參數會設定為 NULL。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | 僅限 Windows 7 (64 位) [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 R2 [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
程式庫 | Kernel32.lib |
DLL | Kernel32.dll |
API 集合 | api-ms-win-core-ums-l1-1-0 (在 Windows 7) |