Compartilhar via


Macro NdisInterlockedAddUlong (ndis.h)

A função NdisInterlockedAddUlong adiciona um valor longo sem sinal a um determinado inteiro sem sinal como uma operação atômica, usando um bloqueio de rotação fornecido pelo chamador para sincronizar o acesso à variável de inteiro.

Sintaxe

void NdisInterlockedAddUlong(
  [in]  _Addend,
  [in]  _Increment,
  [in]  _SpinLock
);

Parâmetros

[in] _Addend

Um ponteiro para a variável para a qual o valor deve ser ajustado pelo incremento fornecido.

[in] _Increment

O valor a ser adicionado a esse em Addend .

[in] _SpinLock

Um ponteiro para um bloqueio de rotação inicializado pelo chamador.

Retornar valor

Nenhum

Comentários

O chamador de NdisInterlockedAddUlong deve fornecer armazenamento residente para o bloqueio de rotação, que deve ser inicializado com a função NdisAllocateSpinLock antes da chamada inicial para NdisInterlockedAddUlong.

O valor SpinLock passado para a função NdisInterlockedAddUlong é usado para garantir que a adição à variável no parâmetro Addend seja atômica em relação a quaisquer outras operações na mesma variável que sincronizam com o mesmo bloqueio de rotação.

NdisInterlockedAddUlong eleva o IRQL para DISPATCH_LEVEL quando ele adquire o bloqueio de rotação especificado e restaura o IRQL original antes de retornar o controle. Consequentemente, qualquer função de driver que chame NdisInterlockedAddUlong não pode ser um código paginável.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisInterlockedAddUlong (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisInterlockedAddUlong (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL Qualquer nível

Confira também

NdisAcquireSpinLock

NdisAllocateSpinLock

NdisReleaseSpinLock

NdisRetrieveUlong

NdisStoreUlong