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