Creazione di un oggetto Interrupt (UMDF 1)
Avviso
UMDF 2 è la versione più recente di UMDF e sostituisce UMDF 1. Tutti i nuovi driver UMDF devono essere scritti usando UMDF 2. Nessuna nuova funzionalità viene aggiunta 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.
Gli esempi di UMDF 1 archiviati sono disponibili nell'Windows 11, versione 22H2 - Aggiornamento degli esempi di driver di maggio 2022.
Per altre informazioni, vedere Introduzione con UMDF.
Un driver UMDF che gestisce gli interruzioni hardware di un dispositivo deve creare un oggetto di interruzione del framework per ogni interruzione che ogni dispositivo può supportare.
In genere, un driver crea oggetti di interruzione del framework in IDriverEntry::OnDeviceAdd. È tuttavia possibile creare oggetti di interruzione in IPnpCallbackHardware2::OnPrepareHardware.
Per creare un oggetto interrupt del framework, il driver deve inizializzare una struttura WUDF_INTERRUPT_CONFIG e passarla al metodo IWDFDevice3::CreateInterrupt . Questo metodo registra le funzioni di callback degli eventi fornite dal driver seguenti:
OnInterruptEnable
Abilita un interruzione hardware.
OnInterruptDisable
Disabilita un interruzione hardware.
OnInterruptIsr
Routine del servizio di interruzione (ISR) per l'interruzione.
OnInterruptWorkItem
Routine di lavoro per l'interruzione.
Facoltativamente, il driver può chiamare IWDFInterrupt::SetPolicy o IWDFInterrupt::SetExtendedPolicy per specificare parametri di interruzione aggiuntivi.
Il framework chiama la funzione IDriverEntry::OnDeviceAdd callback prima che il gestore Plug and Play (PnP) abbia assegnato risorse di sistema, ad esempio vettori di interruzione, al dispositivo. Dopo l'assegnazione delle risorse da parte di Gestione PnP, il framework archivia le risorse di interruzione nell'oggetto di interruzione del dispositivo. I driver che non supportano Plug and Play non possono usare oggetti di interruzione.
Le interruzioni segnalate dal messaggio (MSI) sono supportate in Windows Vista e versioni successive del sistema operativo. Per abilitare il sistema operativo per supportare msi per il dispositivo, il file INF del driver deve impostare alcuni valori nel Registro di sistema. Per informazioni su come impostare questi valori, vedere Abilitazione di interruzioni Message-Signaled nel Registro di sistema.
Se un dispositivo può supportare un determinato numero di messaggi msi, la gestione PnP tenterà di assegnare tale numero di messaggi al dispositivo. Se il gestore PnP non può assegnare tutti i messaggi che il dispositivo può supportare, assegna un solo messaggio al dispositivo.
Il driver deve creare un oggetto di interruzione del framework per ogni vettore di interruzione o messaggio MSI che il dispositivo può supportare. Se il gestore PnP non concede al dispositivo tutte le risorse di interruzione che il dispositivo può supportare, gli oggetti di interruzione aggiuntivi non verranno usati e le relative funzioni di callback non verranno chiamate.