RTL_UMS_SCHEDULER_ENTRY_POINT fonction de rappel (winnt.h)

Fonction de point d’entrée du planificateur en mode utilisateur (UMS) définie par l’application associée à une liste d’achèvement UMS.

Le type PUMS_SCHEDULER_ENTRY_POINT définit un pointeur vers cette fonction. UmsSchedulerProc est un espace réservé pour le nom de la fonction définie par l’application.

Syntaxe

RTL_UMS_SCHEDULER_ENTRY_POINT RtlUmsSchedulerEntryPoint;

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

Paramètres

[in] Reason

Raison pour laquelle le point d’entrée du planificateur est appelé. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
UmsSchedulerStartup
0
Un thread de planificateur UMS a été créé. Le point d’entrée est appelé pour cette raison une fois chaque fois qu’EnterUmsSchedulingMode est appelé.
UmsSchedulerThreadBlocked
1
Un thread de travail UMS bloqué.
UmsSchedulerThreadYield
2
Un thread de travail UMS en cours d’exécution a généré le contrôle en appelant la fonction UmsThreadYield .

[in] ActivationPayload

Si le paramètre Reason est UmsSchedulerStartup, ce paramètre a la valeur NULL.

Si le paramètre Reason est UmsSchedulerThreadBlocked, le bit 0 de ce paramètre indique le type d’activité qui était en cours de maintenance lorsque le thread de travail UMS a été bloqué.

Valeur Signification
0
Thread bloqué sur une interruption (par exemple, une erreur de page dure) ou une interruption (par exemple, un appel de procédure asynchrone).
1
Thread bloqué lors d’un appel système.
 

Si le paramètre Reason est UmsSchedulerThreadYield, ce paramètre est un pointeur vers le contexte de thread UMS du thread de travail UMS qui a généré.

[in] SchedulerParam

Si le paramètre Reason est UmsSchedulerStartup, ce paramètre est le membre SchedulerParam de la structure UMS_SCHEDULER_STARTUP_INFO passée à la fonction EnterUmsSchedulingMode qui a déclenché l’appel du point d’entrée.

Si le paramètre Reason a la valeur UmsSchedulerThreadYield , ce paramètre est le paramètre SchedulerParam passé à la fonction UmsThreadYield qui a déclenché l’appel du point d’entrée.

Si le paramètre Reason est UmsSchedulerThreadBlocked, ce paramètre a la valeur NULL.

Valeur de retour

None

Remarques

Le type de pointeur de fonction UmsSchedulerProc est défini comme PUMS_SCHEDULER_ENTRY_POINT dans WinBase.h. Le type de fonction sous-jacent est défini comme RTL_UMS_SCHEDULER_ENTRY_POINT dans WinNT.h

Chaque thread du planificateur UMS a une fonction de point d’entrée UmsSchedulerProc qui est spécifiée lorsque le thread appelle la fonction EnterUmsSchedulingMode . Le système appelle la fonction de point d’entrée du planificateur avec une raison de UmsSchedulerStartup lorsque le thread du planificateur est converti pour UMS.

Par la suite, lorsqu’un thread de travail UMS qui s’exécute sur le thread du planificateur génère ou bloque, le système appelle la fonction de point d’entrée du thread du planificateur avec un pointeur vers le contexte de thread UMS du thread de travail.

Le planificateur de l’application est chargé de sélectionner le thread de travail UMS suivant à exécuter. Le planificateur implémente toutes les stratégies qui influencent l’exécution de ses threads UMS, y compris l’affinité de processeur et la priorité de thread. Par exemple, un planificateur peut donner la priorité aux threads gourmands en E/S, ou exécuter des threads sur la base du premier arrivé, premier servi. Cette logique peut être implémentée dans la fonction de point d’entrée du planificateur ou ailleurs dans l’application.

Lorsqu’un thread de travail UMS bloqué est débloqué, le système met en file d’attente le thread débloqué vers la liste d’achèvement associée et signale l’événement de liste d’achèvement. Pour récupérer des threads de travail UMS à partir de la liste d’achèvement, utilisez la fonction DequeueUmsCompletionListItems .

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 7 (64 bits uniquement) [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 R2 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winnt.h (inclure WinBase.h, Windows.h)

Voir aussi

DequeueUmsCompletionListItems

EnterUmsSchedulingMode

UmsThreadYield