Função InterlockedCompareExchangePointer (wdm.h)
A rotina InterlockedCompareExchangePointer executa uma operação atômica que compara o valor do ponteiro de entrada apontado por Destination com o valor de ponteiro Comperand.
Sintaxe
PVOID InterlockedCompareExchangePointer(
[in, out] PVOID volatile *Destination,
[in] PVOID Exchange,
[in] PVOID Comperand
);
Parâmetros
[in, out] Destination
Um ponteiro para um valor PVOID. Se (*Destino) = Comperand, a rotina definirá (*Destino) como Exchange.
[in] Exchange
Especifica o valor PVOID para o qual definir (*Destino).
[in] Comperand
Especifica o valor PVOID a ser comparado com (*Destino).
Retornar valor
InterlockedCompareExchangePointer retorna o valor original do ponteiro em *Destination (ou seja, o valor desse ponteiro na entrada para a rotina).
Comentários
Se Comperand for igual a *Destination, *Destination será definido como igual ao Exchange. Caso contrário, *O destino não será alterado.
InterlockedCompareExchangePointer fornece uma maneira rápida e atômica de sincronizar o teste e a atualização de uma variável de ponteiro que é compartilhada por vários threads. Se o valor de entrada apontado por Destination for igual ao valor de Comperand, o valor apontado por Destination será definido como o valor do Exchange.
InterlockedCompareExchangePointer foi projetado para velocidade e, normalmente, é implementado embutido por um compilador. InterlockedCompareExchangePointer é atômico apenas em relação a outras chamadas Xxx interlocked. Ele não usa um bloqueio de rotação e pode ser usado com segurança em dados pagináveis.
A rotina InterlockedCompareExchangePointer é atômica apenas em relação a outras chamadasXxx interlocked.
As operações interligadas não podem ser usadas na memória não armazenada em cache.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Disponível a partir do Windows 2000. |
Plataforma de Destino | Área de Trabalho |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h, Miniport.h) |
IRQL | Qualquer nível |