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