Funzione WdfInterruptSynchronize (wdfinterrupt.h)
[Si applica a KMDF e UMDF]
Il metodo WdfInterruptSynchronize esegue una funzione di callback specificata nel DIRQL del dispositivo tenendo premuto il blocco spin di un oggetto interrupt.
Per gli oggetti interrupt a livello passivo, questo metodo esegue una funzione di callback specificata a livello passivo mantenendo il blocco di interrupt a livello passivo di un oggetto interrupt.
Sintassi
BOOLEAN WdfInterruptSynchronize(
[in] WDFINTERRUPT Interrupt,
[in] PFN_WDF_INTERRUPT_SYNCHRONIZE Callback,
[in] WDFCONTEXT Context
);
Parametri
[in] Interrupt
Handle per un oggetto interrupt del framework.
[in] Callback
Puntatore a una funzione di callback EvtInterruptSynchronize .
[in] Context
Puntatore non tipizzato alle informazioni fornite dal driver che il framework passa alla funzione di callback EvtInterruptSynchronize .
Valore restituito
WdfInterruptSynchronize restituisce il valore di stato booleano restituito dalla funzione di callback EvtInterruptSynchronize .
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Commenti
Se si vuole che il driver esegua codice che deve essere eseguito senza essere preceduto e con la manutenzione degli interrupt del dispositivo disabilitati in modo efficace, è necessario inserire tale codice in una funzione di callback EvtInterruptSynchronize . Per pianificare l'esecuzione della funzione di callback, il driver deve chiamare WdfInterruptSynchronize.
Il metodo WdfInterruptSynchronize viene restituito al termine dell'esecuzione della funzione di callback EvtInterruptSynchronize .
Anziché chiamare WdfInterruptSynchronize, il driver può chiamare WdfInterruptAcquireLock e WdfInterruptReleaseLock.
Per altre informazioni sul metodo WdfInterruptSynchronize, vedere Synchronizing Interrupt Code.For more information about the WdfInterruptSynchronize method, see Synchronizing Interrupt Code.
Per altre informazioni sulla gestione degli interrupt nei driver basati su framework, vedere Gestione degli interrupt hardware.
Per gli interrupt a livello passivo, il driver deve chiamare WdfInterruptSynchronize in IRQL = PASSIVE_LEVEL.
Non chiamare WdfInterruptSynchronize da un contesto di thread arbitrario, ad esempio un gestore di richieste.
Esempio
Nell'esempio di codice seguente viene illustrato come chiamare WdfInterruptSynchronize per pianificare l'esecuzione di una funzione di callback EvtInterruptSynchronize .
BOOLEAN synchronizeReturnValue;
synchronizeReturnValue = WdfInterruptSynchronize(
WdfInterrupt,
MyEvtInterruptSynchronize,
CallbackContext
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
Versione KMDF minima | 1.0 |
Versione UMDF minima | 2,0 |
Intestazione | wdfinterrupt.h (include Wdf.h) |
Libreria | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |