Compartir a través de


EVT_WDF_INTERRUPT_SYNCHRONIZE función de devolución de llamada (wdfinterrupt.h)

[Se aplica a KMDF y UMDF]

La función de devolución de llamada de evento EvtInterruptSynchronize de un controlador realiza operaciones que se deben sincronizar con una función de devolución de llamada EvtInterruptIsr .

Sintaxis

EVT_WDF_INTERRUPT_SYNCHRONIZE EvtWdfInterruptSynchronize;

BOOLEAN EvtWdfInterruptSynchronize(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFCONTEXT Context
)
{...}

Parámetros

[in] Interrupt

Identificador de un objeto de interrupción de marco.

[in] Context

Información proporcionada por el controlador que el controlador especifica cuando llama a WdfInterruptSynchronize.

Valor devuelto

La función de devolución de llamada EvtInterruptSynchronize debe devolver TRUE si la operación se realiza correctamente. De lo contrario, esta función debe devolver FALSE.

Comentarios

Para ejecutar una función de devolución de llamada EvtInterruptSynchronize , el controlador debe llamar a WdfInterruptSynchronize.

Si el controlador ha configurado el objeto de interrupción para controlar en el IRQL (DIRQL) del dispositivo, antes de llamar a la función de devolución de llamada EvtInterruptSynchronize , el marco genera el nivel de solicitud de interrupción del procesador a DIRQL y adquiere el bloqueo de número que el controlador especificó en la estructura de WDF_INTERRUPT_CONFIG del objeto de interrupción.

Como resultado, mientras se ejecuta una función de devolución de llamada EvtInterruptSynchronize , la función de devolución de llamada EvtInterruptIsr del objeto de interrupción (y cualquier otro código que se ejecuta en DIRQL mientras mantiene el bloqueo de número) no se puede ejecutar.

Las funciones de devolución de llamada EvtInterruptSynchronize deben diseñarse para que se ejecuten durante un breve período de tiempo. Normalmente se usan para acceder a los datos de interrupción a los que también acceden otras funciones de devolución de llamada EvtInterruptSynchronize o EvtInterruptIsr de un objeto de interrupción.

A partir de la versión 1.11 de KMDF, el controlador puede proporcionar control de interrupciones de nivel pasivo. Si el controlador ha solicitado el control de interrupciones de nivel pasivo, antes de llamar a la función EvtInterruptSynchronize en IRQL = PASSIVE_LEVEL, el marco adquiere el bloqueo de interrupción de nivel pasivo que el controlador configuró en la estructura de WDF_INTERRUPT_CONFIG del objeto de interrupción.

Para obtener más información sobre la función de devolución de llamada EvtInterruptSynchronize , vea Sincronizar código de interrupción.

Para obtener más información sobre el control de interrupciones en controladores basados en marcos, consulte Control de interrupciones de hardware.

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)
IRQL (Vea la sección Comentarios.)

Consulte también

EvtInterruptIsr

WDF_INTERRUPT_CONFIG

WdfInterruptSynchronize