正在加载图片...
含PnP和电源管理请求的IRP。如果希望了解驱动程序是如何操纵这些ⅠRP的,可参看 《安装、即插即用和电源管理设计指南》。 22终端用户l/o请求和 Windows2000文件对象 内核模式驱动程序被 Microsoft Windows2000保护子系统向终端用户隐藏,这个子系统实 现一个已经很友善的编程接口,例如 Windows或 POSIX。设备对用户模式代码是可见的 它包括保护子系统,仅仅作为命名的文件对象被I/0管理器控制。 图2.1说明了终端用户和I/0管理器之间的这种关系。 图2.1代表文件、卷和设备的文件对象 Windows2000保护子系统,例如Win32子系统,通过I/0系统服务传送I/0请求到合适的 内核模式驱动程序。图2.1中显示的子系统依赖于显示、视频适配器、键盘和鼠标设备驱 动程序的支持。 保护子系统隔离它的终端用户和应用程序,使得它们不必知道关于内核模式组件(包括驱 动程序)的任何细节。同样,I/0管理器隔离保护子系统,使得它们不必知道关于机器特 定的设备配置或驱动程序实现的任何细节 I/0管理器的分层方法也使得大多数驱动程序不必知道任何下列的细节: 是否一个I/0请求在任何特定的保护子系统中被生成,如Win32或 POSIX 是否一个给定的保护子系统拥有特定种类的用户模式驱动程序 什么是保护子系统的I/0模型和什么是对驱动程序的接口 Ⅰ/O管理器提供给驱动程序一个单独的I/O模型、一组驱动程序能用来完成I/0操作的内 核模式支持例程,和I/0请求发出者与响应这个请求的驱动程序之间的一个一致接口 如图2.1所示,子系统和它的本地应用程序仅仅通过I/0管理器提供的文件对象句柄,能 访问驱动程序设备或海量存储设备上的文件。为了打开这样一个文件对象或获得一个句柄 以实现与设备或数据文件的I/0,文件子系统使用一个请求调用I/0系统服务以打开一个 命名的文件。这个命名的文件可以拥有一个子系统指定的别名(符号连接),以将文件对 象联系到内核模式名字。 Ⅰ/0管理器,输出这些系统服务,负责寻找或创建文件对象,这个文件对象用来描述设备 或数据文件;I/0管理器还要寻找合适的驱动程序。图2.2描述了当子系统代表应用程序 打开描述数据文件的文件对象时发生的事情 1.子系统调用一个I/0系统服务以打开一个命名文件。 2.I/0管理器调用对象管理器以寻找命名的文件,并帮助它决定到文件对象的符号连接 它也调用安全引用监视器以检查子系统是否拥有正确的权限打开那个文件对象。 3.如果卷还没有被安装( mount),I/0管理器暂停打开请求,并且调用一个或多个 Windows2000文件系统,直到它们中间之一认可这个文件对象存储在文件系统使用的 海量存储设备之一上面。当文件系统已经安装了卷,I/0管理器继续处理这个请求 4.I/0管理器为这个打开请求分配内存并初始化一个IRP。对于驱动程序来说,打开等同 于一个“创建”请求 5.I/0管理器调用文件系统驱动程序,传递它给IRP。文件系统驱动程序访问它的在IRP 中的I/0栈位置,以确定什么操作必须被完成、检查参数、确定是否请求的文件在缓存 中,并且如果没有的话,在IRP中设置相邻的较低层的驱动程序的I/O栈位置。13 含 PnP 和电源管理请求的 IRP。如果希望了解驱动程序是如何操纵这些 IRP 的,可参看 《安装、即插即用和电源管理设计指南》。 2.2 终端用户 I/O 请求和 Windows 2000 文件对象 内核模式驱动程序被 Microsoft Windows 2000 保护子系统向终端用户隐藏,这个子系统实 现一个已经很友善的编程接口,例如 Windows 或 POSIX。设备对用户模式代码是可见的, 它包括保护子系统,仅仅作为命名的文件对象被 I/O 管理器控制。 图 2.1 说明了终端用户和 I/O 管理器之间的这种关系。 图 2.1 代表文件、卷和设备的文件对象 Windows 2000 保护子系统,例如 Win32 子系统,通过 I/O 系统服务传送 I/O 请求到合适的 内核模式驱动程序。图 2.1 中显示的子系统依赖于显示、视频适配器、键盘和鼠标设备驱 动程序的支持。 保护子系统隔离它的终端用户和应用程序,使得它们不必知道关于内核模式组件(包括驱 动程序)的任何细节。同样,I/O 管理器隔离保护子系统,使得它们不必知道关于机器特 定的设备配置或驱动程序实现的任何细节。 I/O 管理器的分层方法也使得大多数驱动程序不必知道任何下列的细节: ▪ 是否一个 I/O 请求在任何特定的保护子系统中被生成,如 Win32 或 POSIX ▪ 是否一个给定的保护子系统拥有特定种类的用户模式驱动程序 ▪ 什么是保护子系统的 I/O 模型和什么是对驱动程序的接口 I/O 管理器提供给驱动程序一个单独的 I/O 模型、一组驱动程序能用来完成 I/O 操作的内 核模式支持例程,和 I/O 请求发出者与响应这个请求的驱动程序之间的一个一致接口。 如图 2.1 所示,子系统和它的本地应用程序仅仅通过 I/O 管理器提供的文件对象句柄,能 访问驱动程序设备或海量存储设备上的文件。为了打开这样一个文件对象或获得一个句柄 以实现与设备或数据文件的 I/O,文件子系统使用一个请求调用 I/O 系统服务以打开一个 命名的文件。这个命名的文件可以拥有一个子系统指定的别名(符号连接),以将文件对 象联系到内核模式名字。 I/O 管理器,输出这些系统服务,负责寻找或创建文件对象,这个文件对象用来描述设备 或数据文件;I/O 管理器还要寻找合适的驱动程序。图 2.2 描述了当子系统代表应用程序 打开描述数据文件的文件对象时发生的事情。 1. 子系统调用一个 I/O 系统服务以打开一个命名文件。 2. I/O 管理器调用对象管理器以寻找命名的文件,并帮助它决定到文件对象的符号连接。 它也调用安全引用监视器以检查子系统是否拥有正确的权限打开那个文件对象。 3. 如果卷还没有被安装(mount),I/O 管理器暂停打开请求,并且调用一个或多个 Windows 2000 文件系统,直到它们中间之一认可这个文件对象存储在文件系统使用的 海量存储设备之一上面。当文件系统已经安装了卷,I/O 管理器继续处理这个请求。 4. I/O 管理器为这个打开请求分配内存并初始化一个 IRP。对于驱动程序来说,打开等同 于一个“创建”请求。 5. I/O 管理器调用文件系统驱动程序,传递它给 IRP。文件系统驱动程序访问它的在 IRP 中的 I/O 栈位置,以确定什么操作必须被完成、检查参数、确定是否请求的文件在缓存 中,并且如果没有的话,在 IRP 中设置相邻的较低层的驱动程序的 I/O 栈位置
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有