Compartir a través de


Crear un objeto de interrupción (UMDF 1)

Advertencia

UMDF 2 es la versión más reciente de UMDF y sustituye a UMDF 1. Todos los controladores UMDF nuevos deben escribirse con UMDF 2. No se agregan nuevas características a UMDF 1 y hay compatibilidad limitada con UMDF 1 en versiones más recientes de Windows 10. Los controladores universales de Windows deben usar UMDF 2.

Los ejemplos de UMDF 1 archivados se pueden encontrar en la actualización de ejemplos de controladores de Windows 11, versión 22H2 - mayo de 2022.

Para obtener más información, consulta Introducción con UMDF.

Un controlador UMDF que controle las interrupciones de hardware de un dispositivo debe crear un objeto de interrupción de marco para cada interrupción que pueda admitir cada dispositivo.

Normalmente, un controlador crea objetos de interrupción de marco en IDriverEntry::OnDeviceAdd. Sin embargo, también puede crear objetos de interrupción en IPnpCallbackHardware2::OnPrepareHardware.

Para crear un objeto de interrupción del marco, el controlador debe inicializar una estructura de WUDF_INTERRUPT_CONFIG y pasarla al método IWDFDevice3::CreateInterrupt . Este método registra las siguientes funciones de devolución de llamada de eventos proporcionadas por el controlador:

OnInterruptEnable
Habilita una interrupción de hardware.

OnInterruptDisable
Deshabilita una interrupción de hardware.

OnInterruptIsr
Rutina del servicio de interrupción (ISR) para la interrupción.

OnInterruptWorkItem
Rutina de trabajo para la interrupción.

Opcionalmente, el controlador puede llamar a IWDFInterrupt::SetPolicy o IWDFInterrupt::SetExtendedPolicy para especificar parámetros de interrupción adicionales.

El marco llama a la función de devolución de llamada IDriverEntry::OnDeviceAdd del controlador antes de que el administrador de Plug and Play (PnP) tenga asignados recursos del sistema, como vectores de interrupción, al dispositivo. Después de que el administrador de PnP asigne recursos, el marco almacena los recursos de interrupción en el objeto de interrupción del dispositivo. (Los controladores que no admiten Plug and Play no pueden usar objetos de interrupción).

Las interrupciones señaladas por mensajes (MSIs) se admiten en Windows Vista y versiones posteriores del sistema operativo. Para permitir que el sistema operativo admita msis para el dispositivo, el archivo INF del controlador debe establecer algunos valores en el registro. Para obtener información sobre cómo establecer estos valores, consulte Habilitación de interrupciones de Message-Signaled en el Registro.

Si un dispositivo puede admitir un número determinado de mensajes MSI, el administrador de PnP intentará asignar ese número de mensajes al dispositivo. Si el administrador de PnP no puede asignar todos los mensajes que el dispositivo puede admitir, solo asignará un mensaje al dispositivo.

El controlador debe crear un objeto de interrupción de marco para cada vector de interrupción o mensaje MSI que el dispositivo pueda admitir. Si el administrador de PnP no concede al dispositivo todos los recursos de interrupción que el dispositivo puede admitir, no se usarán los objetos de interrupción adicionales y no se llamará a sus funciones de devolución de llamada.