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 |