编写 StartIo 例程

顾名思义, StartIo 例程负责在物理设备上启动 I/O 操作。

大多数最低级别的驱动程序提供 StartIo 例程,并依赖于 I/O 管理器将 IRP 排队到系统提供的设备队列。 一些最低级别的驱动程序旨在设置和管理其自己的补充 IRP 队列,但即使这些驱动程序通常也提供 StartIo 例程。 (有关补充队列的详细信息,请参阅 设置和使用设备队列 和管理 设备队列。)

更高级别的驱动程序(包括 FSD 和 PnP 函数和筛选器驱动程序)很少具有 StartIo 例程,因为它可能会妨碍性能。 相反,大多数文件系统驱动程序会设置和维护 IRP 的内部队列。 其他更高级别的驱动程序要么有 IRP 的内部队列,要么只是将 IRP 从其调度例程传递给较低的驱动程序。 有关详细信息 ,请参阅驱动程序管理的 IRP 队列

可以使用 IoSetStartIoAttributes 例程来设置属性,以修改驱动程序 的 StartIo 处理。

本节包含下列主题:

最低级驱动程序中的 StartIo 例程

较高级驱动程序中的 StartIo 例程

StartIo 例程要考虑的要点