Partager via


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)

Voir aussi

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd