SPB 框架扩展 (SpbCx)
SPB 框架扩展 (SpbCx) 是系统提供的内核模式驱动程序框架 (KMDF) 扩展。 SpbCx 与 SPB 控制器驱动程序协同工作,以便对连接到简单外围设备总线 (SPB)(如 I2C 或 SPI)的外围设备执行 I/O 操作。
SPB 控制器驱动程序执行所有特定于硬件的操作。 这些操作包括访问 SPB 控制器的硬件寄存器,以配置控制器并启动与 SPB 连接的外围设备之间的总线传输。
SpbCx 执行 SPB 控制器设备通用的处理任务。 具体而言,SpbCx 负责管理 SPB 控制器的 I/O 请求队列。 这些队列包含连接到总线上的外围设备的 I/O 请求。 SPB 控制器的硬件供应商提供 SPB 控制器驱动程序,以执行处理这些请求所需的所有硬件特定操作。
SpbCx 和 SPB 控制器驱动程序之间的职责分工如下:
SpbCx 管理 SPB 控制器设备类所有成员共有的通用功能。 SpbCx 为控制器驱动程序提供了大量默认的请求处理和流控制功能。 从 Windows 8 开始,SpbCx 成为了 Windows 操作系统的收件箱组件。
SPB 控制器驱动程序管理 SPB 控制器设备的特定硬件功能。 硬件供应商为其 SPB 控制器设备提供控制器驱动程序。
SpbCx 和 SPB 控制器驱动程序在内核模式下运行。 SpbCx 是一个框架扩展,而 SPB 控制器驱动程序是一个 KMDF 驱动程序。 SPB 控制器驱动程序调用 SpbCx 设备驱动程序接口 (DDI) 中的方法来执行 SPB 特定操作,并调用 KMDF 方法来执行其他更通用的驱动程序功能。 有关生成 KMDF 驱动程序的信息,请参阅生成和加载基于框架的驱动程序。
SPB 控制器驱动程序静态链接到 SpbCx 存根库 Spbcx.lib 中的 DDI 入口点。 在运行时,此库会执行必要的驱动程序版本协商,以动态链接到实现 DDI 的框架扩展模块 Spbcx.sys。 需要特定 Spbcx.sys 版本的 SPB 控制器驱动程序可以安全地链接到版本号较高的 Spbcx.sys 版本。 但是,此驱动程序无法链接到版本号较低的 Spbcx.sys 版本。 SpbCx I/O 请求接口同样向后兼容。
虽然硬件供应商可以选择编写不使用 SpbCx 的单体 SPB 控制器驱动程序,但这样做需要付出很大的努力。 相比之下,使用 SpbCx 的控制器驱动程序更容易开发,通常也更可靠。