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

[Se aplica a KMDF y UMDF]

La función de devolución de llamada de eventos EvtInterruptEnable de un controlador habilita una interrupción de hardware especificada.

Sintaxis

EVT_WDF_INTERRUPT_ENABLE EvtWdfInterruptEnable;

NTSTATUS EvtWdfInterruptEnable(
  [in] WDFINTERRUPT Interrupt,
  [in] WDFDEVICE AssociatedDevice
)
{...}

Parámetros

[in] Interrupt

Identificador de un objeto de interrupción de marco.

[in] AssociatedDevice

Identificador del objeto de dispositivo de marco que el controlador pasó a WdfInterruptCreate.

Valor devuelto

La función de devolución de llamada EvtInterruptEnable debe devolver STATUS_SUCCESS u otro valor de estado para el que NT_SUCCESS(status) es igual a TRUE si la función no encuentra ningún error. De lo contrario, esta función debe devolver un valor de estado para el que NT_SUCCESS(status) es igual a FALSE.

Comentarios

Para registrar una función de devolución de llamada EvtInterruptEnable , el controlador debe colocar la dirección de la función de devolución de llamada en una estructura de WDF_INTERRUPT_CONFIG antes de llamar a WdfInterruptCreate.

El marco llama a la función de devolución de llamada EvtInterruptEnable del controlador cada vez que el dispositivo entra en su estado de trabajo (D0). Además, un controlador puede hacer que el marco llame a la función de devolución de llamada EvtInterruptEnable llamando a WdfInterruptEnable. Tenga en cuenta que la mayoría de los controladores basados en marcos no deben llamar a WdfInterruptEnable, ya que el marco llama a la función de devolución de llamada EvtInterruptEnable del controlador cada vez que el dispositivo entra en su estado de trabajo (D0).

Antes de llamar a la función de devolución de llamada EvtInterruptEnable , el marco genera el IRQL del procesador al DIRQL del dispositivo y adquiere el bloqueo de número que el controlador especificó en la estructura de WDF_INTERRUPT_CONFIG del 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 EvtInterruptEnable 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.

Una vez que se devuelve la función de devolución de llamada EvtInterruptEnable , el marco llama a la función de devolución de llamada de eventos EvtDeviceD0EntryPostInterruptsEnabled del controlador en IRQL = PASSIVE_LEVEL.

No debe suponer que un dispositivo usará los mismos recursos de interrupción cada vez que el marco llama a la función de devolución de llamada EvtInterruptEnable del controlador. A veces, el administrador de PnP redistribuye los recursos del sistema y podría asignar nuevos recursos de interrupción al dispositivo. El controlador puede llamar a WdfInterruptGetInfo para determinar los recursos de interrupción de un dispositivo.

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

Consulte también

EvtDeviceD0EntryPostInterruptsEnabled

EvtInterruptDisable

WDF_INTERRUPT_CONFIG

WdfInterruptCreate

WdfInterruptEnable

WdfInterruptGetInfo