DequeueUmsCompletionListItems-Funktion (winbase.h)
Ruft UmS-Workerthreads (Benutzermodusplanung) aus der angegebenen UMS-Vervollständigungsliste ab.
Warnung
Ab Windows 11 wird die Planung im Benutzermodus nicht unterstützt. Alle Aufrufe schlagen mit dem Fehler ERROR_NOT_SUPPORTED
fehl.
Syntax
BOOL DequeueUmsCompletionListItems(
[in] PUMS_COMPLETION_LIST UmsCompletionList,
[in] DWORD WaitTimeOut,
[out] PUMS_CONTEXT *UmsThreadList
);
Parameter
[in] UmsCompletionList
Ein Zeiger auf die Vervollständigungsliste, aus der Workerthreads abgerufen werden sollen.
[in] WaitTimeOut
Das Timeoutintervall für den Abrufvorgang in Millisekunden. Die Funktion gibt zurück, wenn das Intervall verstrichen ist, auch wenn keine Workerthreads in die Vervollständigungsliste eingereiht sind.
Wenn der WaitTimeOut-Parameter 0 ist, wird die Vervollständigungsliste auf verfügbare Workerthreads überprüft, ohne darauf zu warten, dass Workerthreads verfügbar werden. Wenn der WaitTimeOut-Parameter UNENDLICH ist, verstreicht das Timeoutintervall der Funktion nie. Dies wird jedoch nicht empfohlen, da die Funktion dadurch blockiert wird, bis mindestens ein Workerthread verfügbar ist.
[out] UmsThreadList
Ein Zeiger auf eine UMS_CONTEXT Variable. Bei der Ausgabe empfängt dieser Parameter einen Zeiger auf den ersten UMS-Threadkontext in einer Liste von UMS-Threadkontexten.
Wenn vor dem durch den WaitTimeOut-Parameter angegebenen Timeout keine Workerthreads verfügbar sind, wird dieser Parameter auf NULL festgelegt.
Rückgabewert
Wenn die Funktion erfolgreich ist, gibt sie einen Wert ohne Zero zurück.
Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Mögliche Fehlerwerte sind:
Rückgabecode | Beschreibung |
---|---|
|
Vor Ablauf des angegebenen Timeoutintervalls wurden keine Threads verfügbar. |
|
UMS wird nicht unterstützt. |
Hinweise
Das System stellt einen UMS-Workerthread in eine Vervollständigungsliste bereit, wenn der Workerthread erstellt wird oder wenn ein zuvor blockierter Workerthread aufgehoben wird. Die Funktion DequeueUmsCompletionListItems ruft einen Zeiger auf eine Liste aller Threadkontexte in der angegebenen Vervollständigungsliste ab. Die GetNextUmsListItem-Funktion kann verwendet werden, um UMS-Threadkontexte aus der Liste in die eigene bereite Threadwarteschlange des Planers aufzufüllen. Der Planer ist für die Auswahl von Threads verantwortlich, die ausgeführt werden sollen, basierend auf den von der Anwendung ausgewählten Prioritäten.
Führen Sie UMS-Threads nicht direkt aus der Liste aus, die von DequeueUmsCompletionListItems bereitgestellt wird, oder führen Sie einen Thread aus, der aus der Liste in die bereite Threadwarteschlange übertragen wird, bevor die Liste vollständig leer ist. Dies kann zu unvorhersehbarem Verhalten in der Anwendung führen.
Wenn mehrere Aufrufer versuchen, Threads aus einer freigegebenen Vervollständigungsliste abzurufen, ruft nur der erste Aufrufer die Threads ab. Für nachfolgende Aufrufer gibt die DequeueUmsCompletionListItems-Funktion den Erfolg zurück, aber der Parameter UmsThreadList ist auf NULL festgelegt.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 7 (nur 64-Bit) [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2008 R2 [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winbase.h (einschließlich Windows.h) |
Bibliothek | Kernel32.lib |
DLL | Kernel32.dll |
APIs | api-ms-win-core-ums-l1-1-0 (in Windows 7 eingeführt) |