Macro KeAcquireSpinLockAtDpcLevel (wdm.h)
A rotina KeAcquireSpinLockAtDpcLevel adquire um bloqueio de rotação quando o chamador já está em execução no 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.
Valor de retorno
Nenhum
Observações
Os motoristas 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 no IRQL <= APC_LEVEL, ele deverá chamar KeAcquireSpinLock ter IRQL gerado por essa rotina. KeAcquireSpinLockAtDpcLevel pressupõe que o chamador já esteja em execução no 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 |
---|---|
da Plataforma de Destino | Universal |
cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
biblioteca | NtosKrnl.lib |
de DLL | NtosKrnl.exe |
IRQL | Consulte a seção Comentários. |
regras de conformidade de DDI | HwStorPortProhibitedDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport) |