Condividi tramite


Funzione InterlockedCompareExchangePointer (miniport.h)

La routine InterlockedCompareExchangePointer esegue un'operazione atomica che confronta il valore del puntatore di input puntato da Destination con il valore del puntatore Comparand.

Sintassi

PVOID InterlockedCompareExchangePointer(
  [in, out] PVOID volatile *Destination,
  [in]      PVOID          Exchange,
            PVOID          Comperand
);

Parametri

[in, out] Destination

Puntatore a un valore PVOID. Se (*Destinazione) = Comparand, la routine imposta (*Destinazione) su Exchange.

[in] Exchange

Specifica il valore PVOID su cui impostare (*Destinazione).

Comperand

Specifica il valore PVOID da confrontare con (**Destination*).

Valore restituito

InterlockedCompareExchangePointer restituisce il valore originale del puntatore in *Destination , ovvero il valore di questo puntatore all'ingresso della routine.

Commenti

Se Comparand è uguale a *Destinazione, *Destination è impostato su Uguale a Exchange. In caso contrario, *Destination è invariato.

InterlockedCompareExchangePointer offre un modo atomico veloce per sincronizzare i test e l'aggiornamento di una variabile puntatore condivisa da più thread. Se il valore di input puntato da Destination è uguale al valore di Comparand, il valore a cui fa riferimento destinazione è impostato sul valore di Exchange.

InterlockedCompareExchangePointer è progettato per la velocità e, in genere, viene implementato inline da un compilatore. InterlockedCompareExchangePointer è atomico solo rispetto ad altre chiamate Xxx interlocked. Non usa un blocco di rotazione e può essere usato in modo sicuro nei dati paginabili.

La routine InterlockedCompareExchangePointer è atomica solo rispetto ad altre chiamate Xxx interlocked.

Le operazioni interlocked non possono essere usate in memoria non memorizzata nella cache.

Requisiti

Requisito Valore
Client minimo supportato Disponibile a partire da Windows 2000.
Piattaforma di destinazione Desktop
Intestazione miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
IRQL Qualsiasi livello

Vedi anche

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer