ExInterlockedAddUlong, fonction (wdm.h)
La routine ExInterlockedAddUlong ajoute une valeur longue non signée à un entier non signé donné en tant qu’opération atomique.
Syntaxe
ULONG ExInterlockedAddUlong(
[in, out] PULONG Addend,
[in] ULONG Increment,
[in, out] PKSPIN_LOCK Lock
);
Paramètres
[in, out] Addend
Pointeur vers un entier long non signé dont la valeur doit être ajustée par la valeur Incrémenter.
[in] Increment
Spécifie un entier long non signé à ajouter.
[in, out] Lock
Pointeur vers un verrou de rotation à utiliser pour synchroniser l’accès au Addend.
Valeur de retour
ExInterlockedAddUlong retourne la valeur d’origine (non énumérée) du Addend.
Remarques
Envisagez d’utiliser interlockedExchangeAdd au lieu de cette routine. interlockedExchangeAdd peut être plus efficace, car il n’utilise pas de verrou de rotation et il est inline par le compilateur.
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 de verrouillage passé à ExInterlockedAddULong 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.
ExInterlockedAddUlong interrompt les masques. Par conséquent, il peut être utilisé pour la synchronisation entre un ISR et un autre code de pilote, à 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 ExInterlockedAddUlong 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 à partir de Windows 2000. |
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) |