Creación de un controlador cliente de notificaciones de hardware
En esta sección se proporcionan instrucciones generales sobre el desarrollo de un controlador cliente de notificaciones de hardware que utiliza la extensión de clase KMDF proporcionada por Microsoft.
Cree un archivo para la implementación del controlador de cliente que se vincule a Mshwnclxstub.lib e incluya los encabezados hwn.h y hwnclx.h.
Defina instancias de las funciones de devolución de llamada de extensión de clase de notificación de hardware y KMDF necesarias. En concreto, debe implementar y registrar estas funciones de devolución de llamada como se muestra en el código de ejemplo siguiente.
DRIVER_INITIALIZE DriverEntry; EVT_WDF_DRIVER_DEVICE_ADD HwnClientEvtDeviceAdd; HWN_CLIENT_INITIALIZE_DEVICE HwnClientInitializeDevice; HWN_CLIENT_UNINITIALIZE_DEVICE HwnClientUnInitializeDevice; HWN_CLIENT_QUERY_DEVICE_INFORMATION HwnClientQueryDeviceInformation; HWN_CLIENT_START_DEVICE HwnClientStartDevice; HWN_CLIENT_STOP_DEVICE HwnClientStopDevice; HWN_CLIENT_SET_STATE HwnClientSetState; HWN_CLIENT_GET_STATE HwnClientGetState;
Implemente la rutina DriverEntry , que es el punto de entrada del controlador cliente y responsable de la inicialización. Para el controlador cliente de notificaciones de hardware, esta función debe controlar lo siguiente:
Llamar a WDF_DRIVER_CONFIG_INIT para inicializar la estructura de WDF_DRIVER_CONFIG del controlador.
Llamar a WdfDriverCreate para crear un objeto de controlador de marco para el controlador cliente.
Definir el contenido del HWN_CLIENT_REGISTRATION_PACKET, incluidos los punteros de función de devolución de llamada para que lo use la extensión de clase. Para obtener más información sobre las funciones de devolución de llamada necesarias, consulte Referencia de notificaciones de hardware.
Llamar a HwNRegisterClient para registrar el controlador de cliente con la extensión de clase.
Implemente la función EVT_WDF_DRIVER_DEVICE_ADD , que es responsable de realizar operaciones de inicialización de dispositivos cuando el administrador de PnP notifica la existencia de un dispositivo. Para el controlador cliente de notificaciones de hardware, esta función debe controlar lo siguiente:
Llamar a HwNProcessAddDevicePreDeviceCreate, que proporciona las devoluciones de llamada de entrada y salida y preparación del dispositivo necesarias para realizar la transición del dispositivo a diferentes estados.
Llamar a WdfDeviceCreate para crear un objeto de dispositivo de marco.
Llamar a HwNProcessAddDevicePostDeviceCreate para crear colas de E/S.
Implemente la función definida HWN_CLIENT_INITIALIZE_DEVICE , a la que llama la extensión de clase para preparar el controlador de notificaciones de hardware para su uso.
Implemente la función de HWN_CLIENT_UNINITIALIZE_DEVICE definida, a la que llama la extensión de clase para anular la inicialización del controlador de notificaciones de hardware.
Implemente la función HWN_CLIENT_QUERY_DEVICE_INFORMATION definida, a la que llama la extensión de clase. Esta función es responsable de recuperar los atributos de un componente de notificación de hardware.
Implemente la función HWN_CLIENT_START_DEVICE definida, a la que llama la extensión de clase. Esta función es responsable de iniciar el controlador de notificaciones de hardware y de asignar recursos ACPI para el controlador cliente.
Implemente la función HWN_CLIENT_STOP_DEVICE definida, a la que llama la extensión de clase. Esta función es responsable de detener el controlador de notificaciones de hardware y de liberar recursos ACPI usados por el controlador cliente.
Implemente el HWN_CLIENT_SET_STATE definido, al que llama la extensión de clase . Esta función es responsable de establecer estados de componentes de notificación de hardware.
Implemente el HWN_CLIENT_GET_STATE definido, al que llama la extensión de clase. Esta función es responsable de obtener los valores actuales de los componentes de notificación de hardware. Cuando el búfer de entrada es NULL, lo que significa que el usuario no especificó el estado de notificación de hardware específico, esta función debe devolver información de estado para todos los componentes de notificación de hardware.