Compartir a través de


Macro KeAcquireSpinLockAtDpcLevel (wdm.h)

La rutina KeAcquireSpinLockAtDpcLevel adquiere un bloqueo de número cuando el autor de la llamada ya se está ejecutando en IRQL >= DISPATCH_LEVEL.

Sintaxis

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

Parámetros

[in, out] SpinLock

Puntero a un bloqueo de número de KSPIN_LOCK inicializado para el que el autor de la llamada debe proporcionar el almacenamiento. El bloqueo de número debe ser del grupo no paginado.

Valor devuelto

None

Observaciones

Los controladores llaman a KeAcquireSpinLockAtDpcLevel en lugar de KeAcquireSpinLock para mejorar el rendimiento del controlador si y solo si ya se ejecutan en un IRQL de DISPATCH_LEVEL o superior.

Si un controlador se ejecuta en IRQL <= APC_LEVEL, debe llamar a KeAcquireSpinLock para que IRQL genere esa rutina. KeAcquireSpinLockAtDpcLevel supone que el autor de la llamada ya se está ejecutando en IRQL >= DISPATCH_LEVEL, por lo que no es necesario generar.

El autor de la llamada debe liberar el bloqueo de número con KeReleaseSpinLockFromDpcLevel lo antes posible.

Para obtener más información sobre los bloqueos de número, consulte Bloqueos de número.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL vea la sección Comentarios.
Reglas de cumplimiento de DDI HwStorPortProhibitedDDIs(storport), IrqlDispatch(storport), SpinLockSafe(storport)

Consulte también

KeAcquireInStackQueuedSpinLockAtDpcLevel

KeAcquireSpinLock

KeInitializeSpinLock

KeReleaseSpinLock

KeReleaseSpinLockFromdpcLevel

KeTryToAcquireSpinLockAtDpcLevel