RTL_UMS_SCHEDULER_ENTRY_POINT Rückruffunktion (winnt.h)

Die anwendungsdefinierte UMS-Funktion (User Mode Scheduling) für den Einstiegspunkt des Schedulers, die einer UMS-Vervollständigungsliste zugeordnet ist.

Der PUMS_SCHEDULER_ENTRY_POINT-Typs definiert einen Zeiger auf diese Funktion. UmsSchedulerProc ist ein Platzhalter für den anwendungsdefinierte Funktionsnamen.

Syntax

RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;

void RtlUmsSchedulerEntryPoint(
  [in] RTL_UMS_SCHEDULER_REASON Reason,
  [in] ULONG_PTR ActivationPayload,
  [in] PVOID SchedulerParam
)
{...}

Parameter

[in] Reason

Der Grund, warum der Scheduler-Einstiegspunkt aufgerufen wird. Dieser Parameter kann einen der folgenden Werte annehmen.

Wert Bedeutung
UmsSchedulerStartup
0
Ein UMS-Planerthread wurde erstellt. Der Einstiegspunkt wird mit diesem Grund einmal aufgerufen, wenn EnterUmsSchedulingMode aufgerufen wird.
UmsSchedulerThreadBlocked
1
Ein UMS-Workerthread blockiert.
UmsSchedulerThreadYield
2
Ein ausgeführter UMS-Workerthread hat ein Steuerelement durch Aufrufen der Funktion UmsThreadYield ergeben.

[in] ActivationPayload

Wenn der Reason-ParameterUmsSchedulerStartup ist, ist dieser Parameter NULL.

Wenn der Reason-ParameterUmsSchedulerThreadBlocked ist, gibt Bit 0 dieses Parameters den Typ der Aktivität an, die beim Blockieren des UMS-Workerthreads gewartet wurde.

Wert Bedeutung
0
Der Thread wurde für eine Trap (z. B. ein Hartseitenfehler) oder einen Interrupt (z. B. ein asynchroner Prozeduraufruf) blockiert.
1
Der Thread wurde bei einem Systemaufruf blockiert.
 

Wenn der Reason-ParameterUmsSchedulerThreadYield ist, ist dieser Parameter ein Zeiger auf den UMS-Threadkontext des UMS-Workerthreads, der zurückgegeben wurde.

[in] SchedulerParam

Wenn der Reason-ParameterUmsSchedulerStartup ist, ist dieser Parameter das SchedulerParam-Element der UMS_SCHEDULER_STARTUP_INFO-Struktur , die an die EnterUmsSchedulingMode-Funktion übergeben wird, die den Einstiegspunktaufruf ausgelöst hat.

Wenn der Reason-ParameterUmsSchedulerThreadYield ist, ist dieser Parameter der SchedulerParam-Parameter, der an die Funktion UmsThreadYield übergeben wird, die den Einstiegspunktaufruf ausgelöst hat.

Wenn der Reason-ParameterUmsSchedulerThreadBlocked lautet, ist dieser Parameter NULL.

Rückgabewert

Keine

Bemerkungen

Der UmsSchedulerProc-Funktionszeigertyp wird als PUMS_SCHEDULER_ENTRY_POINT in WinBase.h definiert. Der zugrunde liegende Funktionstyp ist als RTL_UMS_SCHEDULER_ENTRY_POINT in WinNT.h definiert.

Jeder UMS-Planerthread verfügt über eine zugeordnete UmsSchedulerProc-Einstiegspunktfunktion , die angegeben wird, wenn der Thread die EnterUmsSchedulingMode-Funktion aufruft. Das System ruft die Scheduler-Einstiegspunktfunktion mit dem Grund UmsSchedulerStartup auf, wenn der Planerthread für UMS konvertiert wird.

Wenn anschließend ein UMS-Workerthread, der im Planerthread ausgeführt wird, oder Blöcke abgibt, ruft das System die Einstiegspunktfunktion des Planerthreads mit einem Zeiger auf den UMS-Threadkontext des Workerthreads auf.

Der Planer der Anwendung ist für die Auswahl des nächsten auszuführenden UMS-Workerthreads verantwortlich. Der Scheduler implementiert alle Richtlinien, die die Ausführung seiner UMS-Threads beeinflussen, einschließlich Prozessoraffinität und Threadpriorität. Beispielsweise kann ein Planer E/A-intensiven Threads Priorität zukommen lassen oder Threads auf einer First-Come-, First-Served-Basis ausführen. Diese Logik kann in der Scheduler-Einstiegspunktfunktion oder an anderer Stelle in der Anwendung implementiert werden.

Wenn ein blockierter UMS-Workerthread aufgehoben wird, stellt das System den nicht blockierten Thread in die Warteschlange der zugehörigen Vervollständigungsliste und signalisiert das Vervollständigungslistenereignis. Um UMS-Workerthreads aus der Vervollständigungsliste abzurufen, verwenden Sie die Funktion DequeueUmsCompletionListItems .

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 winnt.h (einschließlich WinBase.h, Windows.h)

Weitere Informationen

DequeueUmsCompletionListItems

EnterUmsSchedulingMode

UmsThreadYield