Función WdfInterruptQueueDpcForIsr (wdfinterrupt.h)

[Se aplica a KMDF y UMDF]

El método WdfInterruptQueueDpcForIsr pone en cola la función de devolución de llamada EvtInterruptDpc de un objeto de interrupción de marco para su ejecución.

Sintaxis

BOOLEAN WdfInterruptQueueDpcForIsr(
  [in] WDFINTERRUPT Interrupt
);

Parámetros

[in] Interrupt

Identificador de un objeto de interrupción de marco.

Valor devuelto

WdfInterruptQueueDpcForIsr devuelve TRUE si pone correctamente en cola la función de devolución de llamada EvtInterruptDpc del objeto de interrupción. 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.

Comentarios

Los controladores suelen llamar a WdfInterruptQueueDpcForIsr desde una función de devolución de llamada EvtInterruptIsr .

La función de devolución de llamada EvtInterruptDpc de un objeto de interrupción solo se puede 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 .

La devolución de llamada EvtInterruptDpc se ejecutará en el procesador que la ha puestos en cola. Si el controlador llama a WdfInterruptQueueDpcForIsr para poner en cola otro DPC mientras una función de devolución de llamada EvtInterruptDpc ya está desqueued o en ejecución, la segunda devolución de llamada EvtInterruptDpc podría 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 una función de devolución de llamada EvtInterruptIsr 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 Value
Plataforma de destino Universal
Versión mínima de KMDF 1.0
Versión mínima de UMDF 2.0
Encabezado wdfinterrupt.h (incluir Wdf.h)
Library Wdf01000.sys (KMDF); WUDFx02000.dll (UMDF)
IRQL <=DIRQL
Reglas de cumplimiento de DDI DriverCreate(kmdf)

Consulte también

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate