Partager via


Fonction DequeueUmsCompletionListItems (winbase.h)

Récupère les threads de travail de planification en mode utilisateur (UMS) à partir de la liste de saisie semi-automatique UMS spécifiée.

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 DequeueUmsCompletionListItems(
  [in]  PUMS_COMPLETION_LIST UmsCompletionList,
  [in]  DWORD                WaitTimeOut,
  [out] PUMS_CONTEXT         *UmsThreadList
);

Paramètres

[in] UmsCompletionList

Pointeur vers la liste d’achèvement à partir de laquelle récupérer des threads de travail.

[in] WaitTimeOut

Intervalle de délai d’attente pour l’opération de récupération, en millisecondes. La fonction retourne si l’intervalle s’écoule, même si aucun thread de travail n’est mis en file d’attente vers la liste d’achèvement.

Si le paramètre WaitTimeOut est égal à zéro, la liste d’achèvement est vérifiée pour les threads de travail disponibles sans attendre que les threads de travail soient disponibles. Si le paramètre WaitTimeOut est INFINITE, l’intervalle de délai d’attente de la fonction ne s’écoule jamais. Cela n’est toutefois pas recommandé, car cela entraîne le blocage de la fonction jusqu’à ce qu’un ou plusieurs threads de travail soient disponibles.

[out] UmsThreadList

Pointeur vers une variable UMS_CONTEXT. Lors de la sortie, ce paramètre reçoit un pointeur vers le premier contexte de thread UMS dans une liste de contextes de thread UMS.

Si aucun thread de travail n’est disponible avant le délai d’attente spécifié par le paramètre WaitTimeOut , ce paramètre a la valeur NULL.

Valeur retournée

Si la fonction réussit, elle retourne une valeur différente de zéro.

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 valeurs d’erreur possibles sont les suivantes.

Code de retour Description
ERROR_TIMEOUT
Aucun thread n’est devenu disponible avant l’expiration de l’intervalle de délai spécifié.
ERROR_NOT_SUPPORTED
L’UMS n’est pas prise en charge.

Remarques

Le système met en file d’attente un thread de travail UMS vers une liste d’achèvement lorsque le thread de travail est créé ou lorsqu’un thread de travail précédemment bloqué est débloqué. La fonction DequeueUmsCompletionListItems récupère un pointeur vers une liste de tous les contextes de thread dans la liste d’achèvement spécifiée. La fonction GetNextUmsListItem peut être utilisée pour afficher les contextes de thread UMS de la liste dans la propre file d’attente de threads prête du planificateur. Le planificateur est responsable de la sélection des threads à exécuter en fonction des priorités choisies par l’application.

N’exécutez pas de threads UMS directement à partir de la liste fournie par DequeueUmsCompletionListItems, ou exécutez un thread transféré de la liste vers la file d’attente de threads prête avant que la liste ne soit complètement vide. Cela peut entraîner un comportement imprévisible dans l’application.

Si plusieurs appelants tentent de récupérer des threads à partir d’une liste de saisie semi-automatique partagée, seul le premier appelant récupère les threads. Pour les appelants suivants, la fonction DequeueUmsCompletionListItems retourne la réussite, mais le paramètre UmsThreadList a la valeur NULL.

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

GetNextUmsListItem