Macro ExInterlockedCompareExchange64 (wdm.h)
La routine ExInterlockedCompareExchange64 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 de Destination sera comparée.
[in] Lock
Pointeur vers un verrouillage spin-lock alloué à l’appelant qui est utilisé si le système hôte ne prend pas en charge une opération de comparaison et d’échange atomique de 8 octets.
Valeur de retour
None
Remarques
Cette macro encapsule InterlockedCompareExchange64 ou ExfInterlockedCompareExchange64 et suppose la valeur de retour du type LONGLONG.
ExInterlockedCompareExchange64 teste et, éventuellement, remplace 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 des paramètres non paginés.
Si Destination et Comparand sont inégaux, ExInterlockedCompareExchange64 retourne simplement la valeur destination.
ExInterlockedCompareExchange64 est atomique uniquement par rapport aux autres appels Xxx (ex)interbloqués.
Les appelants d’ExInterlockedCompareExchange64 peuvent être en cours d’exécution sur n’importe quel IRQL. Le stockage du paramètre Destination, Comparand et Exchange et des entrées de liste doit être résident à tous les IRQL.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Disponible à partir de Windows 2000. |
Plateforme cible | Universal |
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 la section Remarques) |