Compartilhar via


Função ExInterlockedAddLargeInteger (wdm.h)

A rotina ExInterlockedAddLargeInteger adiciona um valor inteiro grande à variável especificada como uma operação atômica.

Sintaxe

LARGE_INTEGER ExInterlockedAddLargeInteger(
  [in, out] PLARGE_INTEGER Addend,
  [in]      LARGE_INTEGER  Increment,
  [in, out] PKSPIN_LOCK    Lock
);

Parâmetros

[in, out] Addend

Um ponteiro para a variável a ser ajustada pelo valor incremento.

[in] Increment

Especifica um valor a ser adicionado a de Complemento.

[in, out] Lock

Um ponteiro para um bloqueio de rotação a ser usado para sincronizar o acesso a Addend.

Valor de retorno

ExInterlockedAddLargeInteger retorna o valor inicial do parâmetro Addend.

Observações

As rotinas de suporte que fazem operações interligadas são consideradas incapazes de causar uma falha de página. Ou seja, nem o código nem os dados que eles tocam podem causar uma falha de página sem derrubar o sistema. Eles usam bloqueios de rotação para obter atomicidade em computadores multiprocessadores simétricos. O chamador deve fornecer armazenamento de residente para o de Bloqueio, que deve ser inicializado com KeInitializeSpinLock antes da chamada inicial para um ExInterlockedXxx.

O de Bloqueio passado para ExInterlockedAddLargeInteger é usado para garantir que a operação de adição em de Complemento seja atômica em relação a quaisquer outras operações no mesmo valor que sincronizam com esse mesmo bloqueio de rotação.

exInterlockedAddLargeInteger mascara interrupções. Consequentemente, ele pode ser usado para sincronização entre um ISR e outro código de driver de dispositivo, desde que o mesmo Lock nunca seja reutilizado em uma chamada para uma rotina executada em IRQL = DISPATCH_LEVEL.

Observe que as chamadas para Xxx intertravadas têm a garantia de serem atômicas em relação a outras chamadas Xxx sem bloqueios de rotação fornecidos pelo chamador.

Os chamadores de ExInterlockedAddLargeInteger executados em qualquer IRQL. O armazenamento do parâmetro Addend deve ser residente em todos os IRQLs.

Requisitos

Requisito Valor
de cliente com suporte mínimo Disponível no Windows 2000 e versões posteriores do Windows. Não disponível no Windows 98 ou no Windows Me.
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

ExInterlockedAddUlong

InterlockedDecrement

InterlockedIncrement

KeInitializeSpinLock