Macro ExInterlockedCompareExchange64 (wdm.h)

La routine ExInterlockedCompareExchange64 confronta una variabile integer con un'altra e, se sono uguali, imposta la prima variabile su un valore fornito dal chiamante.

Sintassi

C++
void ExInterlockedCompareExchange64(
  [in, out]  Destination,
  [in]       Exchange,
             Comperand,
  [in]       Lock
);

Parametri

[in, out] Destination

Puntatore a un numero intero che verrà confrontato ed eventualmente sostituito.

[in] Exchange

Puntatore a un numero intero che sostituirà quello in corrispondenza di Destination se il confronto restituisce l'uguaglianza.

Comperand

Puntatore a un numero intero con cui verrà confrontato il valore in corrispondenza del destinazione.

[in] Lock

Puntatore a un blocco di selezione allocato dal chiamante utilizzato se il sistema host non supporta un'operazione atomica di confronto e scambio a 8 byte.

Valore restituito

Nessuno

Osservazioni

Questa macro esegue il wrapping InterlockedCompareExchange64 o ExfInterlockedCompareExchange64 e presuppone il valore restituito del tipo LONGLONG.

exInterlockedCompareExchange64 test e, possibilmente, sostituisce il valore di una determinata variabile. Per la maggior parte dei microprocessori sottostanti, questa routine viene implementata inline dal compilatore per l'esecuzione come operazione atomica. Se viene utilizzato un blocco di selezione, questa routine può essere utilizzata solo in modo sicuro su parametri non di pagina.

Se il di destinazione e comparand sono diversi, exInterlockedCompareExchange64 restituisce semplicemente il valore di Destination.

ExInterlockedCompareExchange64 è atomico solo rispetto ad altre chiamate (ad esempio) InterlockedXxx.

I chiamanti di ExInterlockedCompareExchange64 possono essere eseguiti in qualsiasi IRQL. Lo spazio di archiviazione per il parametro Destination, Comparand e parametro exchange e le voci dell'elenco devono essere residenti in tutti gli IRQL.

Fabbisogno

Requisito Valore
client minimo supportato Disponibile a partire da Windows 2000.
piattaforma di destinazione Universale
intestazione wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
libreria NtosKrnl.lib
dll NtosKrnl.exe
IRQL Qualsiasi livello (vedere la sezione Osservazioni)

Vedere anche

InterlockedCompareExchange

interlockedExchange

InterlockedExchangeAdd