Partager via


ExAllocateTimer, fonction (wdm.h)

La routine ExAllocateTimer alloue et initialise un objet minuteur.

Syntaxe

PEX_TIMER ExAllocateTimer(
  [in, optional] PEXT_CALLBACK Callback,
  [in, optional] PVOID         CallbackContext,
  [in]           ULONG         Attributes
);

Paramètres

[in, optional] Callback

Pointeur vers une routine de rappel implémentée par le pilote ExTimerCallback. Le système d’exploitation appelle cette routine lorsque le minuteur expire. Ce paramètre est facultatif et peut être NULL si aucune routine de rappel n’est nécessaire.

[in, optional] CallbackContext

Valeur de contexte pour la routine de rappel pointée par le paramètre de rappel . Le système d’exploitation transmet cette valeur en tant que paramètre à la routine de rappel ExTimerCallback, si l’un d’eux est spécifié. Ce paramètre est généralement un pointeur vers une structure définie par l’appelant qui contient des informations de contexte utilisées par la routine de rappel. Ce paramètre est facultatif et peut être défini sur NULL si aucune information de contexte n’est nécessaire.

[in] Attributes

Attributs du minuteur. Définissez ce paramètre sur zéro ou sur l’or au niveau du bit d’un ou plusieurs des bits d’indicateur de minuteur suivants.

Bit d’indicateur du minuteur Description
EX_TIMER_HIGH_RESOLUTION Minuteur haute résolution. Rendre le minuteur plus précis à l’aide d’une horloge plus haute résolution pour conduire le minuteur.
EX_TIMER_NO_WAKE Pas de minuteur de veille. Faites en sorte que le retard du minuteur éveille le processeur jusqu’à ce que l’heure d’expiration du minuteur plus sa tolérance de retard soit dépassée.
EX_TIMER_NOTIFICATION Minuteur de notification. Faites du minuteur un minuteur de notification au lieu d’un minuteur de synchronisation. Si cet indicateur n’est pas défini, le minuteur est un minuteur de synchronisation.
 

Le bit d’indicateur EX_TIMER_NOTIFICATION peut être défini indépendamment des autres bits d’indicateur définis.

Les EX_TIMER_HIGH_RESOLUTION et EX_TIMER_NO_WAKE bits d’indicateur s’excluent mutuellement. Si l’appelant définit ces deux bits d’indicateur, les vérifications de bogues de routine.

Pour plus d’informations sur les attributs du minuteur, consultez Remarques.

Valeur de retour

Cette routine retourne un pointeur vers une structure EX_TIMER, si l’appel réussit. Cette structure est l’objet minuteur que la routine a alloué et initialisé. Si l’appel échoue, la routine retourne NULL.

Remarques

Cette routine retourne un pointeur vers le nouvel objet minuteur. Pour utiliser le minuteur, le pilote appelant fournit ce pointeur dans les appels suivants aux ExSetTimer, ExCancelTimeret routines exDeleteTimer. Si le pilote fournit un pointeur vers une routine de rappel ExTimerCallback en tant que paramètre d’entrée à la routine ExAllocateTimer, le système d’exploitation transmet cet objet minuteur en tant que paramètre d’entrée à la routine ExTimerCallback.

Un minuteur peut être un minuteur de notification ou un minuteur de synchronisation. Lorsqu’un minuteur de notification est signalé, tous les threads en attente sont satisfaits. L’état de ce minuteur reste signalé jusqu’à ce qu’il soit explicitement réinitialisé. Lorsqu’un minuteur de synchronisation expire, son état est défini sur signalé jusqu’à ce qu’un seul thread en attente soit libéré. Ensuite, le minuteur est réinitialisé à l’état non signalé.

Si le bit d’indicateur de EX_TIMER_HIGH_RESOLUTION est défini dans Attributs, le système d’exploitation augmente la résolution de l’horloge système, de sorte que les heures auxquelles le minuteur expire plus précisément correspond aux heures d’expiration nominales spécifiées dans le DueTime et paramètres Period à la routine ExSetTimer. Pour plus d’informations, consultez High-Resolution minuteurs.

Si le bit d’indicateur EX_TIMER_NO_WAKE est défini dans Attributs, le minuteur évite de réveiller inutilement le processeur d’un état à faible alimentation. Pour plus d’informations, consultez No-Wake minuteurs.

ExAllocateTimer alloue le stockage pour l’objet minuteur. Lorsque cet objet n’est plus nécessaire, l’appelant est chargé de libérer cet objet en appelant la routine ExDeleteTimer.

Le paramètre de rappel est facultatif. Un pilote qui ne fournit pas de routine ExTimerCallback peut à la place lancer une opération d’attente sur l’objet minuteur. Un thread de pilote peut appeler une routine telle que KeWaitForSingleObject ou KeWaitForMultipleObjects attendre l’expiration du minuteur. Lorsque le minuteur expire, l’objet minuteur est signalé.

Pour plus d’informations, consultez Routines ExXxxTimer et EX_TIMER Objects.

Exigences

Exigence Valeur
client minimum pris en charge Disponible à partir de Windows 8.1.
plateforme cible Universel
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
bibliothèque Ntoskrnl.lib
IRQL <= DISPATCH_LEVEL

Voir aussi

EX_TIMER

ExCancelTimer

ExDeleteTimer

ExSetTimer

ExTimerCallback