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 |