Introducción a los controladores de controlador de SPB

Un controlador SPB es un dispositivo que controla un bus periférico simple (SPB) y que transfiere datos hacia y desde los dispositivos periféricos conectados al SPB. El proveedor de hardware de un controlador SPB proporciona un controlador de controlador SPB para administrar las funciones de hardware en el controlador.

A partir de Windows 8, la extensión del marco SPB (SpbCx) simplifica el desarrollo de controladores de controladores para buses periféricos simples (SPB). SpbCx es una extensión proporcionada por el sistema al marco de controlador en modo kernel (KMDF). El proveedor de hardware para el dispositivo del controlador SPB proporciona un controlador de controlador para realizar todas las operaciones de controlador específicas del hardware. Este controlador se comunica con SpbCx para realizar operaciones específicas de los controladores SPB y se comunica directamente con KMDF para realizar operaciones de controlador genéricas.

Por ejemplo, un controlador de controlador SPB normalmente llama al método WdfDeviceInitSetPnpPowerEventCallbacks en KMDF para registrarse para recibir devoluciones de llamada de eventos de energía y llama al método WdfInterruptCreate para conectar la rutina del servicio de interrupción del controlador (ISR) a la interrupción del controlador SPB. Para realizar operaciones específicas de SPB, el controlador SPB se comunica con SpbCx a través de la interfaz del controlador de dispositivo (DDI) de SpbCx .

SpbCx coopera con el controlador del controlador SBP para controlar las solicitudes de E/S de los dispositivos periféricos conectados al SPB. SpbCx realiza tareas de procesamiento que son comunes a los controladores de controlador de SPB. Estas tareas incluyen la administración de las colas de solicitudes de E/S para el controlador SPB. Estas colas contienen solicitudes de E/S de los controladores que administran los dispositivos periféricos que están conectados al bus. El controlador del controlador SPB realiza todas las operaciones específicas del hardware necesarias para controlar estas solicitudes.

En el diagrama siguiente se muestra el controlador del controlador SPB y SpbCx.

diagrama de bloques de componentes de spb.

El controlador del controlador SPB y SpbCx se ejecutan en modo kernel y se comunican entre sí a través de spbCx DDI. El controlador del controlador SPB llama a los métodos de compatibilidad del controlador implementados por SpbCx. SpbCx llama a funciones de devolución de llamada de eventos implementadas por el controlador del controlador SPB.

Los controladores que envían solicitudes de E/S al controlador SPB son controladores en modo kernel que usan el marco de controlador de modo kernel (KMDF) o controladores en modo de usuario que usan el marco de controlador del modo de usuario (UMDF). Estos controladores pueden enviar solicitudes de lectura y escritura para transferir datos hacia y desde dispositivos periféricos conectados a SPB. Además, los controladores pueden enviar solicitudes de control de E/S (IOCTL) para realizar operaciones específicas de SPB.

El controlador del controlador SPB accede directamente a los registros de hardware del dispositivo del controlador SPB para iniciar transferencias de datos hacia y desde dispositivos periféricos conectados al SPB. Para un SPB como I2C, estas transferencias de datos se producen a velocidades relativamente lentas. Aunque es probable que los registros de hardware del controlador SPB estén asignados a la memoria, se debe tener acceso a los registros de los dispositivos periféricos en serie a través del SPB.

En respuesta a una solicitud de E/S para transferir datos hacia o desde un dispositivo periférico conectado a SPB, el controlador del CONTROLADOR SPB inicia la transferencia de bus, marca la solicitud de E/S como pendiente y vuelve sin esperar a que se complete la transferencia. Más adelante, cuando el hardware del controlador SPB finaliza la transferencia, el controlador señala una interrupción y el ISR en el controlador del controlador SPB completa la solicitud de E/S pendiente o inicia la siguiente transferencia en la operación de E/S solicitada.

Solo los controladores pueden enviar solicitudes de E/S directamente a un controlador SPB. Cuando una aplicación en modo de usuario transfiere datos hacia o desde un dispositivo periférico conectado a SPB, la aplicación debe confiar en el controlador de dispositivo periférico SPB para enviar las solicitudes de lectura o escritura correspondientes al controlador SPB.