正在加载图片...
location) 在固定部分(或头)中,I/0管理器维护与原始请求有关的信息,例如调用者的线程 ID和参数,还有在其上被打开文件的设备对象的地址,等等。固定部分也包含一个 I/0状态块,驱动程序在其中设置请求的I/0操作的状态信息。 在最高层驱动程序的Ⅰ/0栈位置中,I/0管理器、即插即用管理器、或电源管理器设 置驱动程序特定的参数,例如由相应驱动程序请求的特定操作(描述成一个函数代 码)和它使用的环境,以确定的它将要做些什么。如果需要的话,按照顺序,每一个 较高层的驱动程序创建相邻的较低层驱动程序的I/0栈位置 因为给定的IRP通过每个驱动程序的标准例程集被处理,每一个标准例程能在IRP中访问 那个驱动程序的I/0栈位置,从而在驱动程序操作的每个阶段重用IRP。另外,更高层的 驱动程序能创建(或重用)IRP以发送请求到低层的驱动程序 参见第2章,“分层的1/0、IRP、和1/0对象”可以得到IRP通过分层的驱动程序的处理 过程的介绍。如果希望得到关于IRP设备类型特定的信息,参看《 Windows2000驱动程序 开发参考》的卷2:对于PnP和电源管理IRP,参看《即插即用、电源管理和安装设计指 南》和《 Windows2000驱动程序开发参考》的卷1。 1.3.7支持异步I/0 Ⅰ/0管理器提供异步Ⅰ/0支持,从而使得I/0请求的发出者(通常是用户模式应用程序, 但有些时候是另一个驱动程序)可以继续执行,而不用等待它的I/0请求完成。提供异步 Ⅰ/0支持提高了系统整体的吞吐量,同样也提高了任何作出Ⅰ/0请求的代码的性能。 结果之一是,内核模式驱动程序不必按照Ⅰ/0请求被送往I/0管理器的顺序来处理它们。 Ⅰ/管理器或更高层驱动程序能依据Ⅰ/0请求被接受的顺序重新编程它们,或者能将一个 大的数据传输请求拆分成几个较小的传输请求。此外,驱动程序能重叠I/0请求处理,特 别是在对称多处理器平台中,就像1.3.4,“多处理器安全”一节中提到的那样。 还有,对内核模式驱动程序的单独1/0请求的处理不必要序列化。这就是说,在驱动程序 开始处理下一个进来的I/0请求之前,它不必处理完每个IRP,就像在单处理器机器中, 驱动程序在被写成支持同步I/0的单任务操作系统所作的那样。 IRP被传递给驱动程序的标准例程,通过完成任何例程指定的操作以最终满足当前请求 驱动程序响应当前的IRP。当然,最低层的驱动程序被要求帮助I/0管理器和任何高层的 驱动程序处理同样的IRP,并通过设置IRP中的I/0状态块来跟踪每个请求的状态 驱动程序也能在其设备对象的特定部分维护当前I/0操作的信息,这个部分被称为设备扩 展 若想得到IRP处理和设备对象如何表示驱动程序的物理和逻辑设备的概述,可以参看第2 章“分层的I/0、IRP和I/0对象”。关于设备对象和设备扩展更详细的信息,参见第 章,“针对驱动程序系统定义的对象和支持”。 1111 location): ▪ 在固定部分(或头)中,I/O 管理器维护与原始请求有关的信息,例如调用者的线程 ID 和参数,还有在其上被打开文件的设备对象的地址,等等。固定部分也包含一个 I/O 状态块,驱动程序在其中设置请求的 I/O 操作的状态信息。 ▪ 在最高层驱动程序的 I/O 栈位置中,I/O 管理器、即插即用管理器、或电源管理器设 置驱动程序特定的参数,例如由相应驱动程序请求的特定操作(描述成一个函数代 码)和它使用的环境,以确定的它将要做些什么。如果需要的话,按照顺序,每一个 较高层的驱动程序创建相邻的较低层驱动程序的 I/O 栈位置。 因为给定的 IRP 通过每个驱动程序的标准例程集被处理,每一个标准例程能在 IRP 中访问 那个驱动程序的 I/O 栈位置,从而在驱动程序操作的每个阶段重用 IRP。另外,更高层的 驱动程序能创建(或重用)IRP 以发送请求到低层的驱动程序。 参见第 2 章,“分层的 I/O、IRP、和 I/O 对象”可以得到 IRP 通过分层的驱动程序的处理 过程的介绍。如果希望得到关于 IRP 设备类型特定的信息,参看《Windows 2000 驱动程序 开发参考》的卷 2;对于 PnP 和电源管理 IRP,参看《即插即用、电源管理和安装设计指 南》和《Windows 2000 驱动程序开发参考》的卷 1。 1.3.7 支持异步 I/O I/O 管理器提供异步 I/O 支持,从而使得 I/O 请求的发出者(通常是用户模式应用程序, 但有些时候是另一个驱动程序)可以继续执行,而不用等待它的 I/O 请求完成。提供异步 I/O 支持提高了系统整体的吞吐量,同样也提高了任何作出 I/O 请求的代码的性能。 结果之一是,内核模式驱动程序不必按照 I/O 请求被送往 I/O 管理器的顺序来处理它们。 I/O 管理器或更高层驱动程序能依据 I/O 请求被接受的顺序重新编程它们,或者能将一个 大的数据传输请求拆分成几个较小的传输请求。此外,驱动程序能重叠 I/O 请求处理,特 别是在对称多处理器平台中,就像 1.3.4,“多处理器安全”一节中提到的那样。 还有,对内核模式驱动程序的单独 I/O 请求的处理不必要序列化。这就是说,在驱动程序 开始处理下一个进来的 I/O 请求之前,它不必处理完每个 IRP,就像在单处理器机器中, 驱动程序在被写成支持同步 I/O 的单任务操作系统所作的那样。 IRP 被传递给驱动程序的标准例程,通过完成任何例程指定的操作以最终满足当前请求, 驱动程序响应当前的 IRP。当然,最低层的驱动程序被要求帮助 I/O 管理器和任何高层的 驱动程序处理同样的 IRP,并通过设置 IRP 中的 I/O 状态块来跟踪每个请求的状态。 驱动程序也能在其设备对象的特定部分维护当前 I/O 操作的信息,这个部分被称为设备扩 展。 若想得到 IRP 处理和设备对象如何表示驱动程序的物理和逻辑设备的概述,可以参看第 2 章“分层的 I/O、IRP 和 I/O 对象”。关于设备对象和设备扩展更详细的信息,参见第 3 章,“针对驱动程序系统定义的对象和支持
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有