Compartilhar via


Macro KeAcquireSpinLockAtDpcLevel (wdm.h)

A rotina KeAcquireSpinLockAtDpcLevel adquire um bloqueio de rotação quando o chamador já está em execução em IRQL >= DISPATCH_LEVEL.

Sintaxe

void KeAcquireSpinLockAtDpcLevel(
  [in, out] PKSPIN_LOCK SpinLock
);

Parâmetros

[in, out] SpinLock

Ponteiro para um KSPIN_LOCK bloqueio de rotação inicializado para o qual o chamador deve fornecer o armazenamento. O bloqueio de rotação deve ser do pool não paginado.

Retornar valor

Nenhum

Comentários

Os drivers chamam KeAcquireSpinLockAtDpcLevel em vez de KeAcquireSpinLock para melhorar o desempenho do driver se e somente se eles já estiverem em execução em um IRQL de DISPATCH_LEVEL ou superior.

Se um driver estiver em execução em IRQL <= APC_LEVEL, ele deverá chamar KeAcquireSpinLock para ter IRQL gerado por essa rotina. KeAcquireSpinLockAtDpcLevel pressupõe que o chamador já está em execução em IRQL >= DISPATCH_LEVEL, portanto, nenhum aumento é necessário.

O chamador deve liberar o bloqueio de rotação com KeReleaseSpinLockFromDpcLevel o mais rápido possível.

Para obter mais informações sobre bloqueios de rotação, consulte Spin Locks.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL Consulte a seção Observações.
Regras de conformidade da DDI HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

Confira também

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromDpcLevel

KeTryToAcquireSpinLockAtDpcLevel