DeleteTimerQueueTimer, fonction (threadpoollegacyapiset.h)

Supprime un minuteur de la file d’attente du minuteur et attend éventuellement que les fonctions de rappel du minuteur en cours d’exécution se terminent avant de supprimer le minuteur.

Syntaxe

BOOL DeleteTimerQueueTimer(
  [in, optional] HANDLE TimerQueue,
  [in]           HANDLE Timer,
  [in, optional] HANDLE CompletionEvent
);

Paramètres

[in, optional] TimerQueue

Handle de la file d’attente du minuteur. Ce handle est retourné par la fonction CreateTimerQueue .

Si le minuteur a été créé à l’aide de la file d’attente du minuteur par défaut, ce paramètre doit être NULL.

[in] Timer

Handle du minuteur-file d’attente. Ce handle est retourné par la fonction CreateTimerQueueTimer .

[in, optional] CompletionEvent

Handle de l’objet d’événement à signaler lorsque le système a annulé le minuteur et que toutes les fonctions de rappel sont terminées. Ce paramètre peut être NULL.

Si ce paramètre est INVALID_HANDLE_VALUE, la fonction attend que toutes les fonctions de rappel du minuteur en cours d’exécution se terminent avant de retourner.

Si ce paramètre a la valeur NULL, la fonction marque le minuteur pour la suppression et retourne immédiatement. Si le minuteur a déjà expiré, la fonction de rappel du minuteur s’exécute jusqu’à l’achèvement. Toutefois, aucune notification n’est envoyée lorsque la fonction de rappel du minuteur est terminée. La plupart des appelants ne doivent pas utiliser cette option et doivent attendre que les fonctions de rappel du minuteur en cours d’exécution se terminent afin qu’ils puissent effectuer tout nettoyage nécessaire.

Valeur retournée

Si la fonction réussit, la valeur de retour est 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. Si le code d’erreur est ERROR_IO_PENDING, il n’est pas nécessaire d’appeler à nouveau cette fonction. Pour toute autre erreur, vous devez réessayer l’appel.

Remarques

Cette fonction ne peut pas être appelée pendant que le thread utilise l’emprunt d’identité. Le comportement résultant n’est pas défini.

Vous pouvez définir CompletionEvent sur INVALID_HANDLE_VALUE lors de l’appel de cette fonction à partir du rappel du minuteur d’un autre minuteur tant que la fonction de rappel n’est pas exécutée dans le thread du minuteur. Toutefois, un interblocage peut se produire si deux fonctions de rappel tentent un appel DeleteTimerQueueTimer bloquant sur les minuteurs des autres. En outre, vous ne pouvez pas effectuer un appel de suppression bloquant sur un minuteur associé au rappel.

Soyez prudent lorsque vous effectuez un appel DeleteTimerQueueTimer bloquant sur un thread persistant. Si le minuteur en cours de suppression a été créé avec WT_EXECUTEINPERSISTENTTHREAD, un blocage peut se produire.

S’il existe des fonctions de rappel en attente et que CompletionEvent a la valeur NULL, la fonction échoue et définit le code d’erreur sur ERROR_IO_PENDING. Cela indique qu’il existe des fonctions de rappel en suspens. Ces rappels s’exécutent ou sont en cours d’exécution. Le minuteur est nettoyé lorsque l’exécution de la fonction de rappel est terminée.

Pour annuler tous les minuteurs d’une file d’attente du minuteur, appelez la fonction DeleteTimerQueueEx .

Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT comme 0x0500 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête threadpoollegacyapiset.h
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

CreateTimerQueue

CreateTimerQueueTimer

DeleteTimerQueueEx

Fonctions de synchronisation

Files d’attente du minuteur