Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
[Se aplica a KMDF y UMDF]
El método WdfInterruptQueueDpcForIsr pone en cola una función de devolución de llamada EvtInterruptD pc del objeto de interrupción del marco para su ejecución.
Sintaxis
BOOLEAN WdfInterruptQueueDpcForIsr(
[in] WDFINTERRUPT Interrupt
);
Parámetros
[in] Interrupt
Identificador de un objeto de interrupción del marco.
Valor devuelto
WdfInterruptQueueDpcForIsr devuelve TRUE si pone en cola correctamente la función de devolución de llamada del objeto de interrupción EvtInterruptD pc. El método devuelve FALSE si la función de devolución de llamada se puso en cola anteriormente y no se ha ejecutado.
Se produce una comprobación de errores si el controlador proporciona un identificador de objeto no válido.
Observaciones
Los controladores suelen llamar a WdfInterruptQueueDpcForIsr desde una función de devolución de llamada EvtInterruptIsr.
Las evtInterruptDpc de un objeto de interrupción función de devolución de llamada solo se pueden poner en cola una vez antes de que se ejecute. Por lo tanto, si una llamada a WdfInterruptQueueDpcForIsr se realiza correctamente, las llamadas posteriores devolverán FALSE hasta que el marco desquee la función de devolución de llamada EvtInterruptDpc.
El EvtInterruptDpc devolución de llamada se ejecutará en el procesador que lo ha puestos en cola. Si el controlador llama a WdfInterruptQueueDpcForIsr poner en cola otro DPC mientras que una EvtInterruptDpc función de devolución de llamada ya está en cola o en ejecución, la segunda EvtInterruptDpc puede incluso ejecutarse antes de que se complete la primera.
Para obtener más información sobre el control de interrupciones en controladores basados en marcos, consulte control de interrupciones de hardware.
En KMDF 1.11 y versiones posteriores, un controlador puede llamar a WdfInterruptQueueDpcForIsr desde un ISR de nivel pasivo. Tenga en cuenta que un controlador puede registrar un elemento de trabajo o un DPC, pero no ambos.
Ejemplos
En el ejemplo de código siguiente se muestra cómo un EvtInterruptIsr función de devolución de llamada debe poner en cola una función de devolución de llamada 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);
...
}
Requisitos
| Requisito | Valor |
|---|---|
| de la plataforma de destino de | Universal |
| versión mínima de KMDF | 1.0 |
| versión mínima de UMDF | 2.0 |
| encabezado | wdfinterrupt.h (incluya Wdf.h) |
| Biblioteca | Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF) |
| irQL | <=DIRQL |
| reglas de cumplimiento de DDI | DriverCreate(kmdf) |