Compartilhar via


Macro ExInterlockedCompareExchange64 (wdm.h)

A rotina ExInterlockedCompareExchange64 compara uma variável inteiro com outra e, se forem iguais, define a primeira variável como um valor fornecido pelo chamador.

Sintaxe

void ExInterlockedCompareExchange64(
  [in, out]  Destination,
  [in]       Exchange,
             Comperand,
  [in]       Lock
);

Parâmetros

[in, out] Destination

Um ponteiro para um inteiro que será comparado e possivelmente substituído.

[in] Exchange

Um ponteiro para um inteiro que substituirá o de destino se a comparação resultar em igualdade.

Comperand

Um ponteiro para um inteiro com o qual o valor em de Destino será comparado.

[in] Lock

Um ponteiro para um bloqueio de rotação alocado pelo chamador que será usado se o sistema host não oferecer suporte a uma operação de comparação e troca atômica de 8 bytes.

Valor de retorno

Nenhum

Observações

Essa macro encapsula InterlockedCompareExchange64 ou ExfInterlockedCompareExchange64 e assume o valor retornado do tipo LONGLONG.

testes ExInterlockedCompareExchange64 e, possivelmente, substitui o valor de uma determinada variável. Para a maioria dos microprocessadores subjacentes, essa rotina é implementada embutida pelo compilador a ser executada como uma operação atômica. Se um bloqueio de rotação for usado, essa rotina só poderá ser usada com segurança em parâmetros nãopagados.

Se os de Destino e Comparand forem diferentes, ExInterlockedCompareExchange64 simplesmente retornará o valor de Destination.

ExInterlockedCompareExchange64 é atômica apenas em relação a outras chamadas (Ex)InterlockedXxx.

Os chamadores de ExInterlockedCompareExchange64 podem ser executados em qualquer IRQL. O armazenamento para o parâmetro de Destino, Comparação e Exchange e as entradas de lista devem ser residentes em todos os IRQLs.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível a partir do Windows 2000.
da Plataforma de Destino Universal
cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca NtosKrnl.lib
de DLL NtosKrnl.exe
IRQL Qualquer nível (consulte a seção Comentários)

Consulte também

InterlockedCompareExchange

InterlockedExchange

InterlockedExchangeAdd