Condividi tramite


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)

Vedi anche

EvtInterruptSynchronize

WdfInterruptAcquireLock

WdfInterruptReleaseLock