Compartir a través de


Extensión del marco SPB (SpbCx)

La extensión del marco SPB (SpbCx) es una extensión proporcionada por el sistema al marco de controladores en modo kernel (KMDF). SpbCx funciona junto con un controlador SPB para realizar operaciones de E/S en dispositivos periféricos conectados a un bus periférico simple (SPB), como I2C o SPI.

El controlador SPB realiza todas las operaciones específicas del hardware. Estas operaciones incluyen el acceso a los registros de hardware del controlador SPB para configurar el controlador e iniciar transferencias de bus hacia y desde dispositivos periféricos conectados a SPB.

SpbCx realiza tareas de procesamiento que son comunes a los dispositivos del controlador SPB. En concreto, SpbCx administra las colas de solicitudes de E/S para un controlador SPB. Estas colas contienen solicitudes de E/S para dispositivos periféricos conectados al bus. El proveedor de hardware para el controlador SPB proporciona un controlador SPB para realizar todas las operaciones específicas del hardware que se requieren para manejar estas solicitudes.

La división de responsabilidades entre SpbCx y el controlador SPB es la siguiente:

  • SpbCx administra las funciones genéricas que son comunes a todos los miembros de la clase de dispositivo del controlador SPB. SpbCx proporciona gran parte del control de solicitudes predeterminado y el control de flujo para el controlador. A partir de Windows 8, SpbCx es un componente de serie del sistema operativo Windows.

  • El controlador SPB administra las funciones específicas del hardware en el dispositivo del controlador SPB. Los proveedores de hardware suministran controladores para sus dispositivos de controlador SPB.

SpbCx y el controlador SPB se ejecutan en modo kernel. SpbCx es una extensión de marco y el controlador SPB es un controlador KMDF. El controlador SPB llama a los métodos de la interfaz del controlador de dispositivo (DDI) de SpbCx para realizar operaciones específicas de SPB y llama a métodos KMDF para realizar otras funciones de controlador más genéricas. Para obtener información sobre la creación de un controlador KMDF, consulte Compilación y carga de un controlador basado en marcos.

Los controladores SPB se vinculan estáticamente a los puntos de entrada DDI de la biblioteca de códigos auxiliares de SpbCx, Spbcx.lib. En tiempo de ejecución, esta biblioteca realiza la negociación de la versión del controlador necesaria para vincular dinámicamente al módulo de extensión de marco, Spbcx.sys, que implementa la DDI. Un controlador SPB que requiere una versión determinada de Spbcx.sys puede vincularse de forma segura a una versión de Spbcx.sys que tenga un número de versión superior. Sin embargo, este controlador no se puede vincular a una versión de Spbcx.sys que tenga un número de versión inferior. La interfaz de solicitud de E/S SpbCx es igualmente compatible con versiones anteriores.

Aunque un proveedor de hardware tiene la opción de escribir un controlador SPB monolítico que no use SpbCx, se requiere un esfuerzo significativo para hacerlo. En comparación, un controlador que usa SpbCx es más fácil de desarrollar y normalmente es más confiable.