Partager via


ExInterlockedAddLargeInteger, fonction (wdm.h)

La routine ExInterlockedAddLargeInteger ajoute une valeur entière importante à la variable spécifiée en tant qu’opération atomique.

Syntaxe

LARGE_INTEGER ExInterlockedAddLargeInteger(
  [in, out] PLARGE_INTEGER Addend,
  [in]      LARGE_INTEGER  Increment,
  [in, out] PKSPIN_LOCK    Lock
);

Paramètres

[in, out] Addend

Pointeur vers la variable à ajuster par la valeur Incrémenter.

[in] Increment

Spécifie une valeur à ajouter à Addend .

[in, out] Lock

Pointeur vers un verrou de rotation à utiliser pour synchroniser l’accès à addend.

Valeur de retour

ExInterlockedAddLargeInteger retourne la valeur initiale du paramètre Addend .

Remarques

Les routines de support qui effectuent des opérations interblocées sont supposées être incapables d’entraîner une erreur de page. Autrement dit, ni leur code ni les données qu’ils touchent ne peuvent provoquer une erreur de page sans réduire le système. Ils utilisent des verrous de rotation pour obtenir l’atomicité sur les machines multiprocesseurs symétriques. L’appelant doit fournir un stockage résident pour le de verrouillage, qui doit être initialisé avec KeInitializeSpinLock avant l’appel initial à un ExInterlockedXxx.

Le Lock passé à ExInterlockedAddLargeInteger est utilisé pour garantir que l’opération d’ajout sur Addend est atomique par rapport aux autres opérations sur la même valeur qui se synchronisent avec ce même verrou de rotation.

ExInterlockedAddLargeInteger interrompt les masques. Par conséquent, il peut être utilisé pour la synchronisation entre un ISR et un autre code de pilote de périphérique, à condition que le même lock ne soit jamais réutilisé dans un appel à une routine qui s’exécute à IRQL = DISPATCH_LEVEL.

Notez que les appels à interblocageXxx sont assurés d’être atomiques par rapport à d’autres appels interblocésXxx sans verrous de rotation fournis par l’appelant.

Les appelants de ExInterlockedAddLargeInteger s’exécutent à n’importe quel irQL. Le stockage du paramètre Addend doit être résident à tous les IRQL.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows 2000 et versions ultérieures de Windows. Non disponible dans Windows 98 ou Windows Me.
plateforme cible Universel
d’en-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
bibliothèque NtosKrnl.lib
DLL NtosKrnl.exe
IRQL N’importe quel niveau (voir section Remarques)

Voir aussi

ExInterlockedAddUlong

InterlockedDecrement

interlockedIncrement

KeInitializeSpinLock