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
ERROR_TIMEOUT
在經過指定的超時時間間隔之前,沒有線程可供使用。
ERROR_NOT_SUPPORTED
不支援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)

另請參閱

GetNextUmsListItem