Compartir a través de


Función WdfInterruptQueueDpcForIsr (wdfinterrupt.h)

[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)

Consulte también

EvtInterruptDpc

EvtInterruptIsr

WdfInterruptCreate