Función InterlockedCompareExchange (miniport.h)

La rutina InterlockedCompareExchange realiza una operación atómica que compara el valor de entrada al que apunta Destination con el valor de Comparand.

Sintaxis

LONG InterlockedCompareExchange(
  [in, out] LONG volatile *Destination,
            LONG          ExChange,
            LONG          Comperand
);

Parámetros

[in, out] Destination

Puntero al valor de entrada que se compara con el valor de Comparand.

ExChange

Especifica el valor de salida al que apunta Destination si el valor de entrada al que apunta Destination es igual al valor de Comparand.

Comperand

Especifica el valor que se compara con el valor de entrada al que apunta Destination.

Valor devuelto

InterlockedCompareExchange devuelve el valor original de *Destination.

Comentarios

Si Comparand es igual a *Destination, *Destination se establece en igual a Exchange. De lo contrario, *Destination no cambia.

InterlockedCompareExchange proporciona una manera atómica y rápida de sincronizar las pruebas y la actualización de una variable compartida por varios subprocesos. Si el valor de entrada al que apunta Destination es igual al valor de Comparand, el valor de salida de Destination se establece en el valor de Exchange.

InterlockedCompareExchange está diseñado para la velocidad y, normalmente, se implementa en línea mediante un compilador. InterlockedCompareExchange solo es atómica con respecto a otras llamadas Xxx interbloqueadas. No usa un bloqueo de número y se puede usar de forma segura en datos paginables.

Las operaciones interbloqueadas no se pueden usar en memoria no almacenada en caché.

Requisitos

Requisito Value
Cliente mínimo compatible Disponible a partir de Windows 2000.
Plataforma de destino Universal
Encabezado miniport.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
Library OneCoreUAP.lib en Windows 10
IRQL Cualquier nivel

Consulte también

ExInterlockedCompareExchange64

InterlockedCompareExchangePointer

InterlockedDecrement

InterlockedExchange

InterlockedExchangePointer

InterlockedIncrement