Metodo IWDFDevice3::CreateInterrupt (wudfddi.h)
[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. Per altre informazioni, vedere Introduzione con UMDF.]
Il metodo CreateInterrupt crea un oggetto di interruzione del framework.
Sintassi
HRESULT CreateInterrupt(
[in] PWUDF_INTERRUPT_CONFIG Configuration,
[out] IWDFInterrupt **ppInterrupt
);
Parametri
[in] Configuration
Puntatore a una struttura WUDF_INTERRUPT_CONFIG inizializzata da una chiamata alla macro WUDF_INTERRUPT_CONFIG_INIT .
[out] ppInterrupt
Puntatore a un buffer che riceve un puntatore all'interfaccia IWDFInterrupt per il nuovo oggetto interrupt.
Valore restituito
Il metodo restituisce S_OK se l'operazione ha esito positivo. In caso contrario, questo metodo restituisce uno dei codici di errore definiti in Winerror.h.
Commenti
Il driver deve chiamare CreateInterrupt una volta per ogni vettore di interruzione richiesto dal dispositivo. Se il dispositivo supporta interruzioni segnalate dai messaggi, il driver deve creare un oggetto di interruzione per ogni messaggio che il dispositivo può supportare.
I driver chiamano in genere il metodo CreateInterrupt da una funzione di callback OnDeviceAdd , ma possono anche chiamare questo metodo da IPnpCallbackHardware2::OnPrepareHardware.
Dopo che il gestore Plug and Play (PnP) assegna le risorse di sistema al dispositivo, il framework archivia le informazioni sulle risorse di interruzione assegnate del dispositivo negli oggetti di interruzione creati dal driver. I driver che non supportano Plug and Play non possono usare oggetti di interruzione.
Il sistema potrebbe non assegnare tutte le risorse di interruzione che un dispositivo può supportare. Ad esempio, un driver crea otto oggetti di interruzione per un dispositivo in grado di supportare otto messaggi MSI. Tuttavia, il sistema potrebbe assegnare un solo messaggio al dispositivo. In questo caso, sette degli oggetti di interruzione verranno inutilizzati.
In genere, il driver deve archiviare informazioni specifiche dell'interruzione, ad esempio il contenuto copiato dei registri di interruzione del dispositivo, nello spazio di contesto dell'oggetto interrupt. Un driver chiama IWDFObject::AssignContext per registrare un contesto e richiedere la notifica quando l'oggetto diventa non valido.
UMDF supporta gli interruzioni attivati a livello a partire da Windows 8. Se un driver in esecuzione in un sistema operativo precedente a Windows 8 crea un interruzione attivata a livello in OnDeviceAdd, CreateInterrupt riesce perché il sistema operativo non ha ancora assegnato risorse. Tuttavia, quando il framework tenta di connettere l'interruzione in un secondo momento, il dispositivo non viene avviato.
Per altre informazioni sulla gestione degli interruzioni nei driver UMDF, vedere Accesso agli interruzioni hardware e gestione.
Esempio
HRESULT hr;
IWDFInterrupt* pInterrupt;
WUDF_INTERRUPT_CONFIG interruptConfig;
WUDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
MyInterruptIsr,
MyInterruptWorkItem);
hr = pDevice->Create(&interruptConfig,
&pInterrupt);
Requisiti
Requisito | Valore |
---|---|
Fine del supporto | Non disponibile in UMDF 2.0 e versioni successive. |
Piattaforma di destinazione | Desktop |
Versione UMDF minima | 1.11 |
Intestazione | wudfddi.h |
DLL | WUDFx.dll |