Condividi tramite


Funzione InterlockedExchangePointer (miniport.h)

La routine InterlockedExchangePointer esegue un'operazione atomica che imposta un puntatore su un nuovo valore.

Sintassi

PVOID InterlockedExchangePointer(
  [in, out]      PVOID volatile *Target,
  [in, optional] PVOID          Value
);

Parametri

[in, out] Target

Puntatore a un valore PVOID. La routine imposta (*Target) su Value.

[in, optional] Value

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

Valore restituito

InterlockedExchangePointer restituisce il valore originale del puntatore in corrispondenza di *Target , ovvero il valore di questo puntatore all'ingresso alla routine.

Commenti

InterlockedExchangePointer offre un modo rapido e atomico per sincronizzare l'aggiornamento di una variabile puntatore condivisa da più thread.

InterlockedExchangePointer è progettato per la velocità e, in genere, viene implementato inline da un compilatore. InterlockedExchangePointer è 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.

Il parametro Target deve essere allineato su un limite a 32 bit o a 64 bit, a seconda del tipo di sistema, per ottenere prestazioni migliori.

Una chiamata a InterlockedExchangePointer è 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 miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
IRQL Qualsiasi livello

Vedi anche

InterlockedCompareExchange

InterlockedCompareExchangePointer

InterlockedExchange