Compartilhar via


Função KeAcquireInterruptSpinLock (wdm.h)

A rotina KeAcquireInterruptSpinLock adquire o bloqueio de rotação associado a um objeto de interrupção.

Sintaxe

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

Parâmetros

Interrupt

[in, out] Especifica um ponteiro para um objeto de interrupção. Esse valor deve ser fornecido por IoConnectInterrupt ou IoConnectInterruptEx.

Retornar valor

KeAcquireInterruptSpinLock retorna o IRQL atual no momento em que a rotina é chamada. Esse valor é passado para KeReleaseInterruptSpinLock quando o bloqueio de rotação é liberado.

Comentários

Os drivers usam o bloqueio de rotação de interrupção para sincronizar o acesso à memória compartilhada com o ISR da interrupção. O driver pode liberar o bloqueio de rotação chamando KeReleaseInterruptSpinLock.

Qualquer código executado enquanto o bloqueio de rotação de interrupção é mantido faz isso em IRQL = DIRQL para a Interrupção especificada, portanto, ele deve ser executado muito rapidamente. Para obter mais informações, consulte Usando seções críticas.

A maneira preferencial de sincronizar uma rotina de driver com um ISR é usar a rotina KeSynchronizeExecution .

Começando com Windows 8, um driver pode usar IoConnectInterruptEx para registrar uma rotina de serviço de interrupção executada em IRQL = PASSIVE_LEVEL e que não usa um bloqueio de rotação para sincronização de interrupção. Se Interrupt apontar para um objeto de interrupção que se conecta a um ISR de nível passivo, KeAcquireInterruptSpinLock causará um bug marcar. Para obter mais informações, consulte Usando Passive-Level rotinas de serviço de interrupção.

Os chamadores devem estar em execução em IRQL <= DIRQL para Interrupção. (Esse é o valor que o driver passou como o parâmetro SynchronizeIrql de IoConnectInterrupt quando Interrupt é criado.)

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP
Cabeçalho wdm.h
IRQL <= DIRQL
Regras de conformidade da DDI HwStorPortProhibitedDDIs(storport)

Confira também

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution