Funzione KeAcquireInterruptSpinLock (wdm.h)
La routine KeAcquireInterruptSpinLock acquisisce il blocco di selezione 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 della routine. Questo valore viene passato a KeReleaseInterruptSpinLock quando viene rilasciato il blocco di selezione.
Osservazioni
I driver usano il blocco di selezione interrupt per sincronizzare l'accesso alla memoria condivisa con l'ISR dell'interrupt. Il driver può rilasciare il blocco di selezione chiamando KeReleaseInterruptSpinLock.
Qualsiasi codice eseguito mentre il blocco di spin interrupt viene mantenuto in IRQL = DIRQL per l'interrupt specificato, quindi deve essere eseguito molto rapidamente. Per altre informazioni, vedere Uso di sezioni critiche.
Il modo preferito per sincronizzare una routine del driver con un ISR consiste nell'usare la routinekesynchronizeExecution.
A partire da Windows 8, un driver può usare IoConnectInterruptEx per registrare una routine del servizio interrupt eseguita in IRQL = PASSIVE_LEVEL e che non usa un blocco di selezione per la sincronizzazione degli interrupt. Se interrupt punta a un oggetto interrupt che si connette a un ISR a livello passivo, KeAcquireInterruptSpinLock causa un controllo dei bug. Per altre informazioni, vedere Using Passive-Level Interrupt Service Routines.
I chiamanti devono essere in esecuzione in IRQL <= DIRQL per Interrupt. Questo è il valore passato come parametro SynchronizeIrql di IoConnectInterrupt quando viene creato Interrupt.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP |
intestazione | wdm.h |
IRQL | <= DIRQL |
regole di conformità DDI | HwStorPortProhibitedDDIs(storport) |