Partager via


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)

Voir aussi

InterlockedCompareExchange

interlockedExchange

interlockedExchangeAdd