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

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

Valor de retorno

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

Observações

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 o de interrupção deespecificado, portanto, ele deve ser executado muito rapidamente. Para obter mais informações, consulte Usando seções críticas.

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

A partir do 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 Interromper apontar para um objeto de interrupção que se conecta a um ISR de nível passivo, KeAcquireInterruptSpinLock causará uma verificação de bug. Para obter mais informações, consulte Usando rotinas de serviço de interrupção de Passive-Level.

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

Requisitos

Requisito Valor
de cliente com suporte mínimo Windows XP
cabeçalho wdm.h
IRQL <= DIRQL
regras de conformidade de DDI HwStorPortProhibitedDIs(storport)

Consulte também

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution