Condividi tramite


Funzione KeAcquireInterruptSpinLock (wdm.h)

La routine KeAcquireInterruptSpinLock acquisisce il blocco di spin associato a un oggetto interrupt.

Sintassi

KIRQL KeAcquireInterruptSpinLock(
  PKINTERRUPT Interrupt
);

Parametri

Interrupt

[in, out] Specifica un puntatore a un oggetto interrupt. Questo valore deve essere fornito da IoConnectInterrupt o IoConnectInterruptEx.

Valore restituito

KeAcquireInterruptSpinLock restituisce l'IRQL corrente al momento della chiamata alla routine. Questo valore viene passato a KeReleaseInterruptSpinLock quando viene rilasciato il blocco spin.

Commenti

I driver usano il blocco di spin di interruzione per sincronizzare l'accesso alla memoria condivisa con l'ISR dell'interruzione. Il driver può rilasciare il blocco di spin chiamando KeReleaseInterruptSpinLock.

Qualsiasi codice eseguito durante il blocco di spin di interruzione viene mantenuto in IRQL = DIRQL per l'interruzione specificato, quindi deve essere eseguito molto rapidamente. Per altre informazioni, vedere Uso di sezioni critiche.

Il modo preferito per sincronizzare una routine driver a un ISR consiste nell'usare la routine KeSynchronizeExecution .

A partire da Windows 8, un driver può usare IoConnectInterruptEx per registrare una routine di servizio di interruzione eseguita in IRQL = PASSIVE_LEVEL e che non usa un blocco spin per la sincronizzazione degli interruzioni. Se l'interruzione punta a un oggetto di interruzione che si connette a un ISR a livello passivo, KeAcquireInterruptSpinLock causa un controllo di bug. Per altre informazioni, vedere Uso di routine del servizio di interruzione Passive-Level.

I chiamanti devono essere in esecuzione in IRQL = DIRQL <per l'interruzione. Questo è il valore passato come parametro SyncIrql di IoConnectInterrupt quando viene creato l'interruzione .

Requisiti

Requisito Valore
Client minimo supportato Windows XP
Intestazione wdm.h
IRQL <= DIRQL
Regole di conformità DDI HwStorPortProhibitedDDDIs(storport)

Vedi anche

IoConnectInterrupt

KeReleaseInterruptSpinLock

KeSynchronizeExecution