Funzione InterlockedCompareExchangePointer (wdm.h)
La routine InterlockedCompareExchangePointer esegue un'operazione atomica che confronta il valore del puntatore di input a cui punta Destination con il valore del puntatore Comperand.
Sintassi
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Parametri
[in, out] Destination
Puntatore a un valore PVOID. Se (*Destination) = Comperand, la routine imposta (*Destination) su Exchange.
[in] Exchange
Specifica il valore PVOID su cui impostare (*Destination).
[in] Comperand
Specifica il valore PVOID da confrontare con (*Destination).
Valore restituito
InterlockedCompareExchangePointer restituisce il valore originale del puntatore in corrispondenza di *Destination , ovvero il valore di questo puntatore all'ingresso della routine.
Commenti
Se Comperand è uguale a *Destination, *Destination è impostato su Uguale a Exchange. In caso contrario, *Destination è invariato.
InterlockedCompareExchangePointer offre un modo rapido e atomico per sincronizzare il test e l'aggiornamento di una variabile puntatore condivisa da più thread. Se il valore di input a cui punta Destination è uguale al valore di Comperand, il valore a cui punta Destination viene 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 di paging.
La routine InterlockedCompareExchangePointer è atomica solo rispetto ad altre chiamate Xxx interlocked.
Le operazioni interlocked non possono essere usate nella memoria non memorizzata nella cache.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Disponibile a partire da Windows 2000. |
Piattaforma di destinazione | Desktop |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Qualsiasi livello |