Compartilhar via


Macro NdisAcquireSpinLock (ndis.h)

A função NdisAcquireSpinLock adquire um bloqueio de rotação para que o chamador obtenha acesso exclusivo aos recursos, compartilhados entre as funções de driver, que o bloqueio de rotação protege.

Sintaxe

void NdisAcquireSpinLock(
  [in]  _SpinLock
);

Parâmetros

[in] _SpinLock

Ponteiro para um bloqueio de rotação opaco, já inicializado pelo chamador.

Retornar valor

Nenhum

Comentários

O driver deve inicializar uma variável do tipo NDIS_SPIN_LOCK com NdisAllocateSpinLock antes de chamar qualquer outra função NdisXxxSpinLock . O driver deve fornecer armazenamento residente para os bloqueios de rotação que usa.

Depois de adquirir um bloqueio de rotação com NdisAcquireSpinLock, o chamador deve liberar esse bloqueio com uma chamada para NdisReleaseSpinLock. Um driver deve chamar NdisReleaseSpinLock após cada chamada para NdisAcquireSpinLock. Caso contrário, ocorrerá um deadlock, pendurando o driver.

Um bloqueio de rotação adquirido com NdisAcquireSpinLock deve ser lançado com NdisReleaseSpinLock. Um bloqueio de rotação adquirido com NdisDprAcquireSpinLock deve ser lançado com NdisDprReleaseSpinLock.

Um driver nunca deve manter um bloqueio de rotação por um período estendido (mais do que algumas instruções). Manter um bloqueio de rotação por mais de 25 microssegundos degrada o desempenho do sistema e do driver.

Um driver de miniporta não pode usar um bloqueio de rotação para proteger os recursos que suas outras funções compartilham com o MiniportInterrupt e/ouFunções MiniportDisableInterruptEx. Em vez disso, um driver de miniporto deve chamar NdisMSynchronizeWithInterruptEx para que seu A função MiniportSynchronizeInterrupt acessa esses recursos compartilhados no mesmo DIRQL no qual seu
As funções MiniportInterrupt e/ou MiniportDisableInterruptEx fazem.

Para obter mais informações sobre como adquirir e liberar bloqueios de rotação do NDIS, consulte Sincronização e notificação em drivers de rede.

Requisitos

Requisito Valor
Cliente mínimo com suporte Com suporte para drivers NDIS 6.0 e NDIS 5.1 (consulte NdisAcquireSpinLock (NDIS 5.1)) no Windows Vista. Com suporte para drivers NDIS 5.1 (consulte NdisAcquireSpinLock (NDIS 5.1)) no Windows XP.
Plataforma de Destino Universal
Cabeçalho ndis.h (inclua Ndis.h)
Biblioteca Ndis.lib
IRQL <= DISPATCH_LEVEL
Regras de conformidade da DDI Irql_Synch_Function(ndis), SpinLock(ndis), SpinLockBalanced(ndis), SpinLockDpr(ndis), SpinLockDprRelease(ndis), SpinlockRelease(ndis)

Confira também

MiniportDisableInterruptEx

MiniportHaltEx

MiniportInitializeEx

MiniportInterrupt

MiniportSynchronizeInterrupt

NdisAllocateSpinLock

NdisDprAcquireSpinLock

NdisMSynchronizeWithInterruptEx

NdisReleaseSpinLock