Compartir a través de


Uso de WDF para desarrollar un controlador

En este tema se proporciona información general de alto nivel de los objetos de marco que usará para desarrollar un controlador de marco de Kernel-Mode Driver Framework (KMDF). Excepto cuando se indique, usará los mismos objetos para desarrollar un controlador de User-Mode Driver Framework (UMDF) a partir de la versión 2 de UMDF.

Los controladores de Windows Driver Frameworks (WDF) constan de una rutina DriverEntry y un conjunto de funciones de devolución de llamada de eventos definidas por los objetos de Windows Driver Framework que usan los controladores basados en el marco. Las funciones de devolución de llamada llaman a métodos de objeto que exporta el marco. El Kit de controladores de Windows (WDK) contiene controladores WDF de ejemplo que muestran cómo implementar las funciones de devolución de llamada de eventos de un controlador. Puede descargar estos ejemplos desde el Centro de desarrollo de Windows: hardware. Para obtener información sobre qué ejemplos están disponibles, vea Ejemplos de controladores kmDF y controladores de UMDF de ejemplo.

Al crear un controlador WDF, normalmente hará lo siguiente:

  • Use un objeto de controlador de marco para representar el controlador.

    La rutina DriverEntry del controlador debe llamar a WdfDriverCreate para crear un objeto de controlador de marco que represente el controlador. El método WdfDriverCreate también registra la función de devolución de llamada EvtDriverDeviceAdd del controlador, que el marco llama cada vez que el administrador de Plug and Play (PnP) informa de la existencia de un dispositivo que admite el controlador.

  • Use objetos de dispositivo de marco para admitir PnP y la administración de energía en el controlador.

    Todos los controladores deben llamar a WdfDeviceCreate para crear un objeto de dispositivo de marco para cada dispositivo que admita un controlador. Un dispositivo puede ser un fragmento de hardware que está conectado al equipo, o puede ser un dispositivo de solo software. Los objetos de dispositivo framework admiten operaciones de administración de energía y PnP, y los controladores pueden registrar funciones de devolución de llamada de eventos que notifican al controlador cuando un dispositivo entra o deja su estado de trabajo.

    Para obtener más información sobre los objetos de dispositivo de marco, consulte Compatibilidad con PnP y administración de energía en el controlador.

  • Use objetos de cola de marco y objetos de solicitud de marco para admitir operaciones de E/S en el controlador.

    Todos los controladores que reciben solicitudes de control de E/S de lectura, escritura o dispositivo de aplicaciones u otros controladores deben llamar a WdfIoQueueCreate para crear objetos de cola de marco que representen colas de E/S. Normalmente, los controladores registran uno o varios controladores de solicitudes para cada cola de E/S. Cuando el administrador de E/S envía una solicitud de E/S al controlador, el marco crea un objeto de solicitud de marco para la solicitud, coloca el objeto de solicitud en una cola de E/S y llama a uno de los controladores de solicitudes del controlador para informar al controlador de que hay disponible una solicitud. El controlador obtiene la solicitud de E/S y puede volver a poner en cola, completar, cancelar o reenviar la solicitud.

    Para obtener más información sobre el uso de los objetos de cola y los objetos de solicitud del marco de trabajo, vea Objetos de cola de marco y Objetos de solicitud de marco.

  • Use objetos de interrupción del marco para controlar las interrupciones del dispositivo.

    Los controladores que controlan las interrupciones del dispositivo deben llamar a WdfInterruptCreate para crear un objeto de interrupción de marco para cada interrupción y registrar las funciones de devolución de llamada. Estas funciones de devolución de llamada habilitan y deshabilitan la interrupción y sirven como rutina de servicio de interrupción (ISR) y llamada de procedimiento diferido (DPC) para la interrupción.

    Para obtener más información sobre los objetos de interrupción del marco, consulte Control de interrupciones de hardware.

  • Los controladores KMDF pueden usar los objetos de habilitación DMA del marco y los objetos de transacción DMA para controlar las operaciones de acceso directo a memoria (DMA) de un dispositivo.

    Si el dispositivo del controlador KMDF admite operaciones DMA, el controlador debe llamar a WdfDmaEnablerCreate para crear un objeto de habilitador DMA y WdfDmaTransactionCreate para crear uno o varios objetos de transacción DMA. El objeto de transacción DMA define una función de devolución de llamada EvtProgramDma que programa el hardware del dispositivo para realizar una operación DMA.

    Para obtener más información sobre cómo admitir operaciones DMA, consulte Control de operaciones de DMA en controladores basados en marcos.

  • Use los objetos de destino de E/S del marco para enviar solicitudes de E/S a otros controladores.

    Para pasar solicitudes de E/S a otros controladores (normalmente el siguiente controlador inferior de la pila de controladores), el controlador envía la solicitud a un objeto de destino de E/S.

    Para obtener más información sobre los objetos de destino de E/S, consulte Uso de destinos de E/S.

  • Un controlador KMDF puede usar los objetos de proveedor WMI del marco y los objetos de instancia de WMI para admitir funcionalidades de Instrumental de administración de Windows (WMI).

    La mayoría de los controladores KMDF deben admitir WMI y deben llamar a WdfWmiInstanceCreate para registrar funciones de devolución de llamada que envían o reciben datos WMI.

    Para obtener más información sobre WMI, vea Compatibilidad con WMI en controladores basados en marcos.

  • Use las funcionalidades de sincronización del marco.

    Todos los controladores deben tener en cuenta los problemas de sincronización de varios procesadores y deben usar técnicas de sincronización que proporciona el marco de trabajo.

  • Use objetos y características adicionales que proporciona el marco de trabajo.

    El marco proporciona objetos adicionales que el controlador puede usar. Para obtener más información sobre estos objetos, vea Objetos de compatibilidad con WDF.