Fonction ExInterlockedAddLargeInteger (wdm.h)
La routine ExInterlockedAddLargeInteger ajoute une grande valeur entière à 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 retournée
ExInterlockedAddLargeInteger retourne la valeur initiale du paramètre Addend .
Remarques
Les routines de prise en charge qui effectuent des opérations verrouillées sont supposées être incapables de provoquer une erreur de page. Autrement dit, ni leur code ni aucune des données qu’ils touchent ne peuvent provoquer une erreur de page sans faire tomber 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 verrou, qui doit être initialisé avec KeInitializeSpinLock avant l’appel initial à un ExInterlockedXxx.
Le verrou passé à ExInterlockedAddLargeInteger est utilisé pour garantir que l’opération d’ajout sur Addend est atomique par rapport à toutes les autres opérations sur la même valeur qui se synchronisent avec ce même verrou de rotation.
Les masques ExInterlockedAddLargeInteger interrompent. 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 verrou ne soit jamais réutilisé dans un appel à une routine qui s’exécute à IRQL = DISPATCH_LEVEL.
Notez que les appels à Xxx verrouillé sont garantis pour être atomiques par rapport aux autres appels Xxx verrouillés sans verrous de rotation fournis par l’appelant.
Les appelants d’ExInterlockedAddLargeInteger s’exécutent à n’importe quel IRQL. Le stockage du paramètre Addend doit être résident à tous les IRQL.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible dans Windows 2000 et versions ultérieures de Windows. Non disponible dans Windows 98 ou Windows Me. |
Plateforme cible | Universal |
En-tête | wdm.h (inclure Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothèque | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | N’importe quel niveau (voir la section Remarques) |