Condividi tramite


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

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 Destination se il confronto restituisce l'uguaglianza.

Comperand

Puntatore a un numero intero con cui verrà confrontato il valore in Destination .

[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 di 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 rotazione, questa routine può essere utilizzata solo in modo sicuro su parametri non di pagina.

Se Destination e Comparand sono diversi, ExInterlockedCompareExchange64 restituisce semplicemente il valore destination.

ExInterlockedCompareExchange64 è atomico solo rispetto ad altre chiamate Xxx interlocked (Ex)InterlockedXxx .

I chiamanti di ExInterlockedCompareExchange64 possono essere in esecuzione in qualsiasi IRQL. Lo spazio di archiviazione per il parametro Destination, Comparand ed Exchange e le voci di elenco devono risiedere in tutti i file IRQL.

Requisiti

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)

Vedi anche

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd