Freigeben über


ExecuteUmsThread-Funktion (winbase.h)

Führt den angegebenen UMS-Workerthread aus.

Warnung

Ab Windows 11 wird die Planung im Benutzermodus nicht unterstützt. Alle Aufrufe schlagen mit dem Fehler ERROR_NOT_SUPPORTEDfehl.

Syntax

BOOL ExecuteUmsThread(
  [in, out] PUMS_CONTEXT UmsThread
);

Parameter

[in, out] UmsThread

Ein Zeiger auf den UMS-Threadkontext des auszuführenden Workerthreads.

Rückgabewert

Wenn die Funktion erfolgreich ist, gibt sie keinen Wert zurück.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Mögliche Fehlercodes sind:

Rückgabecode Beschreibung
ERROR_RETRY
Der angegebene UMS-Workerthread wird vom System vorübergehend gesperrt. Der Aufrufer kann den Vorgang wiederholen.
ERROR_NOT_SUPPORTED
UMS wird nicht unterstützt.

Hinweise

Die ExecuteUmsThread-Funktion lädt den Zustand des angegebenen UMS-Workerthreads über den Zustand des aufrufenden UMS-Planerthreads, sodass der Workerthread ausgeführt werden kann. Der Workerthread wird so lange ausgeführt, bis er durch Aufrufen der UmsThreadYield-Funktion , Blöcke oder Beendigungen ergibt.

Wenn ein Workerthread ergibt oder blockiert, ruft das System die UmsSchedulerProc-Einstiegspunktfunktion des Planerthreads auf. Wenn ein zuvor blockierter Workerthread aufgehoben wird, stellt das System den Workerthread in die Vervollständigungsliste ein, die mit der Funktion UpdateProcThreadAttribute angegeben wurde, als der Workerthread erstellt wurde.

Die ExecuteUmsThread-Funktion wird nur zurückgegeben, wenn ein Fehler auftritt. Wenn die Funktion ERROR_RETRY zurückgibt, ist der Fehler transitorisch, und der Vorgang kann wiederholt werden.

Wenn die Funktion einen anderen Fehler als ERROR_RETRY zurückgibt, sollte der Planer der Anwendung überprüfen, ob der Thread angehalten oder beendet wird, indem QueryUmsThreadInformation mit UmsThreadIsSuspended bzw . UmsThreadIsTerminated aufgerufen wird. Weitere mögliche Fehler sind das Aufrufen der Funktion für einen Thread, der kein UMS-Planerthread ist, das Übergeben eines ungültigen UMS-Workerthreadkontexts oder das Angeben eines Workerthreads, der bereits in einem anderen Planerthread ausgeführt wird.

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

UmsSchedulerProc

UmsThreadYield

UpdateProcThreadAttribute