Función KeAcquireInterruptSpinLock (wdm.h)

La rutina KeAcquireInterruptSpinLock adquiere el bloqueo de número asociado a un objeto de interrupción.

Sintaxis

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

Parámetros

Interrupt

[in, out] Especifica un puntero a un objeto de interrupción. IoConnectInterrupt o IoConnectInterruptEx deben proporcionar este valor.

Valor devuelto

KeAcquireInterruptSpinLock devuelve el IRQL actual en el momento en que se llama a la rutina. Este valor se pasa a KeReleaseInterruptSpinLock cuando se libera el bloqueo de número.

Comentarios

Los controladores usan el bloqueo de número de interrupción para sincronizar el acceso a la memoria compartida con el ISR de la interrupción. El controlador puede liberar el bloqueo de número llamando a KeReleaseInterruptSpinLock.

Cualquier código que se ejecute mientras se mantiene el bloqueo de número de interrupción lo hace en IRQL = DIRQL para la interrupción especificada, por lo que debe ejecutarse muy rápidamente. Para obtener más información, consulte Uso de secciones críticas.

La manera preferida de sincronizar una rutina de controlador con un ISR es usar la rutina KeSynchronizeExecution .

A partir de Windows 8, un controlador puede usar IoConnectInterruptEx para registrar una rutina de servicio de interrupción que se ejecuta en IRQL = PASSIVE_LEVEL y que no usa un bloqueo de número para la sincronización de interrupciones. Si Interrupt apunta a un objeto de interrupción que se conecta a un ISR de nivel pasivo, KeAcquireInterruptSpinLock provoca una comprobación de errores. Para obtener más información, consulte Uso de rutinas de servicio de interrupción de Passive-Level.

Los autores de llamadas deben ejecutarse en IRQL <= DIRQL para la interrupción. (Este es el valor que el controlador pasó como parámetro SynchronizeIrql de IoConnectInterrupt cuando se crea la interrupción ).

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP
Encabezado wdm.h
IRQL <= DIRQL
Reglas de cumplimiento de DDI HwStorPortProhibitedDDIs(storport)

Consulte también

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution