Compartir a través de


EVT_WDF_DPC función de devolución de llamada (wdfdpc.h)

[Solo se aplica a KMDF]

La función de devolución de llamada evtDpcFunc de un controlador realiza operaciones definidas por el controlador en IRQL = DISPATCH_LEVEL.

Sintaxis

EVT_WDF_DPC EvtWdfDpc;

void EvtWdfDpc(
  [in] WDFDPC Dpc
)
{...}

Parámetros

[in] Dpc

Identificador de un objeto DPC de marco.

Valor devuelto

Ninguno

Observaciones

Para registrar una función de devolución de llamada de EvtDpcFunc, el controlador debe colocar la dirección de la función en una estructura WDF_DPC_CONFIG y llamar a WdfDpcCreate.

Los controladores normalmente solicitudes de E/S completas en sus funciones de devolución de llamada EvtDpcFunc.

La función de devolución de llamada EvtDpcFunc se ejecuta en DISPATCH_LEVEL y no debe tener acceso a código paginable. Si una función de devolución de llamada EvtDpcFunc debe realizar operaciones en IRQL = PASSIVE_LEVEL, puede usar elementos de trabajo del marco.

En lugar de proporcionar funciones de devolución de llamada EvtDpcFunc, muchos controladores proporcionan una sola función de devolución de llamada EvtInterruptDpc para cada tipo de interrupción que admiten sus dispositivos. Si el controlador crea varios objetos de cola de marco de trabajo para cada dispositivo, puede considerar la posibilidad de usar un objeto DPC independiente y EvtDpcFunc función de devolución de llamada para cada cola.

Para programar la ejecución de un EvtDpcFunc función de devolución de llamada, el controlador debe llamar a WdfDpcEnqueue. Los controladores suelen llamar a WdfDpcEnqueue desde una función de devolución de llamada EvtInterruptIsr.

Cuando un controlador llama a WdfDpcEnqueue, el sistema agrega el objeto DPC a la cola DPC del sistema. Si el sistema no ejecuta tareas de mayor prioridad, quita el objeto de la cola y llama a la EvtDpcFunc del objeto función de devolución de llamada.

El sistema no agrega el objeto DPC a la cola DPC si el objeto ya está en cola. Una función de devolución de llamada de EvtInterruptIsr puede llamarse varias veces antes de que el sistema llame a la función de devolución de llamada EvtDpcFunc. Por lo tanto, el EvtDpcFunc función de devolución de llamada debe poder procesar información de varias interrupciones y debe procesar todas las interrupciones que se han producido desde la última vez que se llamó.

Normalmente, es necesario sincronizar la ejecución de la EvtDpcFunc de un controlador función de devolución de llamada con la ejecución de otras funciones de devolución de llamada. Para obtener más información, vea Sincronización del código de interrupción.

Para obtener un identificador del objeto primario de un objeto DPC, el EvtDpcFunc función de devolución de llamada puede llamar a WdfDpcGetParentObject. Para obtener un puntero a la estructura de de KDPC subyacente de un objeto DPC, la función de devolución de llamada EvtDpcFunc puede llamar a WdfDpcWdmGetDpc.

Para obtener más información sobre el uso de EvtDpcFunc funciones de devolución de llamada, consulte Mantenimiento de una interrupción.

Requisitos

Requisito Valor
de la plataforma de destino de Universal
versión mínima de KMDF 1.0
encabezado wdfdpc.h (incluya Wdf.h)
irQL DISPATCH_LEVEL

Consulte también

EvtInterruptDpc

EvtInterruptIsr

WDF_DPC_CONFIG

WdfDpcCrear

WdfDpcEnqueue

WdfDpcGetParentObject de

WdfDpcWdmGetDpc