Macro ExInterlockedCompareExchange64 (wdm.h)
La routine ExInterlockedCompareExchange6 4 compare une variable entière à une autre et, si elles sont égales, définit la première variable sur une valeur fournie par l’appelant.
Syntaxe
void ExInterlockedCompareExchange64(
[in, out] Destination,
[in] Exchange,
Comperand,
[in] Lock
);
Paramètres
[in, out] Destination
Pointeur vers un entier qui sera comparé et éventuellement remplacé.
[in] Exchange
Pointeur vers un entier qui remplacera celui de Destination si la comparaison aboutit à l’égalité.
Comperand
Pointeur vers un entier avec lequel la valeur à Destination sera comparée.
[in] Lock
Pointeur vers un verrou spin-lock alloué par l’appelant qui est utilisé si le système hôte ne prend pas en charge une opération de comparaison et d’échange atomiques de 8 octets.
Valeur de retour
Aucun
Remarques
Cette macro encapsule InterlockedCompareExchange64 ou ExfInterlockedCompareExchange64 et suppose la valeur de retour du type LONGLONG.
ExInterlockedCompareExchange64 tests et remplace éventuellement la valeur d’une variable donnée. Pour la plupart des microprocesseurs sous-jacents, cette routine est implémentée inline par le compilateur pour s’exécuter en tant qu’opération atomique. Si un verrou de rotation est utilisé, cette routine ne peut être utilisée en toute sécurité que sur les paramètres non paginés.
Si le destination et Comparand sont inégaux, ExInterlockedCompareExchange64 retourne simplement la valeur du destination.
ExInterlockedCompareExchange64 n’est atomique que par rapport aux autres appels (Ex)InterlockedXxx.
Les appelants de ExInterlockedCompareExchange64 peuvent s’exécuter à n’importe quel runtime IRQL. Le stockage du paramètre Destination, Comparand et Exchange et les entrées de liste doivent être résidentes à 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) |