risorse di interrupt GPIO-Based
I driver per i dispositivi periferici che inviano interrupt ai pin di I/O per utilizzo generico acquisiscono interrupt GPIO come risorse di interrupt di Windows astratte. I driver del framework driver in modalità kernel (KMDF) e i driver UMDF (User-Mode Driver Framework) ricevono queste risorse tramite le funzioni di callback degli eventi EvtDevicePrepareHardware.
I driver di dispositivo periferici che usano risorse di interrupt basate su GPIO possono ignorare i dettagli di implementazione di basso livello, ad esempio se un interrupt viene generato da un pin GPIO anziché da un controller di interruzione o da un pin di interruzione su un chip del processore.
Un interrupt basato su GPIO è una risorsa di tipo CmResourceTypeInterrupt. I parametri di configurazione per questo interrupt sono contenuti nel membro u.Interrupt della struttura CM_PARTIAL_RESOURCE_DESCRIPTOR che descrive la risorsa interrupt. Per connettere una routine del servizio di interruzione (ISR) a un interrupt, un driver UMDF o KMDF fornisce sia le descrizioni non elaborate che tradotte della risorsa interrupt in un metodo di creazione di interrupt.
Il driver KMDF o UMDF per un dispositivo periferico chiama il metodo WdfInterruptCreate per connettere un ISR all'interrupt dal dispositivo. Uno dei parametri di input per questo metodo è un puntatore a una struttura WDF_INTERRUPT_CONFIG che contiene informazioni di configurazione per l'interrupt.
Se un driver di dispositivo periferico usa più di una risorsa di interrupt GPIO, questo driver deve essere a conoscenza dell'ordine in cui queste risorse vengono visualizzate negli elenchi di risorse non elaborate e tradotte fornite come parametri di input alla funzione EvtDevicePrepareHardware o al metodo OnPrepareHardware . Le risorse in questi elenchi vengono visualizzate nell'ordine in cui sono descritte nel firmware della piattaforma, che deve corrispondere all'ordine previsto dal driver.