Función InterlockedCompareExchangePointer (wdm.h)
La rutina interlockedCompareExchangePointer realiza una operación atómica que compara el valor del puntero de entrada al que apunta destino con el valor de puntero Comperand.
Sintaxis
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Parámetros
[in, out] Destination
Puntero a un valor PVOID. Si (*Destination) = Comperand, la rutina establece (*Destination) en Exchange.
[in] Exchange
Especifica el valor PVOID en el que se va a establecer (*Destino).
[in] Comperand
Especifica el valor PVOID que se va a comparar con (*Destination).
Valor devuelto
InterlockedCompareExchangePointer devuelve el valor original del puntero en *Destino (es decir, el valor de este puntero en la entrada a la rutina).
Observaciones
Si Comperand es igual a *Destino, * destination se establece en igual Exchange. De lo contrario, * de destino no cambia.
interlockedCompareExchangePointer proporciona una manera rápida y atómica 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 Destino es igual al valor de Comperand, el valor al que apunta Destino se establece en el valor de Exchange.
interlockedCompareExchangePointer está diseñado para velocidad y, normalmente, un compilador implementa en línea. InterlockedCompareExchangePointer es atómica solo con respecto a otras llamadas de interbloqueadasXxx. No usa un bloqueo de número y se puede usar de forma segura en datos paginables.
La rutina de InterlockedCompareExchangePointer solo es atómica con respecto a otras llamadas de interbloqueadasXxx.
Las operaciones interbloqueadas no se pueden usar en memoria no almacenada en caché.
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Disponible a partir de Windows 2000. |
de la plataforma de destino de | Escritorio |
encabezado de | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
irQL | Cualquier nivel |