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 Addend.

[in, out] Lock

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

Retornar valor

ExInterlockedAddLargeInteger retorna o valor inicial do parâmetro Addend .

Comentários

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 residente para o Lock, que deve ser inicializado com KeInitializeSpinLock antes da chamada inicial para um Xxx ExInterlocked.

O Bloqueio passado para ExInterlockedAddLargeInteger é usado para garantir que a operação de adição em Addend seja atômica em relação a quaisquer outras operações com o 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 Bloqueio nunca seja reutilizado em uma chamada para uma rotina executada em IRQL = DISPATCH_LEVEL.

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

Os chamadores de ExInterlockedAddLargeInteger são executados em qualquer IRQL. O armazenamento para o parâmetro Addend deve ser residente em todas as IRQLs.

Requisitos

Requisito Valor
Cliente mínimo com suporte Disponível no Windows 2000 e versões posteriores do Windows. Não disponível no Windows 98 ou no Windows Me.
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Qualquer nível (consulte a seção Comentários)

Confira também

ExInterlockedAddUlong

Interlockeddecrement

Interlockedincrement

KeInitializeSpinLock