SPB 框架扩展 (SpbCx)

从 Windows 8 开始,SPB 框架扩展 (SpbCx) 是系统提供的内核模式驱动程序框架 (KMDF) 的扩展。 SpbCx 与 SPB 控制器驱动程序 配合使用,在连接到 简单外围总线 的外围设备 (SPB) (如 I²C 或 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 驱动程序的信息,请参阅 生成和加载Framework-Based驱动程序

SPB 控制器驱动程序静态链接到 SpbCx 存根库 Spbcx.lib 中的 DDI 入口点。 在运行时,此库执行必要的驱动程序版本协商,以动态链接到实现 DDI 的框架扩展模块Spbcx.sys。 需要特定版本的 Spbcx.sys 的 SPB 控制器驱动程序可以安全地链接到具有更高版本号的 Spbcx.sys 版本。 但是,此驱动程序无法链接到版本号较低的Spbcx.sys版本。 SpbCx I/O 请求接口同样向后兼容。

尽管硬件供应商可以选择编写不使用 SpbCx 的单片 SPB 控制器驱动程序,但执行此操作需要付出大量努力。 相比之下,使用 SpbCx 的控制器驱动程序更易于开发,并且通常更可靠。