Condividi tramite


WUDF_INTERRUPT_ISR funzione di callback (wudfinterrupt.h)

Avvertimento

UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Non vengono aggiunte nuove funzionalità a UMDF 1 ed è disponibile un supporto limitato per UMDF 1 nelle versioni più recenti di Windows 10. I driver di Windows universali devono usare UMDF 2. Per altre informazioni, vedere Introduzione a UMDF.

La funzione di callback di un driver OnInterruptIsr servizio un interrupt hardware.

Sintassi

typedef
BOOLEAN
_Function_class_(WUDF_INTERRUPT_ISR)
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

Parametri

[in] Interrupt

Puntatore all'interfaccia IWDFInterrupt.

[in] MessageID

Se il dispositivo usa interrupt con segnalazione messaggio (MSI), questo parametro è il numero di messaggio che identifica il messaggio di interruzione hardware del dispositivo. In caso contrario, questo valore è 0.

[in] Reserved

Riservato per l'uso del sistema.

Valore restituito

Nessuno

Osservazioni

Restituisce TRUE se il driver riconosce la proprietà dell'interrupt e ha arrestato e riconosciuto l'interrupt nel dispositivo. In caso contrario, restituisce FALSE.

Per registrare un OnInterruptIsr funzione di callback, il driver deve inserire l'indirizzo della funzione di callback in una struttura di WUDF_INTERRUPT_CONFIG prima di chiamare IWDFDevice3::CreateInterrupt.

La OnInterruptIsr funzione di callback è una routine del servizio di interrupt del driver UMDF (ISR), chiamata in PASSIVE_LEVEL quando si verifica un interrupt hardware.

Per un interrupt attivato da edge o un interrupt segnalato dal messaggio , il framework chiama OnInterruptIsr all'esterno del contesto di invio interrupt del sistema operativo. Ciò è dovuto al fatto che UMDF consente solo interruzioni non condivise attivate da edge o MSI e il driver non deve interagire con l'hardware all'interno di questo contesto.

Per un interrupt attivato a livello, il framework chiama OnInterruptIsr nel contesto dell'invio di interrupt del sistema operativo. Di conseguenza, il thread di invio interrupt del sistema operativo viene bloccato in modalità kernel in attesa di una risposta dal driver.

In genere, OnInterruptIsr salva tutte le informazioni volatili che potrebbero essere perse e cancellano l'interrupt hardware. Per un interrupt attivato a livello, il driver deve arrestare e confermare l'interrupt nel dispositivo e quindi restituire TRUE se è proprietario dell'interrupt. Il driver deve eseguire ulteriori elaborazioni in un OnInterruptWorkItem callback. Per accodare un elemento di lavoro, il driver chiama il metodo IWDFInterrupt::QueueWorkItemForIsr.

Per altre informazioni sulla gestione degli interrupt nei driver UMDF, vedere Accesso all'hardware e alla gestione degli interrupt.

Esempi

Il tipo di funzione viene dichiarato in Wudfinterrupt.h, come indicato di seguito.

typedef
BOOLEAN
WUDF_INTERRUPT_ISR(
    _In_
    IWDFInterrupt* Interrupt,
    _In_
    ULONG MessageID,
    _In_
    ULONG Reserved
    );

typedef WUDF_INTERRUPT_ISR *PFN_WUDF_INTERRUPT_ISR;

Per definire un OnInterruptIsr funzione di callback denominata MyInterruptIsr, è prima necessario fornire una dichiarazione di funzione richiesta da SDV e altri strumenti di verifica, come indicato di seguito:

WUDF_INTERRUPT_NOTIFY  MyInterruptIsr;

Implementare quindi la funzione di callback come segue:

BOOLEAN
  MyInterruptIsr (
    IN IWDFInterrupt*  Interrupt,
    IN ULONG  MessageID,
    IN ULONG Reserved
    )
  {…}

Fabbisogno

Requisito Valore
Fine del supporto Non disponibile in UMDF 2.0 e versioni successive.
piattaforma di destinazione Desktop
versione minima di UMDF 1.11
intestazione wudfinterrupt.h

Vedere anche