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_SUPPORTEDfehl.

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
ERROR_TIMEOUT
Vor Ablauf des angegebenen Timeoutintervalls wurden keine Threads verfügbar.
ERROR_NOT_SUPPORTED
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)

Weitere Informationen

GetNextUmsListItem