
IO系统概述.ppt
41页•I/O系统概述系统概述•I/O软件的结构软件的结构•Windows I/O系统的结构系统的结构•Windows I/O系统的重要数据结构系统的重要数据结构•Windows 的驱动程序的驱动程序•Windows 的的I/O处理处理第六章第六章 I/OI/O系统系统1I/O系统概述•I/OI/O系系统统是是操操作作系系统统的的一一个个重重要要的的组组成成部分,负责管理系统中所有的外部设备部分,负责管理系统中所有的外部设备•计算机外部设备计算机外部设备 在在计计算算机机系系统统中中除除CPUCPU和和内内存存储储外外所所有有的的设设备备和和装装置置称称为为计计算算机机外外部部设设备备((外外围围设备、设备、I/OI/O设备)2•存存储储设设备备::用用来来存存放放各各种种信信息息的的设设备备称称为为存存储储设设备备,,例例如如,,软盘、硬盘、光盘和磁带等;软盘、硬盘、光盘和磁带等;•I/OI/O设设备备::用用来来向向计计算算机机输输入入和和输输出出信信息息的的设设备备,,如如键键盘盘、、鼠鼠标、显示器、打印机等标、显示器、打印机等I/O系统概述外部设备的分类外部设备的分类3I/OI/O系统的功能系统的功能1.1.状态跟踪状态跟踪 要掌握设备的状态。
要掌握设备的状态2.2.设备存取设备存取 实现对设备的存取操作实现对设备的存取操作3.3.设备分配设备分配 在在多多用用户户的的环环境境下下,,负负责设备的分配和回收责设备的分配和回收4.4.设备控制设备控制 设设备备控控制制包包括括设设备备的的驱驱动动、、完完成成和和故故障障中中断断处处理I/O系统概述4I/O软件的结构I/O设备管理软件的结构,其基本思想是分层构造,也就设备管理软件的结构,其基本思想是分层构造,也就是说在于把设备管理软件组织成为一系列的层次,其中是说在于把设备管理软件组织成为一系列的层次,其中低层与硬件相关,它把硬件与较高层次的软件隔离开来低层与硬件相关,它把硬件与较高层次的软件隔离开来而最高层的软件则向应用提供一个友好的,清晰而统一而最高层的软件则向应用提供一个友好的,清晰而统一的接口•设备独立性设备独立性•I/O系统的层次结构及主要功能系统的层次结构及主要功能5设备独立性 设设备备独独立立性性是是指指用用户户在在编编程程序序时时所所使使用用的的设设备备与与实实际际 设备无关设备无关 两类设备独立性:两类设备独立性: 1.1.一个程序应独立于分配给它的某类设备的具体设备。
一个程序应独立于分配给它的某类设备的具体设备 即即在在用用户户程程序序中中只只指指明明I/OI/O使使用用的的设设备备类类型型即即可可如如在在系系统统中中配配备备了了两两台台打打印印机机,,用用户户要要打打印印时时只只要要告告诉诉系统要将信息送到打印机即可系统要将信息送到打印机即可 2.2.程序要尽可能地与它使用的设备类型无关程序要尽可能地与它使用的设备类型无关 即即在在用用户户程程序序中中只只要要指指出出要要输输入入或或输输出出信信息息,,至至如如信信息息I/OI/O使用的设备不需用户指明使用的设备不需用户指明6设备独立性的优点设备独立性的优点1.1.方便用户编程方便用户编程2.2.使用程序运行不受具体的机器环境的限制使用程序运行不受具体的机器环境的限制3.3.便于程序移植便于程序移植设备独立性的实现设备独立性的实现 在在WindowsWindows系系统统中中,,把把设设备备与与文文件件统统一一处处理理,,对对于于 用户来说,并没有设备的概念用户来说,并没有设备的概念设备独立性7I/O系统的层次结构及主要功能8Windows I/O系统的结构•Windows 2000/XP的的I/O系统是重要的执行体组件系统是重要的执行体组件•设计目标设计目标–在单处理器或多处理器系统中都可以快速进行在单处理器或多处理器系统中都可以快速进行I/O处理。
处理–使用标准的使用标准的Windows 2000/XP安全机制保护共享的资源安全机制保护共享的资源–满足满足Microsoft Win32、、OS/2和和POSIX子系统指定的子系统指定的I/O服务的需要服务的需要–提供服务,使设备驱动程序的开发尽可能地简单,并且允许用高提供服务,使设备驱动程序的开发尽可能地简单,并且允许用高级语言编写驱动程序级语言编写驱动程序–根据用户的配置或者系统中硬件设备的添加和删除,允许在系统根据用户的配置或者系统中硬件设备的添加和删除,允许在系统中动态地添加或删除相应的设备驱动程序中动态地添加或删除相应的设备驱动程序–通过添加驱动程序透明地修改其他驱动程序或设备的行为通过添加驱动程序透明地修改其他驱动程序或设备的行为–为包括为包括FAT、、CD--ROM文件系统(文件系统(CDFS)、)、UDF((Universal Disk Format))文件系统和文件系统和Windows 2000/XP文件系统(文件系统(NTFS))的的多种可安排的文件系统提供支持多种可安排的文件系统提供支持–允许整个系统或者单个硬件设备进入和离开低功耗状态,这样可允许整个系统或者单个硬件设备进入和离开低功耗状态,这样可以节约能源。
以节约能源9I/O系统组件10•I/O管理器把应用程序和系统组件连接到各种虚拟管理器把应用程序和系统组件连接到各种虚拟的、逻辑的和物理的设备上,并且定义了一个支的、逻辑的和物理的设备上,并且定义了一个支持设备驱动程序的基本构架持设备驱动程序的基本构架•设备驱动程序为某种类型的设备提供一个设备驱动程序为某种类型的设备提供一个I/O接口设备驱动程序从设备驱动程序从I/O管理器接受处理命令,当处理管理器接受处理命令,当处理完毕后通知完毕后通知I/O管理器设备驱动程序之间的协同管理器设备驱动程序之间的协同工作也通过工作也通过I/O管理器进行管理器进行•PnP((即插即用,即插即用,plug and play))管理器通过与管理器通过与I/O管理器和总线驱动程序的协同工作检测硬件资管理器和总线驱动程序的协同工作检测硬件资源的分配,并且检测相应硬件设备的添加和删除源的分配,并且检测相应硬件设备的添加和删除•电源管理器通过与电源管理器通过与I/O管理器的协同工作检测整个管理器的协同工作检测整个系统和单个硬件设备,完成不同电源状态的转换系统和单个硬件设备,完成不同电源状态的转换 I/O系统组件11•WMI((Windows Management Instrumentation))支持例程,也叫做支持例程,也叫做Windows驱动程序模型(驱动程序模型(WDM,,Windows Driver Model))WMI提供者,允许驱提供者,允许驱动程序使用这些支持例程作为媒介,与用户态运动程序使用这些支持例程作为媒介,与用户态运行的行的WMI服务通讯。
服务通讯•注册表作为一个数据库,存储基本硬件设备的描注册表作为一个数据库,存储基本硬件设备的描述信息以及驱动程序的初始化和配置信息述信息以及驱动程序的初始化和配置信息•硬件抽象层(硬件抽象层(HAL))I/O访问例程把设备驱动程序访问例程把设备驱动程序与多种多样的硬件平台隔离开来,使它们在给定与多种多样的硬件平台隔离开来,使它们在给定的体系结构中是二进制可移植的,并在的体系结构中是二进制可移植的,并在Windows 2000/XP支持的硬件体系结构中是源代码可移植的支持的硬件体系结构中是源代码可移植的 I/O系统组件12I/O管理器(I/O manager)•I/O管理器定义有序的工作框架,在该框架里,管理器定义有序的工作框架,在该框架里,I/O请求被提交给设备驱动程序请求被提交给设备驱动程序 •大多数大多数I/O请求用请求用“I/O请求包(请求包(IRP))”表示,表示,I/O系统是由系统是由“包包”驱动的,这些包它从一个驱动的,这些包它从一个I/O系统组件移动到另一个系统组件移动到另一个I/O系统组件系统组件•I/O管理器创建代表每个管理器创建代表每个I/O操作的操作的IRP,,传递传递IRP给正确的驱动程序,并且当此给正确的驱动程序,并且当此I/O操作完成操作完成后,处理这个数据包后,处理这个数据包•I/O管理器还为不同的驱动程序提供了公共的管理器还为不同的驱动程序提供了公共的代码,驱动程序调用这些代码来执行它们的代码,驱动程序调用这些代码来执行它们的I/O处理处理 13PnP管理器•PnP管理器自动识别所有已经安装的硬件设备。
管理器自动识别所有已经安装的硬件设备•PnP管理器通过一个名为资源仲裁(管理器通过一个名为资源仲裁(resource arbitrating))的进程收集硬件资源需求(中断,的进程收集硬件资源需求(中断,I/O地址等)来实现硬件资源的优化分配,满地址等)来实现硬件资源的优化分配,满足系统中的每一个硬件设备的资源需求足系统中的每一个硬件设备的资源需求•PnP管理器通过硬件标识选择应该加载的设备管理器通过硬件标识选择应该加载的设备驱动程序驱动程序•PnP管理器也为检测硬件配置变化提供了应用管理器也为检测硬件配置变化提供了应用程序和驱动程序的接口,因此在程序和驱动程序的接口,因此在Windows 2000/XP中,在硬件配置发生变化的时候,相中,在硬件配置发生变化的时候,相应的应用程序和驱动程序也会得到通知应的应用程序和驱动程序也会得到通知 14电源管理器•电源管理需要底层硬件符合电源管理需要底层硬件符合ACPI标准标准•ACPI为系统和设备定义了不同的能耗状为系统和设备定义了不同的能耗状态,从态,从S0((正常工作)到正常工作)到S5((完全关闭)完全关闭)–电源消耗:计算机系统消耗的能源电源消耗:计算机系统消耗的能源–软件运行恢复:计算机系统回复到正常工作软件运行恢复:计算机系统回复到正常工作状态时软件能否恢复运行状态时软件能否恢复运行–硬件延迟:计算机系统回复到正常工作状态硬件延迟:计算机系统回复到正常工作状态的时间延迟的时间延迟 15•Windows 2000/XP电源管理策略电源管理策略–电源管理器是系统电源策略的所有者,因此整电源管理器是系统电源策略的所有者,因此整个系统的能耗状态转换由电源管理器决定,并个系统的能耗状态转换由电源管理器决定,并调用相应设备的驱动程序完成,电源管理器根调用相应设备的驱动程序完成,电源管理器根据以下因素决定当前的能耗状态据以下因素决定当前的能耗状态•系统活动状况系统活动状况•系统电源状况系统电源状况•应用程序的关机、休眠请求应用程序的关机、休眠请求•用户的操作,例如用户按电源按钮用户的操作,例如用户按电源按钮•控制面板的电源设置控制面板的电源设置 –设备驱动程序可以独立地控制设备的能耗状态设备驱动程序可以独立地控制设备的能耗状态 电源管理器16Windows 2000/XP I/O特点•在在Windows 2000/XP中,所有的中,所有的I/O操作操作都通过虚拟文件执行,隐藏了都通过虚拟文件执行,隐藏了I/O操作目操作目标的实现细节,为应用程序提供了一个标的实现细节,为应用程序提供了一个统一的到设备的接口界面统一的到设备的接口界面•用户态应用程序调用文档化的函数,这用户态应用程序调用文档化的函数,这些函数再依次地调用内部些函数再依次地调用内部I/O子系统函数子系统函数来从文件中读取、对文件写入和执行其来从文件中读取、对文件写入和执行其他的操作。
他的操作I/O管理器动态地把这些虚拟管理器动态地把这些虚拟文件请求指向适当的设备驱动程序文件请求指向适当的设备驱动程序 17一个典型的一个典型的I/O请请求过程求过程18重要系统对象•文件对象文件对象•驱动程序对象驱动程序对象•设备对象设备对象•I/O请求包(请求包(IRP)) 19文件对象•提供了基于内存的共享物理资源的表示法提供了基于内存的共享物理资源的表示法 表示文件的哪一部分由高速缓存管理器管理高速缓存,表示文件的哪一部分由高速缓存管理器管理高速缓存,以及它们驻留在高速缓存的什么地方以及它们驻留在高速缓存的什么地方指向专用高速缓存映射的指指向专用高速缓存映射的指针针表示描述一个映射文件的根结构表示描述一个映射文件的根结构指向区域对象指针的指针指向区域对象指针的指针表示文件在其上驻留的卷或分区表示文件在其上驻留的卷或分区指向卷参数块的指针指向卷参数块的指针表示文件在其上驻留的设备的类型表示文件在其上驻留的设备的类型指向设备对象的指针指向设备对象的指针表示表示I/O是否将被同步或异步、高速缓存或不高速缓存、是否将被同步或异步、高速缓存或不高速缓存、连续或随机等等连续或随机等等。
打开模式打开模式表示当调用者正在使用文件时,其他的调用者是否可表示当调用者正在使用文件时,其他的调用者是否可以打开文件来做读取、写入或删除操作以打开文件来做读取、写入或删除操作共享模式共享模式在文件中标识当前位置(只对同步在文件中标识当前位置(只对同步I/O有效)字节偏移量字节偏移量标识文件对象指向的物理文件标识文件对象指向的物理文件文件名文件名目的目的属性属性20•打开一个文件对象打开一个文件对象文件对象21驱动程序对象和设备对象•驱动程序对象在系统中代表一个独立的驱动程序对象在系统中代表一个独立的驱动程序,并且为驱动程序,并且为I/O记录每个驱动程序记录每个驱动程序的调度例程的地址(入口点)的调度例程的地址(入口点)•设备对象在系统中代表一个物理的、逻设备对象在系统中代表一个物理的、逻辑的或虚拟的设备并描述了它的特征辑的或虚拟的设备并描述了它的特征22驱动程序对象和设备对象23I/O请求包•存储处理存储处理I/O请求所需信息请求所需信息 •线程调用线程调用I/O服务时,服务时,I/O管理器就构造一个管理器就构造一个IRP来表示在整个系统来表示在整个系统I/O进展中要进行的操作进展中要进行的操作 •I/O管理器在管理器在IRP中保存一个指向调用者文件对中保存一个指向调用者文件对象的指针象的指针 •两部分组成:两部分组成:–固定部分(称作标题):请求的类型和大小、是同步固定部分(称作标题):请求的类型和大小、是同步请求还是异步请求、用于缓冲请求还是异步请求、用于缓冲I/O的指向缓冲区的指的指向缓冲区的指针和随着请求的进展而变化的状态信息针和随着请求的进展而变化的状态信息 –一个或多个堆栈单元:一个功能码、功能特定的参数一个或多个堆栈单元:一个功能码、功能特定的参数和一个指向调用者文件对象的指针和一个指向调用者文件对象的指针 24I/O系统对象的关系25Windows 2000/XP设备驱动程序•支持多种类型的设备驱动程序和编程环境支持多种类型的设备驱动程序和编程环境 •核心驱动程序的分类核心驱动程序的分类–文件系统驱动接受访问文件的文件系统驱动接受访问文件的I/O请求。
请求–同同Windows 2000/XP的的PnP管理器和电源管理器有关管理器和电源管理器有关的设备驱动程序的设备驱动程序–为为Windows NT编写的设备驱动程序编写的设备驱动程序–Win32子系统显示驱动程序和打印驱动程序将把设备子系统显示驱动程序和打印驱动程序将把设备无关的图形(无关的图形(GDI))请求转换为设备专用请求请求转换为设备专用请求–符合符合Windows驱动程序模型(驱动程序模型(WDM,,Windows Drivers Model)的)的WDM驱动程序,包括对驱动程序,包括对PnP,,电电源管理和源管理和WMI的支持26•有三种类型的有三种类型的WDM驱动程序驱动程序–总线驱动程序(bus driver)管理逻辑的或物理的管理逻辑的或物理的总线,例如总线,例如PCMCIA,, PCI,, USB,, IEEE 1394,, 和和ISA,,总线驱动程序需要检测并向总线驱动程序需要检测并向PnP管理管理器通知总线上的设备,并且能够管理电源器通知总线上的设备,并且能够管理电源–功能驱动程序功能驱动程序(function driver)管理具体的一种管理具体的一种设备,对硬件设备进行的操作都是通过功能驱动设备,对硬件设备进行的操作都是通过功能驱动程序进行的。
程序进行的–过滤驱动程序过滤驱动程序(filter driver)与功能驱动程序协与功能驱动程序协同工作,用于增加或改变功能驱动程序的行为同工作,用于增加或改变功能驱动程序的行为 Windows 2000/XP设备驱动程序27•用户态的驱动程序用户态的驱动程序–虚拟设备驱动程序(虚拟设备驱动程序(VDD))通常用于模拟通常用于模拟16位位MS--DOS应用程序它们捕获应用程序它们捕获MS--DOS应用程应用程序对序对I/O端口的引用,并将其转化为本机端口的引用,并将其转化为本机Win32 I/O函数Windows 2000/XP中用户态中用户态MS--DOS应用程序不能直接访问硬件,而必须通过一个真应用程序不能直接访问硬件,而必须通过一个真正的核心设备驱动程序正的核心设备驱动程序–Win32子系统的打印驱动程序将与设备无关的图子系统的打印驱动程序将与设备无关的图形请求转换为打印机相关的命令,这些命令再发形请求转换为打印机相关的命令,这些命令再发给核心模式的驱动程序例如并口驱动给核心模式的驱动程序例如并口驱动(Parport.sys)、、USB打印机驱动打印机驱动(Usbprint.sys)等等 Windows 2000/XP设备驱动程序28•硬件支持驱动可以分类如下硬件支持驱动可以分类如下–类驱动程序(类驱动程序(class drivers))为某一类设备执为某一类设备执行行I/O处理,例如磁盘、磁带或光盘。
处理,例如磁盘、磁带或光盘–端口驱动程序(端口驱动程序(port drivers))实现了对特定于实现了对特定于某一种类型的某一种类型的I/O端口的端口的I/O请求的处理,例如请求的处理,例如SCSI–小端口驱动程序把对端口类型的一般的小端口驱动程序把对端口类型的一般的I/O请求请求映射到适配器类型例如,一个特定的映射到适配器类型例如,一个特定的SCSI适适配器 Windows 2000/XP设备驱动程序29文件系文件系统操作统操作的例子的例子30驱动程序的结构•设备驱动程序包括一组被调用处理设备驱动程序包括一组被调用处理I/O请求不同阶段的请求不同阶段的例程例程 31•初始化例程,当初始化例程,当I/O管理器把驱动程序加载到操作系统中管理器把驱动程序加载到操作系统中时,它执行驱动程序的初始化例程时,它执行驱动程序的初始化例程•添加设备例程,用于支持添加设备例程,用于支持PnP管理器的操作管理器的操作•一系列调度例程,调度例程是设备驱动程序提供的主要函一系列调度例程,调度例程是设备驱动程序提供的主要函数•启动启动I/O例程,驱动程序可以使用启动例程,驱动程序可以使用启动I/O例程来初始化与例程来初始化与设备之间的数据传输。
设备之间的数据传输•中断服务例程(中断服务例程(ISR),),当一个设备中断时,内核的中断当一个设备中断时,内核的中断调度程序把控制转交给这个例程调度程序把控制转交给这个例程ISR运行在高级的设备运行在高级的设备中断请求级(中断请求级(IRQL))上,越简单越好,以避免对低优先上,越简单越好,以避免对低优先级中断产生不希望的阻塞级中断产生不希望的阻塞•中断服务中断服务DPC例程,例程,DPC例程执行在例程执行在ISR执行以后的大部执行以后的大部分设备中断处理工作分设备中断处理工作DPC例程在低于例程在低于ISR的的IRQ的时候的时候执行,从而避免对其他中断产生不希望的阻塞执行,从而避免对其他中断产生不希望的阻塞DPC例程例程初始化初始化I/O完成并启动关于设备的下一个队列的完成并启动关于设备的下一个队列的I/O操作 驱动程序的结构32•此外,还经常有如下部分此外,还经常有如下部分–一个或多个完成例程,通过一个较低层的驱动程序确一个或多个完成例程,通过一个较低层的驱动程序确定何时完成对一个定何时完成对一个IRP的处理–取消取消I/O例程,如果某个例程,如果某个I/O操作可以被取消,驱动程操作可以被取消,驱动程序就可以定义一个或多个取消序就可以定义一个或多个取消I/O例程。
例程–卸载例程,卸载例程释放任何驱动程序正在使用的系卸载例程,卸载例程释放任何驱动程序正在使用的系统资源,以使统资源,以使I/O管理器能从内存中删除它们管理器能从内存中删除它们–系统关闭通知例程,这个例程允许驱动程序在系统关系统关闭通知例程,这个例程允许驱动程序在系统关闭的做清理工作闭的做清理工作–错误记录例程,当意外错误发生时,驱动程序的错误错误记录例程,当意外错误发生时,驱动程序的错误记录例程将记录发生的事情,并通知记录例程将记录发生的事情,并通知I/O管理器I/O管理器把这个信息写入错误记录文件管理器把这个信息写入错误记录文件 驱动程序的结构33驱动程序的同步问题•必须同步执行它们对全局驱动程序数据必须同步执行它们对全局驱动程序数据的访问的访问 –驱动程序的执行可以被高优先级的线程抢先,驱动程序的执行可以被高优先级的线程抢先,或时间片(或时间段)到时被中断,或被其或时间片(或时间段)到时被中断,或被其他中断所中断他中断所中断–在多处理器系统中,在多处理器系统中,Windows 2000/XP能够能够同时在多个处理器上运行驱动程序代码同时在多个处理器上运行驱动程序代码34Windows 2000/XP的I/O处理•I/O的类型的类型•对单层驱动程序的对单层驱动程序的I/O请求处理请求处理•对多层驱动程序的对多层驱动程序的I/O请求请求35Windows 2000/XP的I/O类型•同步同步I/O和异步和异步I/O–“同步同步”:设备执行数据传输并在:设备执行数据传输并在I/O完成时返回一个状态码,然完成时返回一个状态码,然后程序就可以立即访问被传输的数据后程序就可以立即访问被传输的数据 –“异步异步”:应用程序发布:应用程序发布I/O请求,然后当设备传输数据的同时,请求,然后当设备传输数据的同时,应用程序继续执行应用程序继续执行 •快速快速I/O::允许允许I/O系统不产生系统不产生IRP而直接到文件系统驱动而直接到文件系统驱动程序或高速缓存管理器去执行程序或高速缓存管理器去执行I/O请求请求 •映射文件映射文件I/O和文件高速缓存和文件高速缓存 :把磁盘中的文件视为进程:把磁盘中的文件视为进程的虚拟内存的一部分,程序可以把文件作为一个大的数组的虚拟内存的一部分,程序可以把文件作为一个大的数组来访问,而无需做缓冲数据或执行磁盘来访问,而无需做缓冲数据或执行磁盘I/O的工作的工作 •分散分散/集中集中I/O::应用程序执行一个读取或写入操作,从虚应用程序执行一个读取或写入操作,从虚拟内存中的多个缓冲区读取数据并写到磁盘上文件的一个拟内存中的多个缓冲区读取数据并写到磁盘上文件的一个连续区域里连续区域里 36对单层驱动程序的I/O请求处理 •I/O请求经过子系统请求经过子系统DLL。
•子系统子系统DLL调用调用I/O管理器的服务管理器的服务•I/O管理器以管理器以IRP的形式给驱动程序(这的形式给驱动程序(这里指设备驱动程序)发送请求里指设备驱动程序)发送请求•驱动程序启动驱动程序启动I/O操作•在设备完成了操作并且中断在设备完成了操作并且中断CPU时,设时,设备驱动程序服务于中断备驱动程序服务于中断•I/O管理器完成管理器完成I/O请求 37对单层驱动程序的I/O请求处理 38对多层驱动程序的I/O请求•在单层在单层I/O处理的基础上变化而来处理的基础上变化而来•I/O管理器调用顶层设备驱动程序管理器调用顶层设备驱动程序•然后上层设备驱动程序调用低一级的驱然后上层设备驱动程序调用低一级的驱动程序,形成动程序,形成I/O请求的转换、传递和嵌请求的转换、传递和嵌套最终形成对设备的操作套最终形成对设备的操作•分层驱动程序多用于几个设备的协作或分层驱动程序多用于几个设备的协作或者像文件、网络这样的复杂功能实体中者像文件、网络这样的复杂功能实体中39处理中断•I/O设备中断发生设备中断发生•处理器将控制转交给内核陷阱处理程序处理器将控制转交给内核陷阱处理程序•内核陷阱处理程序将在它的中断向量表内核陷阱处理程序将在它的中断向量表中搜索定位用于设备的中搜索定位用于设备的ISR •ISR被首次调用时,它通常只获得设备状被首次调用时,它通常只获得设备状态,后响应设备的中断。
然后它使一个态,后响应设备的中断然后它使一个DPC排队,清除中断并退出排队,清除中断并退出•过一段时间,在过一段时间,在DPC例程被调用时,设例程被调用时,设备完成对中断的处理备完成对中断的处理 40完成I/O请求•设备驱动程序的设备驱动程序的DPC例程执行完以后,例程执行完以后,I/O处理处理结束之前还可以有一些工作做,这一阶段称为结束之前还可以有一些工作做,这一阶段称为I/O完成阶段,它因完成阶段,它因I/O操作的不同而不同操作的不同而不同•I/O管理器通过程中执行一个核心态的异步管理器通过程中执行一个核心态的异步过程调用(过程调用(APC))来完成这个操作来完成这个操作•APC例程将数据和返回的状态复制到最初调用例程将数据和返回的状态复制到最初调用者的地址空间,释放代表者的地址空间,释放代表I/O操作的操作的IRP,,并将并将调用者的文件句柄设置为有信号状态调用者的文件句柄设置为有信号状态 •最初调用者从它们的等待状态中被唤醒最初调用者从它们的等待状态中被唤醒 41。
