最终用户输入/输出请求和文件对象
内核模式驱动程序通过实现已熟悉的编程接口(如 Windows 或 POSIX)的受保护子系统对最终用户隐藏。 设备对用户模式代码可见,其中包括受保护的子系统,仅作为由 I/O 管理器控制的命名文件对象。
下图说明了最终用户、子系统和 I/O 管理器之间的这种关系。
受保护的子系统(如 Win32 子系统)通过 I/O 系统服务将 I/O 请求传递给相应的内核模式驱动程序。 上图中显示的子系统取决于显示器、视频适配器、键盘和鼠标设备驱动程序的支持。
受保护的子系统使其最终用户和应用程序不必了解内核模式组件(包括驱动程序)的任何信息。 反过来,I/O 管理器使受保护的子系统不必知道有关计算机特定设备配置或驱动程序实现的任何信息。
I/O 管理器的分层方法也使大多数驱动程序不必了解以下内容:
I/O 请求是否源自任何特定的受保护子系统,例如 Win32 或 POSIX
给定受保护的子系统是否具有特定类型的用户模式驱动程序
任何受保护子系统的 I/O 模型和驱动程序接口是什么
I/O 管理器为驱动程序提供单个 I/O 模型、驱动程序可用于执行 I/O 操作的一组内核模式支持例程,以及 I/O 请求的发起方与必须响应该请求的驱动程序之间的一致接口。
如上图所示,子系统及其本机应用程序只能通过 I/O 管理器提供的文件对象句柄访问驱动程序的设备或大容量存储设备上的文件。 若要打开此类文件对象或获取设备或数据文件的 I/O 句柄,子系统会调用 I/O 系统服务并发出打开命名文件的请求。 命名文件可以具有特定于子系统的别名 (符号链接) 到文件对象的内核模式名称。
然后,导出这些系统服务的 I/O 管理器负责查找或创建表示设备或数据文件的文件对象,以及查找相应的驱动程序 () 。