IEEE 1394 驱动程序堆栈

下图演示了 IEEE 1394 驱动程序堆栈,其中包含新的 1394 总线驱动程序和 Microsoft 支持的 1394 客户端驱动程序。

说明 ieee 1394 驱动程序堆栈的示意图。

连接到 IEEE 1394 总线驱动程序的设备客户端驱动程序位于 IEEE 1394 驱动程序堆栈之上。 总线驱动程序为 IEEE 1394 总线提供与硬件无关的接口。 设备驱动程序通过发送 IEEE 1394 总线驱动程序处理的 IRP 与设备通信。 在 Windows 7 之前,总线驱动程序是端口驱动程序 (1394bus.sys) 和主板主机控制器 (ochi1394.sys) 的主微型端口驱动程序的组合。 在 Windows 7 及更高版本中,旧版端口/微型端口总线驱动程序将替换为 1394ohci.sys,这是一个整体 IEEE 1394 总线驱动程序,使用内核模式驱动程序框架 (KMDF) 实现。 1394ohci.sys总线驱动程序与旧版 1394 总线驱动程序完全向后兼容。 有关新总线驱动程序与旧版 1394 总线驱动程序之间的一些已知行为差异的详细信息,请参阅 Windows 7 中的 IEEE 1394 总线驱动程序

下图显示了旧版 1394 总线驱动程序与新版 1394 总线驱动程序之间的关系。

显示旧版 1394 总线驱动程序与新版 1394 总线驱动程序之间关系的示意图。

若要向连接到总线的设备发出命令,驱动程序会发出 IRP_MJ_DEVICE_CONTROL IRP, IOCTL_1394_CLASS控制代码。 驱动程序将参数打包在 IEEE 1394 I/O 请求块 (IRB) 中,并在 IRP 的 Parameters.Others.Argument1 成员中传递指向它的指针。 IRB 的 FunctionNumber 成员确定操作的类型, u 成员描述操作。 总线驱动程序使用 IOCTL_1394_CLASS IRP 向总线和主控制器提供接口。

IRB 结构包含应用于每个总线请求的参数和特定于请求的参数。 IRB 的 u 成员在数据结构的联合中包含特定于请求的参数,每个请求类型各一个。

在正常操作期间,驱动程序接收普通 I/O 请求 ((如 IRP_MJ_READ) ),将其转换为相应的 IEEE 1394 操作,并通过IOCTL_1394_CLASS将该操作调度到设备。

Windows 7 中的 IEEE 1394 总线驱动程序