Funzione WdfInterruptSynchronize (wdfinterrupt.h)
[Si applica a KMDF e UMDF]
Il metodo WdfInterruptSynchronize esegue una funzione di callback specificata nel DIRQL del dispositivo mantenendo il blocco di selezione 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 un EvtInterruptSynchronize funzione di callback.
[in] Context
Puntatore non tipizzato alle informazioni fornite dal driver che il framework passa al EvtInterruptSynchronize funzione di callback.
Valore restituito
WdfInterruptSynchronize restituisce il valore di stato booleano restituito dal EvtInterruptSynchronize funzione di callback.
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Osservazioni:
Se si vuole che il driver esegua codice che deve essere eseguito senza essere superato e con la manutenzione degli interrupt del dispositivo disabilitati in modo efficace, è necessario inserire tale codice in un EvtInterruptSynchronize funzione di callback. Per pianificare l'esecuzione della funzione di callback, il driver deve chiamare WdfInterruptSynchronize.
Il metodo WdfInterruptSynchronize restituisce dopo il completamento dell'esecuzione della EvtInterruptSynchronize funzione di callback.
Anziché chiamare WdfInterruptSynchronize, il driver può chiamare WdfInterruptAcquireLock e WdfInterruptReleaseLock.
Per altre informazioni sul metodo WdfInterruptSynchronize, vedere Sincronizzazione del codice interrupt.
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 .
Esempi
Nell'esempio di codice seguente viene illustrato come chiamare WdfInterruptSynchronize per pianificare l'esecuzione di un EvtInterruptSynchronize funzione di callback.
BOOLEAN synchronizeReturnValue;
synchronizeReturnValue = WdfInterruptSynchronize(
WdfInterrupt,
MyEvtInterruptSynchronize,
CallbackContext
);
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | wdfinterrupt.h (include Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DISPATCH_LEVEL |
regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |