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) |