Partager via


Fonction ExecuteUmsThread (winbase.h)

Exécute le thread de travail UMS spécifié.

Avertissement

À partir de Windows 11, la planification en mode utilisateur n’est pas prise en charge. Tous les appels échouent avec l’erreur ERROR_NOT_SUPPORTED.

Syntaxe

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

Paramètres

[in, out] UmsThread

Pointeur vers le contexte de thread UMS du thread worker à exécuter.

Valeur retournée

Si la fonction réussit, elle ne retourne pas de valeur.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Les codes d’erreur possibles sont les suivants.

Code de retour Description
ERROR_RETRY
Le thread de travail UMS spécifié est temporairement verrouillé par le système. L’appelant peut réessayer l’opération.
ERROR_NOT_SUPPORTED
L’UMS n’est pas prise en charge.

Remarques

La fonction ExecuteUmsThread charge l’état du thread worker UMS spécifié sur l’état du thread de planificateur UMS appelant afin que le thread worker puisse s’exécuter. Le thread de travail s’exécute jusqu’à ce qu’il génère en appelant la fonction UmsThreadYield , en bloquant ou en se terminant.

Lorsqu’un thread worker génère ou bloque, le système appelle la fonction de point d’entrée UmsSchedulerProc du thread du planificateur. Lorsqu’un thread worker précédemment bloqué est débloqué, le système met en file d’attente le thread worker vers la liste d’achèvement spécifiée avec la fonction UpdateProcThreadAttribute lors de la création du thread worker.

La fonction ExecuteUmsThread ne retourne pas, sauf si une erreur se produit. Si la fonction retourne ERROR_RETRY, l’erreur est temporaire et l’opération peut être retentée.

Si la fonction retourne une erreur autre que ERROR_RETRY, le planificateur de l’application doit case activée si le thread est suspendu ou arrêté en appelant QueryUmsThreadInformation avec respectivement UmsThreadIsSuspended ou UmsThreadIsTerminated. D’autres erreurs possibles incluent l’appel de la fonction sur un thread qui n’est pas un thread de planificateur UMS, la transmission d’un contexte de thread de travail UMS non valide ou la spécification d’un thread worker qui s’exécute déjà sur un autre thread de planificateur.

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 winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll
Ensemble d’API api-ms-win-core-ums-l1-1-0 (introduit dans Windows 7)

Voir aussi

UmsSchedulerProc

UmsThreadYield

UpdateProcThreadAttribute