Función InterlockedCompareExchangePointer (miniport.h)

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

Sintaxis

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

Parámetros

[in, out] Destination

Puntero a un valor PVOID. Si (*Destination) = Comparand, la rutina establece (*Destination) en Exchange.

[in] Exchange

Especifica el valor PVOID en el que se va a establecer (*Destino).

Comperand

Especifica el valor PVOID que se va a comparar con (**Destination*).

Valor devuelto

InterlockedCompareExchangePointer devuelve el valor original del puntero en *Destination (es decir, el valor de este puntero en la entrada a la rutina).

Comentarios

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

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

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

La rutina InterlockedCompareExchangePointer solo es atómica con respecto a otras llamadas Xxx interbloqueadas.

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 Escritorio
Encabezado miniport.h (incluya Wdm.h, Ntddk.h, Ntifs.h, Miniport.h)
IRQL Cualquier nivel

Consulte también

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangePointer