Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 |
|---|---|
|
Ein UMS-Planerthread wurde erstellt. Der Einstiegspunkt wird mit diesem Grund einmal aufgerufen, wenn EnterUmsSchedulingMode aufgerufen wird. |
|
Ein UMS-Workerthread blockiert. |
|
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.
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) |