Funzione WdfInterruptQueueDpcForIsr (wdfinterrupt.h)
[Si applica a KMDF e UMDF]
Il metodo WdfInterruptQueueDpcForIsr accoda un oggetto interrupt del framework EvtInterruptDpc funzione di callback per l'esecuzione.
Sintassi
BOOLEAN WdfInterruptQueueDpcForIsr(
[in] WDFINTERRUPT Interrupt
);
Parametri
[in] Interrupt
Handle per un oggetto interrupt del framework.
Valore restituito
WdfInterruptQueueDpcForIsr restituisce true se accoda correttamente la funzione di callback dell'oggetto interrupt EvtInterruptD pc. Il metodo restituisce FALSE se la funzione di callback è stata accodata in precedenza e non è stata eseguita.
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Osservazioni:
I driver chiamano in genere WdfInterruptQueueDpcForIsr da un EvtInterruptIsr funzione di callback.
Un oggetto interrupt EvtInterruptDpc funzione di callback può essere accodata una sola volta prima dell'esecuzione. Pertanto, se una chiamata a WdfInterruptQueueDpcForIsr ha esito positivo, le chiamate successive restituiranno FALSE finché il framework non accoda la EvtInterruptDpc funzione di callback.
Il callback evtInterruptDpc verrà eseguito sul processore che lo accodò. Se il driver chiama WdfInterruptQueueDpcForIsr per accodare un altro DPC mentre un EvtInterruptDpc funzione di callback è già dequeued o in esecuzione, il secondo EvtInterruptDpc callback potrebbe anche essere eseguito prima del completamento del primo.
Per altre informazioni sulla gestione degli interrupt nei driver basati su framework, vedere Gestione degli interrupt hardware.
In KMDF 1.11 e versioni successive un driver può chiamare WdfInterruptQueueDpcForIsr da un ISR a livello passivo. Si noti che un driver può registrare un elemento di lavoro o un DPC, ma non entrambi.
Esempi
L'esempio di codice seguente illustra come una funzione di callback EvtInterruptIsr deve accodare una funzione di callback EvtInterruptDpc.
BOOLEAN
MyEvtInterruptIsr(
IN WDFINTERRUPT Interrupt,
IN ULONG MessageID
)
{
BOOLEAN queueDpcSuccess;
//
// Save interrupt information for the
// EvtInterruptDpc function.
//
...
//
// Queue the EvtInterruptDpc function.
//
queueDpcSuccess = WdfInterruptQueueDpcForIsr(Interrupt);
...
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
versione minima di UMDF | 2.0 |
intestazione | wdfinterrupt.h (include Wdf.h) |
Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
IRQL | <=DIRQL |
regole di conformità DDI | DriverCreate(kmdf) |