Compartir a través de


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

[dentro, fuera] Especifica un puntero a un objeto de interrupción. Este valor debe proporcionarse mediante IoConnectInterrupt o IoConnectInterruptEx.

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.

Observaciones

Los controladores usan el bloqueo de giro 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 giro 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 el de interrupción especificado, 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 de 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 interrupción 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 Using Passive-Level Interrupt Service Routines (Uso de rutinas de servicio de interrupción de Passive-Level).

Los llamadores deben ejecutarse en IRQL <= DIRQL para interrupción. (Este es el valor que el controlador ha pasado como parámetro synchronizeIrql de IoConnectInterrupt cuando se crea interrupción).

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP
encabezado de wdm.h
irQL <= DIRQL
reglas de cumplimiento de DDI HwStorPortProhibitedDIs(storport)

Consulte también

ioConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution