专利名称::用于监视正在计算机系统中执行的应用内的子进程的建立和解除的方法和设备的制作方法
技术领域:
:本发明一般地涉及在执行软件应用期间跟踪进程建立。更具体地,本发明涉及监视正执行的应用的子进程和孙进程的建立和解除。
背景技术:
:图1中示出常规计算机系统100,其具有若干硬件部件,包括诸如中央处理器(CPU)的处理器110、诸如RAM的存储器和非易失性存储媒体130,它们彼此通信。未示出的其它硬件部件包括磁盘机、网络部件以及其它业内人士周知的硬件部件。常规计算机系统100还包括可以利用这些硬件部件110、120、130存储并执行的软件程序。具体地,计算机系统100中的软件包括驻留在存储媒体130中的应用150、存储器120中存储的操作系统160和可能存储在存储媒体130及存储器120中的其它应用或程序。当计算机现用时,可在存储器120中找到应用150。当关掉计算机时,可在存储媒体130中找到操作系统160。这样,如业内人士应该了解的那样,可在不同的位置存储操作系统160。应用150和操作系统160彼此并且可能和系统100中的其它软件交互,以便如用户指定那样向用户提供数据存取以及控制系统100中的其它硬件和软件。计算机系统100的用户通过指示操作系统160执行或“运行”应用150而执行应用150。接着操作系统160利用存储器120、处理器110以及可在计算机系统100中得到的其它设备执行所需的应用150并且可能执行与应用150交织的其它程序。操作系统160可以是业内人士周知的任何常见操作系统。个人计算机中使用的流行常规操作系统包括诸如微软公司的各种32位视窗(“Win32”)操作系统。它们包括微软的视窗NT、视窗95和视窗98。其它可用作为操作系统160的其它常见操作系统包括供工作站使用的UNIX和供个人计算机使用的DOS。按照操作系统,系统中运行的基于Win32的应用被称为“进程”。每个进程至少包括单个由操作系统运行的执行线程。线程是代码的单元,其可从操作系统得到一些操作时间以便和其它代码单元并发地运行,而且线程必须和某进程相关。基于Win32的应用可以利用视窗操作系统提供的各种技术来提高并发运行多个应用的能力。这些并发技术中的一种是“多线索化”,其中一个或多个进程的一部分或“多个线程”是独立的并且可并发执行。然而,并发地执行二个独立线程有时并不特别有效。在一个正执行的应用或进程,即“父”进程,产生另一个“子”进程并且尤其在该子进程产生孙进程的情况中,出现这种低效率。当该父进程是一系列要执行的进程或者应用中的一个时,可能产生问题。例如,可能在其子进程或孙进程中一个或多个终止之前父进程已终止。尽管诸如视窗95的操作系统提供多线索技术,如果在被终止父进程的子进程仍为现用的同时开始执行某另一个应用,在一些计算机系统中可能造成破坏。图2示出在一计算机系统例如图1的系统100中存储供执行的一系列应用。该系列包括第一应用210、第二应用220和第三应用230,每个应用代表一级更大的用于安装软件程序的安装进程。应用210、220、230可存储在存储介质130或存储器120中,如图1中示出那样。应用210、220、230的执行是由存储器120中存储的操作系统240管理的。在图2中,由于操作系统240的控制,按顺序地执行应用210、220、230。图2是在已经开始执行第一应用210并且第一应用210已经建立子进程250、260的时刻画出的。此外,子进程260已经产生它自己的子进程,即“孙”进程270、280。在图2中,可能在终止子进程250、260或者孙进程270、280之前终止第一应用210的执行。如果该安装进程不等待子进程或孙进程的执行的终止,操作系统240可能启动第二应用220,即下一级安装的执行。在第一应用210的一个或多个子进程或者孙进程仍在执行的同时执行第二应用或可能执行另一个应用会在使用这些应用的计算机系统中造成破坏。在视窗95中,已公布的Win32API被认为是用于在终止某父应用的子进程之前延迟其它应用的执行。但是,由于Win32API不跟踪父应用的孙进程的建立,Win32API常常不能正确工作。从而,当只使用Win32API时,可能会在父进程的子进程尤其是孙进程终止之前开始执行其它应用。概言之,现存技术不能在计算机系统中执行应用期间可靠地跟踪子进程和孙进程的建立和解除。技术内容本发明一般地涉及监视正在计算机系统中经操作系统控制而执行的应用内的子进程和孙进程的建立和解除。子进程具有对应的子进程数据库结构,而正执行的应用具有对应的应用进程数据库结构。设置一个用于存储和正执行应用内正执行的子进程对应的现存子进程数据库结构的表。依据本发明的一个方面,当在执行应用期间建立新进程时,检索和该新进程对应的新进程数据库结构。利用该新进程数据库结构,检索和该新进程的父进程对应的父进程数据库结构。该父进程数据库结构和该应用进程数据库结构比较。若该父进程数据库结构和该应用进程数据库结构相同,把该新进程识别为一个现存的子进程。若把该新进程识别为现存子进程,把该新进程数据库结构添加到现存子进程数据库结构表中。依据本发明的另一个方面,监视应用内的子进程的建立和解除包括确定在执行该应用期间中何时终止某进程。检索和该终止进程对应的终止进程数据库结构。该终止进程数据库结构和该表中的现存子进程数据库结构比较,若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程识别为一个终止的子进程。若该终止进程被识别为终止的子进程,从该现存子进程数据库结构表中去掉该终止进程数据库结构。依据另一个方面,本发明可位于驻留在操作系统和正执行应用或进程之间的虚拟设备驱动程序中。可以在该计算机系统中的存储媒体中存储该虚拟设备驱动程序。该VxD(虚拟设备驱动程序)和操作系统以及正执行应用二者交互。依据本发明的再一个方面,周期地检查该表以判定该表是否具有入口。若该表不具有入口,可安全地假定现存子进程以及,可能地,相关的孙进程已经退出并且该应用的执行已完成。接着可以在因并发地执行一系列应用,例如在安装某软件程序期间,多个应用而产生破坏的最小风险下执行该系列中的其它应用。本发明的这些以及其它方面和优点会在下述连带着附图描述本发明的示范实施例的详细说明中变为清楚。图1是常规计算机系统100的概括方块图;图2是一个概括方块图,示出常规计算机系统100内一系列软件应用的执行;图3是依据本发明的一示范实施例的包含着用于监视正执行应用内的子进程的建立和解除的设备和方法和计算机系统300的概括方块图;图4是依据本发明的一示范实施例的监视正执行应用内子进程的建立的虚拟设备驱动程序的概括方块图;图5是依据本发明的一示范实施例的用来监视正执行应用内子进程的建立的方法的流程图;图6是依据本发明的一示范实施例的监视正执行应用内子进程的解除的虚拟设备驱动程序的概括方块图;以及图7是依据本发明的一示范实施例的用来监视正执行应用内子进程的解除的方法的流程图。具体实施例方式在下述详细说明中,将提供本发明的用来监视正执行应用内子进程的建立和解除的设备和方法的各种实施例。本发明的一些实施例,尤其是本发明的一些示范方法,将代表一些具体应用,包括一种计算机系统和一种计算机可读媒体。参照图3-7详细说明本发明的实施例。图3是包含着依据本发明的一实施例的用于监视正执行应用内子进程的建立和解除的一种设备和方法的计算机系统300的方块图。图3的计算机系统300包括处理器330和存储器325。处理器330可含有单个微处理器,或者含有用于把该计算机系统配置成多处理系统的多个微处理器。存储器325存储供处理器330执行的指令和数据的一部分。如果全部地或者部分地用软件(包括计算机程序)实现本发明的示范系统,存储器325在运行时存储可执行代码。存储器325可包括多组动态随机存取存储器(DRAM)以及高速缓冲存储器。图3的系统还包括海量存储设备335、外围部件(组)340、输入部件(组)355、便携式存储媒体驱动器(组)360、图形子系统370和显示器385。为了简明,图3中示出的部件描述成通过单条总线380连接。然而,可以通过一个或多个数据传输装置连接这些部件。例如,可以通过本地微处理器总线连接处理器330和存储器325,并且可通过一条或多条输入/输出(I/O)总线连接海量存储设备335、外围设备(组)340、便携式存储媒体驱动器(组)360和图形子系统370。典型地用磁盘机或光盘机实现的海量存储设备335是非易失性存储部件,用于存储供处理器330使用的数据和指令。在另一实施例中,海量存储设备存储一个计算机程序,该程序被执行时供装入到存储器325中以实现本发明的示范方法。也可以在处理器330中存储本发明的示范方法。便携式存储媒体驱动器360和诸如软盘、硬盘或光盘的便携式非易失性存储媒体一起运行,并且可以包括一种或多种机器可读媒体例如半导体存储器(如EEPROM)或者其它计算机可读媒体,用于对和从图3的计算机系统输入和输出数据以及代码。在一实施例中,在这样的便携式媒体上存储本发明的示范方法并且通过该便携式存储媒体驱动器360输入到该计算机系统300。外围设备(组)340可包括任何类型的计算机支持设备,例如输入/输出(I/O)接口,以便对计算机系统300增加其它功能。例如,外围设备(组)340可包括一个网络接口卡,用于使计算机系统300和网络、调制解调器等交互。输入设备(组)355提供用户接口的一部分。输入设备(组)355可包括用于输入字母数字以及其它键信息的字母数字键盘,或者包括指点设备,例如鼠标、跟踪球、操纵杆或光标方向键组。这样的设备提供用来和依据本发明的示范实施例的方法交互的辅助手段。为了显示文本和图形信息,图3的计算机系统300包含图形子系统370和显示器385。显示器385可包括阴极射线管(CRT)显示器,液晶显示器(LCD)、其它适用的显示器设备,或者其它用于显示以便使用户能观看子进程的状态例如子进程在正执行应用内的建立和解除的装置。图形子系统370接收文本和图形信息并处理这些信息以供输出到显示器385。显示器385可用于显示对象、部件接口和/或显示其它作为用户接口的一部分的信息。图3的系统300还包括声频系统350。在一实施例中,声频系统350包括一个声卡,该声卡从外围设备340中的麦克风接收声频信号。此外,图3的系统包括输出设备345。适用的输出设备的例子包括扬声器、打印机等等。图3的计算机系统中含有的设备是通用计算机系统中的典型设备,并且用来代表业内人士周知的大范围的这种计算机设备。图3的系统示出一种实践上可用来实现依据本发明的各种示范实施例的方法的平台。大量其它平台也是足以满足的,例如可从苹果计算机公司购到的基于Macintosh平台、网络平台、多处理器平台、其它个人计算机、工作站、主机、导航系统等等。计算机系统300还可包括一个用于监视的不同的显示装置,例如CRT显示器、LCD显示器、投影显示器等。类似地,任何类型的存储器可充当存储器325。除了部件接口之外,还可以使用其它接口装置,包括字母数字键盘、其它键信息或任何指点设备,诸如鼠标、跟踪球、操纵杆、光标或方向键。图3的计算机系统300还包括一个设备驱动程序,其中可存储依据本发明建立的示范虚拟设备驱动程序(“VxD”)。一些操作系统,例如视窗95,提供使用虚拟设备驱动程序,后者通常用于改进软件性能。虚拟设备驱动程序典型地是一个32位保护方式驱动程序,它管理诸如硬件设备或已安装软件的系统资源,从而多于一个的应用可同时使用资源。“VxD”中的“x”代表设备驱动程序的类型。例如,用于显示设备的虚拟设备驱动程序称为VDD,用于计时设备的虚拟设备驱动程序是VTD,用于打印设备的虚拟设备驱动程序是VPD,并依此类推。VxD支持用于典型计算机的硬件设备,包括盘控制器、串行和并行端口、键盘和显示设备,等等,如果多个应用之间的切换会破坏硬件设备的状态,该设备通常具有对应的虚拟设备和VxD。该VxD典型地为每个应用跟踪设备的状态并且确保只要某应用继续该设备处于正确状态。尽管大多数虚拟设备管理硬件,一些虚拟设备只管理已安装应用,例如MS_DOS设备驱动程序。这样的虚拟设备含有仿真该软件的代码或者确保该软件只使用对该目前运行的应用提供的数据。在图3中,VxD可存储在存储器325、海量存储器335或便携式存储媒体360中。虚拟设备驱动程序代表一种依据本发明的示范方法(后面更详细解释)并且可以和例如视窗95的操作系统一起使用以便监视应用执行期间子进程的建立和解除。图4示出依据本发明的一个示范虚拟设备驱动程序400。VxD400配置成判定新进程425是否是正执行应用410的现存子进程465。从而,VxD400和正执行应用410以及操作系统405通信,其中操作系统405存储在图3的计算机系统300的海量存储设备335或存储器325中。操作系统405控制应用410的执行。在图4中,正执行应用410示成是现存子进程445和450的父进程。正执行应用410可由操作系统405直接控制,或者,它可以是在操作系统405控制下正执行的一个或多个父进程建立的子进程或孙进程。从而,例如,如果正执行应用410是另一个父进程(未示出)的子进程,现存子进程445和450应是该父进程的孙进程。这样,VxD400配置成监视子进程和孙进程二者的建立和解除。在图4中,应用410具有对应的用来标识具体应用410的应用数据库结构(“APDB”)412。APDB412包括若干进程标识符,这些标识符分别标识应用410、应用410的任何子进程以及应用410的任何孙进程。例如,下述代码代表视窗95或视窗NT操作系统中使用的一个示例APDB<prelisting-type="program-listing"> typedefstructPDB DWORDType; DWORDcReference; DWORDunl; DWORDpSomeEvent; DWORDTerminationStatus; DWORDun2; DWORDDefaultHeap; DWORDMemoryContext; DWORDflags; DWORDpPSP; WORDPSPSelector; WORDMTEIndex; WORDcThreads; WORDcNotTermThreads; WORDun3; WORDcRingOThreads; DWORDHeapHandle; DWORDW16TDB; DWORDMemMapFiles; PENVIRONMENTDBpEDB; DWORDpHandleTable; structPDB*ParentPDB; DWORDMODREFList; DWORDThreadList; DWORDDebuggeeCB;<!--SIPO<DPn="8">--><dpn="d8"/> DWORDLocalHeapFreeHead; DWORDInitialRingOID; DWORDcrst[41; DWORDun4[3] DWORDpConsole; DWORDtlsInUseBits1; DWORDtlsInUseBits2; DWORDProcessDWORD; structPDB*ProcessGrou DWORDpExeMODREF; DWORDTopExcFilter; DWORDBasePrilrity; DWORDHeapOwnList; DWORDHeapHandleBlockLis DWORDpSomeHeapPtr; DWORDpConsoleProvider; WORDEnvironSelector; WORDErrorMode; DWORDpevtLoadFinished; WORDUTState; }PDB,*PPDB;</pre>在图4中,操作系统405包括一个控制计算机系统300中新进程的建立的系统进程建立子例程415。系统进程建立子例程415在应用410的执行期间建立具有对应的新进程数据库结构(“NPDB”)430的新进程425。新进程数据库结构430可以包括一些进程标识符,它们分别标识新进程425和新进程425的父进程。在图4中,一旦建立新进程425,系统进程建立子例程415在线路435上输出一个信号。在操作系统405为视窗95的一个例子中,该信号是Create_Thread信号或Thread_Init信号。在图4中,操作系统405还包括一个取得现行进程子例程420。在该操作系统405为视窗95的例子中,子例程420是视窗95操作系统提供的VWIN32_GetCurrentProcessHandle子例程。当由调用方475调用时,取得现行进程子例程420在线路440上把新进程数据库结构430转发给VxD400。在图4中,已经开始执行应用410并且已经产生包括着子进程445和子进程450的子进程。这些进程445和450被当成是“现存的”,因为它们尚未终止,反之则被标识为正执行应用410的终止子进程。现存子进程445和450分别具有对应的现存子进程数据库(“EPDB”),在图4中用EPDB0和EPDB1表示。每个现存子进程数据库结构最好包括标识它自己、它的父进程以及它的祖父进程或应用(若有的话)的各个进程标识符。在图4中,设置一个表455,用于存储和该正执行应用内现存的子进程对应的现存子进程数据库结构。如图4中所示,已经利用后面会更详细说明的方法把和现行子进程445和450对应的EPDB0和EPDB1按序地添加到表455中。取决于所需实现,可以用软件或者硬件实现表455。例如,在图3中,可以利用计算机系统300中的缓冲器实现表455,并且保持在存储器425或者海量存储器335中。图4中示出表455至少具有四个条目(条目0到条目3),并且可按该程序的具体应用的需要具有任何数量的条目。在图4中,设置一个指针460以用于标识表455中的一个现存子进程数据库结果,最好是最最近添加到该表中的EPDB。在图4,EPDB1是在EPDB0的后面添加到表455中的,从而指针460指向EPDB1。指针460最好用一个计数器体现,其可以用计算机系统300的硬件或者软件实现。指针460是可移动的以指向表455中各条目中的任一条目,如后面更详细说明那样。在图4中,VxD配置成监视新进程425的建立和判定能否在框465中把新进程425分类为正执行应用410的一个现存子进程。为此,VxD400包括执行在图5的流程图中描述的各特定操作的各个部分。在图4和5中,在步骤510中开始应用410的执行,VxD400包括一个判定部分470,其在步骤520判定何时建立新进程425。如图4中所示,判定部分470和系统进程建立子例程415通信,以便在线路435上接收指示已经建立新进程425的信号。从而,在该操作系统405为视窗95的例子中,当建立新进程425时VxD400的判定部分470在线路435上接收CreateThread信号或者ThreadInit信号。如业内人士理解的那样,可以向判定部分470传送其它各种报文和信号,以便告诉VxD400线程的建立。在图5中,在步骤520中判定已经建立新进程425后,在步骤530中,VxD400调用“取得现行进程”子例程420以便在线路440上得到和新进程425对应的新进程数据库结构430。如图4中所示,操作530是由在线路上和取得现行进程子例程420通信的调用部分475实现的。在该操作系统405为视窗95的例子中,调用部分475调用子例程VWIN32_GetCurrentProcessHandle来得到和新进程425对应的现行进程句柄或数据库结构,即NPDB430。在图4和5中,当调用取得现行进程子例程420时,在步骤530中把NPDB430传送到调用部分475。在NPDB430内,含有标识新进程425的父进程的父进程标识符。这样,VxD400可以利用该父进程标识符检索新进程425的父进程的父进程数据库结构(PPDB)。例如,在一实施例中,和NPDB430一起传送一个指针,然后VxD400可利用该指针从操作系统405检索该PPDB。如图4和5中所示,虚拟设备驱动程序400还包括一个和调用部分以及正执行应用410通信的比较部分480。比较部分480从调用部分475接收该PPDB,并且接着在步骤540中比较该PPDB和与应用410对应的APDB412。这样,VxD400确定线程425是否是正执行应用410的子进程。若正在执行多于一个的应用,该PPDB和各个应用的应用数据库结构比较。在图5的步骤550中,若比较部分480判定在与新进程425的父进程对应的PPDB和APDB412之间不存在相同,则VxD识别新进程425不是正执行应用410的子进程,并且VxD不注意新进程425,然后流程返回到步骤520。另一方面,如果在步骤550中PPDB和APDB匹配,该流程进入步骤560。在步骤560中,VxD400的标识部分485在框465中把新进程425标识为现存子进程。接着把该正面识别告诉VxD400的加法器部分490。在图4和5中,步骤560后在步骤570,加法器部分490从判定部分470检索NPDB430并且把NPDB430加到现存子进程数据库表455的条目“2”中。在把NPDB430加到表455后,移动指针以指向条目“2”中的NPDB430。在该利用计数器维持指针460的例子中,该计数器递增“1”。然后图5的方法从步骤570返回到520以便确定在执行应用410中何时建立下个新进程。如图6和7中示出那样,依据本发明的各实施例的示范虚拟设备驱动程序也能临视正执行应用内的线程的解除。示范性虚拟设备驱动程序600具有和VxD400相类似的各个部分,并且还包括下面详细说明的配置成监视正执行应用410内子进程和孙进程的解除的各个部分。在图6中,图3的计算机系统300的海量存储设备335或存储器325中存储的操作系统605共有图4中的操作系统405的特性。例如,操作系统605类似地控制应用410的执行并且包括取得现行进程子例程420。此外,操作系统605包括一个系统进程终止子例程610,子例程610在计算机系统300中正执行应用410的同时控制进程的终止。图6中,系统进程终止子例程610在应用410的执行中终止具有对应的终止进程数据库结构(“TPDB”)620的进程615。TPDB620最好包括和图4的NPDB430相类似的进程标识符组。一旦终止进程615,系统进程终止子例程610在线路625上输出一个信号。在操作系统605为视窗95的一个例子中,该信号是Terminate_Thread信号。利用视窗95,系统进程终止子例程610还可以向线路625输出其它指示解决线程的报文信号,其中包括Thread_Not_Executable报文信号和Destroy_Thread报文信号。如业内人士应了解那样,可以对线路625输出各种其它类似的报文信号以通知VxD600某线程的解除。在图6中,已经开始执行应用410,并且已经产生现存子进程630、635和640。现存子进程630-640各具有对应的EPDB,即EPDB0、EPDB1和EPDB2,如图6中所示。利用上面根据图4和5说明的方法,已经把EPDB0-2加到表455中。在图6中,VxD600不仅配置成类似于图4的VxD400在应用410的执行中监视子进程的建立,还配置成监视进程615的终止并确定终止进程615是否是现存子进程630-640中的任一个。为了实现这种监视,VxD400包括实现图7的流程图700所描述的一些特定操作的若干部件。在图6和7中,在步骤710开始应用410的执行。VxD600包括一个在步骤720中确定何时终止进程615的判定部分645。判定部分645和系统进程终止子例程610通信,以便从线路625接收指示进程615已终止的信号。在操作系统405为视窗的该例子中,判定部分645对线路625监视Terminate_Thread报文信号或Thread_Not_Executable报文信号或Destroy_Thread报文信号。通过对线路625监视这些信号中的任一个,VxD600得知何时终止某线程,例如进程615。在图7中,在步骤720中确定进程615已终止后,VxD600在步骤730中利用调用部分655调用“取得现行进程”子例程420,以便在线路650上得到和终止进程615对应的终止进程数据库结构620。在操作系统605为视窗95的该例中,调用部分655调用子例程VWIN32_GetCurrentProcessHandle来得到作为和终止进程615对应的现行进程句柄或数据库结构的TPDB620。如图6和7中所示,虚拟设备驱动程序600还包括一个和调用部分655通信接收TPDB620的并接着在步骤740中把TPDB620和表455中存储的现存子进程数据库结构EPDB0_2比较的比较部分660。在图6和7的步骤750中,若比较部分660判定TPDB620和表455中存储的任何现存进程数据库结构EPDB0_2之间不存在匹配,VxD600识别终止进程615不是现存子进程630-640中的一个,然后该流程返回到步骤720。在步骤760中,若比较部分660判定TPDB620和表455中存储的EPDB0-2中的任一个相同,标识部分把终止进程615标识为终止子进程。例如,在图6中,比较部分660确定TPDB620和表455中存储的EPDB2相同,从而标识部分670把终止进程615标识为一个终止的子进程,即子进程640。在图6和7中,流程从步骤760进入步骤770中,在步骤770中位于VxD600内的删除部分675从现存子进程数据库结构EPDB0-2的表455中删除TPDB620。即,在图6中因为EPDB2和TPDB620匹配,从表455中删除EPDB2。在其它的例子中,当表455中存储的一个或多个其它EPDB和TPDB620匹配时,还从表455删除这样的EPDB。在从表455删除EPDB后,移动指针以指向剩余中的最最近添加到表455中的现存子进程数据库结构。这样,在图2中,在从表455删除EPDB之后,向回接一个条目移动指针460以指向条目“1”即EPDB1。在另一个例子中,在从该表中删除EPDB0的情况下,把EPDB1移动到条目“0”,EPDB2移动到条目“1”,并且把指针向回移动一个条目以指向条目“1”中的EPDB2。若指针460是用一个计数器实现的,则该计数器递减“1”或者,在其它例子中,递减从表455删除的条目数量。接着图7的方法从步骤770返回到步骤720以判定执行应用410中何时解除另一个进程。依据本发明的各示范实施例,若正在执行的应用产生子进程,向被监视进程表455添加和该子进程对应的子进程数据库结构。当该子进程终止时,从表455删除该子进程数据库结构。这样,本发明的各实施例还在计算机系统中对一系列的应用或者进程的执行提供控制。例如,一个软件程序的安装进程通常包括执行其中包含的一系列的安装应用。为了避免计算机系统中的破坏,常常要求按顺序地执行这些安装应用,从而不并发地执行二个安装应用。当执行一系列应用中的一个应用时,示例VxD,例如VxD400或者600,周期地判定表455是否具有任何条目。这样,如果表455不含有现存子进程数据库结构,该VxD识别出现存子进程并且可能相关的孙进程已经退出而且完成该应用的执行。从而,该VxD可接着信令操作系统按顺序执行下一个应用,例如安装进程中的下个步骤。在别的示范实施例中,启动被监视应用的执行的操作系统或者程序调用VxD以判定该表是否空。在用计数器实现表455的例子中,VxD判定该计数器是否为零。操作系统可能以这种方式周期性地调用VxD,例如每5秒等。若该计数器不等于零,接着按希望继续周期性调用。反之,则可安全假定已经终止被监视应用以及其子女,并可执行或者安装该系列中的下个程序。应理解上面说明的具体实施例仅仅解说本发明的原理,而且业内人士可以作出各种修改并不背离本发明的范围和精神。从而,本发明的范围仅由后面的权利要求书的范围限定。权利要求1.一种用于监视正在计算机系统中执行的并由操作系统控制的应用内子进程的建立和解除的方法,其中每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该方法包括提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表;判定该应用执行中何时建立新进程;检索和该新进程对应的新进程数据库结构;利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;比较该父进程数据库结构和该应用进程数据库结构;若该父进程数据库结构和该应用进程数据库结构相同,把该新进程标识为一个现存子进程;以及若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。2.权利要求1的方法,还包括判定该应用执行中何时终止一进程;检索和该终止进程对应的终止进程数据库结构;比较该终止进程数据库结构和该表中的各现存子进程数据库结构;若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程,以及若把该终止进程标识为终止子进程,从该现存在进程数据库结构表中删除该终止进程数据库结构。3.权利要求1的方法,其中在该计算机系统的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括提供一个指向该表中的一个现存子进程数据库结构的指针;以及在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构。4.权利要求2的方法,其中在该计算机系统的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括提供一个指向该表中的一个现存子进程数据库结构的指针;在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构;以及在从该表删除该终止进程数据库结构后,移动该指针以指向现存子进程数据库结构中最最近添加到该表中的一个。5.权利要求4的方法,其中在该计算机系统中的一个计数器里保持该指针,并且其中移动指针指向新进程数据库结构包括递增该计数器;以及移动指针指向最最近添加到该表中的现存子进程包括递减该计数器。6.权利要求2的方法,其中该正执行应用是该计算机系统内存储的供执行的一系列应用中的一个,该方法还包括周期性地判定该表是否包含任何子进程数据库结构;以及若该表不包含现存子进程数据库结构,执行该应用系列中的下个应用。7.权利要求5的方法,其中该正执行应用是计算机系统内存储的供执行的一系列应用中的一个,该方法还包括周期性地判定该计数器的值是否为零;以及若该计数器的值为零,执行该应用系列中的下个应用。8.权利要求6的方法,其中该应用系列至少是一安装程序的一部分。9.权利要求1的方法,其中该操作系统是具有用来建立该新进程的并且随后提供CreateThread信号的系统进程建立子例程的视窗操作系统,该操作系统还具有GetCurrentProcessHandle子例程以便提供该新进程数据库结构。10.权利要求9的方法,其中判定何时建立新进程包括接收CreateThread信号。11.权利要求9的方法,其中检索新进程数据库结构包括调用Get_Current_Process_Handle子例程。12.权利要求9的方法,其中检索父进程数据库结构包括利用一个新进程数据库结构中的用来标识父进程数据库结构的指针。13.权利要求2的方法,其中该操作系统是视窗操作系统,其具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程。14.权利要求13的方法,其中判定何时终止进程包括接收Terminate_Thread信号。15.权利要求13的方法,其中检索终止进程数据库结构包括调用Get_Current_Process_Handle子例程。16.一种用于监视正在计算机中执行的并由视窗操作系统控制的应用内子进程的建立和解除的方法,其中每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,视窗操作系统具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,该操作系统还具有一个调用时提供和该新进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,该方法包括提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表;一旦接收Create_Thread信号判定已经建立新进程;在判定已建立新进程后,调用Get_Current_Process_Handle子例程以便检索新进程数据库结构;利用该新进程数据库结构中的一个指针确定和该新进程的父进程对应的父进程数据库结构;比较该父进程数据库结构和该应用进程数据库结构;若该父进程数据库结构和该应用进程数据库结构相同,把该新进程标识为一个现存子进程;以及若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。17.权利要求16的方法,其中,该操作系统还具有用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程,当被调用时Get_Current_Process_Handle子例程还提供和终止进程对应的终止进程数据库结构,该方法还包括一旦接收Terminate_Thread信号,判定该进程已结束;在判定该进程已结束后,调用Get_Current_Process_Handle子例程以检索终止进程数据库结构;比较该终止进程数据库结构和该表中的各现存子进程数据库结构,若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程;以及若把该终止进程标识为终止子进程,从该现存子进程数据库结构表中删除该终止进程数据库结构。18.一种位于计算机系统的存储媒体中的用于监视正在该计算机系统执行的并由操作系统控制的应用内的子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,并设置一个用于存储和该正执行应用的现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括一个判定在该应用的执行中何时建立新进程的判定部分;一个调用部分,其(i)检索和该新进程对应的新进程数据库结构,并且(ii)利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;一个标识部分,若该父进程数据库结构和该应用进程数据库结构相同,其把该新进程标识为一个现存子进程;以及一个添加部分,若该新进程被标识为现存子进程,它把该新进程数据库结构添加到该现存子进程数据库结构表中。19.权利要求18的虚拟设备驱动程序还包括一个判定该应用执行中何时终止进程的判定部分;一个检索和该终止进程对应的终止进程数据库结构的调用部分;一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程,以及一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构表中删除该终止进程数据库结构。20.权利要求18的虚拟设备驱动程序,其中该操作系统是具有一个用于建立该新进程并随后提供Create_Thread信号的系统进程建立子例程的视窗操作系统,该操作系统还具有一个用于提供该新进程数据库结构的Get_Current_Process_Handle子例程。21.权利要求20的虚拟设备驱动程序,其中该判定部分和该系统进程建立子例程通信并且通过接收Create_Thread信号判定何时建立新进程。22.权利要求20的虚拟设备驱动程序,其中该调用部分和该Get_Current_Process_Handle子例程通信并且通过调用该Get_Current_Process_Handle子例程检索该新进程数据库结构。23.权利要求19的虚拟设备驱动程序,其中该操作系统是一个具有一个用建立新进程并随后提供Create_Thread信号的系统进程建立子例程、一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程的视窗操作系统。24.权利要求23的虚拟设备驱动程序,其中该判定部分和该系统进程终止子例程通信并且通过接收Terminate_Thread信号判定何时终止进程。25.权利要求23的虚拟设备驱动程序,其中该调用部分和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该终止进程数据库结构。26.一种位于计算机系统的存储媒体中的用于监视正在该计算机系统中执行的并由视窗操作系统控制的应用内子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该视窗操作系统具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,该操作系统具有一个调用时提供和该进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,并设置一个用于存储和该执行应用内现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括一个和该系统进程建立子例程通信的判定部分,它一旦接收Create_Thread信号判定已建立新进程;一个调用部分,其(i)调用该Get_Current_Process_Handle子例程以便检索新进程数据库结构,以及(ii)利用该新进程数据库结构中的一个指针检索和该新进程的父进程对应的父进程数据库结构;一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;一个标识部分,若该父进程数据库结构和该应用进程数据库结构相同,其把该新进程标识为一个现存子进程,以及一个添加部分,若该新进程被标识为现存子进程,它把该新进程数据库结构添加到该现存子进程数据库结构表中。27.权利要求26的虚拟设备驱动程序,其中该操作系统还包括一个用于终止进程并出随后提供Terminate_Thread信号的系统进程终止子例程,该Get_Current_Process_Handle子例程在调用时还提供和该终止进程对应的终止进程数据库结构,该虚拟设备驱动程序还包括一个判定部分,它一旦接收Terminate_Thread信号判定已终止进程;一个调用Get_Current_Process_Handle子例程检索终止进程数据库结构的调用部分;一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程;以及一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构表中删除该终止进程数据库结构。28.一种在其中包含处理器可读代码的处理器可读的存储媒体,该处理器可读代码用于编程处理器以实现一种用于监视正在计算机系统中执行的并由操作系统控制的应用内子进程的建立和解除的方法,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该方法包括提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构表;判定该应用执行中何时建立新进程;检索和该新进程对应的新进程数据库结构;利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;比较该父进程数据库结构和该应用进程数据库结构;若该父该程数据库结构和该应用进程数据库结构相同,将该新进程标识为一个现存子进程,以及若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。29.权利要求28的处理器可读的存储媒体,该方法还包括判定该应用执行中何时终止一进程;检索和该终止进程对应的终止进程数据库结构;比较该终止进程数据库结构和该表中的各现存子进程数据库结构;若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程;以及若把该终止进程标识为终止子进程,从该现存子进程数据库结构表中删除该终止进程数据库结构。30.权利要求28的处理器可读的存储媒体,其中在该计算机系统的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括设置一个指向该表中一个现存子进程数据库结构的指针;以及在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构。31.权利要求28的处理器可读的存储媒体,其中在该计算机系统的一个缓冲器中保持该现存子进程数据库结构表,该方法还包括设置一个指向该表中的一个现存子进程数据库结构的指针;在对该表增添该新进程数据库结构后,移动该指针指向该新进程数据库结构;以及在从该表删除该终止进程数据库结构后,移动该指针以指向现存子进程数据库结构中最最近添加到该表中的一个。32.权利要求28的处理器可读的存储媒体,其中在该计算机系统中的一个计数器里保持该指针,并且其中移动指针指向新进程数据库结构包括递增该计数器;以及移动指针指向最最近添加到该表中的现存子进程包括递减该计数器。33.权利要求28的处理器可读的存储媒体,其中该正执行应用是该计算机系统存储的供执行的一系列应用中一个,该方法还包括周期性地判定该表是否包含任何子进程数据库结构;以及若该表不包含现存子进程数据库结构,执行该应用系列中的下个应用。34.权利要求28的处理器可读的存储媒体,其中该正执行应用是该计算机系统内存储的供执行的一系列应用中的一个,该方法还包括周期性地判定该计数器的值是否为零;以及若该计数器的值为零,执行该应用系列中的下个应用。35.权利要求34的处理器可读的存储媒体,其中该应用系列至少是一安装程序的一部分。36.权利要求28的处理器可读的存储媒体,其中该操作系统是具有用来建立新进程并随后提供Create_Thread信号的系统进程建立子例程的视窗操作系统,该操作系统还具有用于提供新进程数据库结构的Get_Current_Process_Handle子例程。37.权利要求28的处理器可读的存储媒体,其中判定何时建立新进程包括接收Create_Thread信号。38.权利要求28的处理器可读的存储媒体,其中检索新进程数据库结构包括调用Get_Current_Process_Handle子例程。39.权利要求28的处理器可读的存储媒体,其中检索父进程数据库结构包括利用一个新进程数据库结构中的用来标识父进程数据库结构的指针。40.权利要求30的处理器可读的存储媒体,其中该操作系统是视窗操作系统,其具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程,和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程。41.权利要求40的处理器可读的存储媒体,其中判定何时终止进程包括接收Terminate_Thread信号。42.权利要求40的处理器可读的存储媒体,其中检索终止进程数据库结构包括调用Get_Current_Process_Handle子例程。43.一种在其中包含处理器可读代码的处理器可读的存储媒体,该处理器可读代码用于编程处理器以实现一种用于监视正在计算机系统中执行的并由视窗操作系统控制的应用内的子进程的建立和解除的方法,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,视窗操作系统具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,该操作系统还具有一个调用时提供和该新进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,该方法包括提供一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表;一旦接收Create_Thread信号判定已经建立新进程;在判定已建立新进程后,调用Get_Current_Process_Handle子例程以便检索新进程数据库结构;利用该新进程数据库结构中的一个指针确定和该新进程的父进程对应的父进程数据库结构;比较该父进程数据库结构和该应用进程数据库结构;若该父进程数据库结构和该应用进程数据库结构相同,把该新进程标识为一个现存子进程;以及若把该新进程标识为现存子进程,把该新进程数据库结构添加到该现存子进程数据库结构表中。44.权利要求43的处理器可读的存储媒体,其中,该操作系统还具有用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程,当被调用时Get_Current_Process_Handle子例程还提供和终止进程对应的终止进程数据库结构,该方法还包括一旦接收Terminate_Thread信号,判定该进程已结束;在判定该进程已结束后,调用Get_Current_Process_Handle子例程以检索终止进程数据库结构;比较该终止进程数据库结构和该表中的各现存子进程数据库结构,若该终止进程数据库结构和现存子进程数据库结构中的一个相同,把该终止进程标识为一个终止子进程;以及若把该终止进程标识为终止子进程,从该现存子进程数据库结构表中删除该终止进程数据结构。45.一种位于计算机系统的存储媒体中的用于监视正在该计算机系统中执行的并由操作系统控制的应用内的子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,并设置一个用于存储和该正执行应用内现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括判定装置,用于判定在该应用的执行中何时建立新进程;调用装置,用于(i)检索和该新进程对应的新进程数据库结构,并且(ii)利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构,比较装置,用于比较该父进程数据库结构和该应用进程数据库结构;标识装置,用于若该父进程数据库结构和该应用进程数据库结构相同把该新进程标识为一个现存子进程;以及添加装置,用于若该新进程被标识为现存子进程把该新进程数据库结构添加到该现存子进程数据库结构表中。46.权利要求45的虚拟设备驱动程序还包括判定装置,用于判定该应用执行中何时终止进程;调用装置,用于检索和该终止进程对应的终止进程数据库结构;比较装置,用于比较该终止进程数据库结构和该表中的各现存子进程数据库结构;标识装置,用于若该终止进程数据库结构和一个现存子进程数据库结构相同把该终止进程标识为一个终止子进程;以及删除部分,用于若该终止进程被标识为终止子进程从该现存子进程数据库结构表中删除该终止进程数据库结构。47.权利要求45的虚拟设备驱动程序,其中该操作系统是具有一个用于建立该新进程并随后提供Create_Thread信号的系统进程建立子例程的视窗操作系统,该操作系统还具有一个用于提供该新进程数据库结构的Get_Current_Process_Handle子例程。48.权利要求47的虚拟设备驱动程序,其中该判定装置和该系统进程建立子例程通信并且通过接收Create_Thread信号判定何时建立新进程。49.权利要求47的虚拟设备驱动程序,其中该调用装置和该Get_Current_Process_Handle子例程通信并且通过调用该Get_Current_Process_Handle子例程检索该新进程数据库结构。50.权利要求46的虚拟设备驱动程序,其中该操作系统是一个具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程、一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程的视窗操作系统。51.权利要求50的虚拟设备驱动程序,其中该判定装置和该系统进程终止子例程通信并且通过接收Terminate_Thread信号判定何时终止进程。52.权利要求50的虚拟设备驱动程序,其中该调用装置和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该终止进程数据库结构。53.一种位于计算机系统的存储媒体中的用于监视正在该计算机系统中执行的并由视窗操作系统控制的应用内子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该视窗操作系统具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,该操作系统具有一个调用时提供和该新进程对应的新进程数据结构的Get_Current_Process_Handle子例程,并设置一个用于存储和该执行应用内现存的子进程对应的现存子进程数据库结构表,该虚拟设备驱动程序包括一个和该系统进程建立子例程通信的判定装置,用于一旦接收Create_Thread信号判定已建立新进程;调用装置,用于(i)调用该Get_Current_Process_Handle子例程以便检索新进程数据库结构,以及(ii)利用该新进程数据库结构中的一个指针检索和该新进程的父进程对应的父进程数据库结构;比较装置,用于比较该父进程数据库结构和该应用进程数据库结构;标识装置,用于若该父进程数据库结构和该应用进程数据库结构相同把该新进程标识为一个现存子进程;以及添加装置,用于若该新进程被标识为现存子进程把该新进程数据库结构添加到该现存子进程数据库结构表中。54.权利要求53的虚拟设备驱动程序,其中该操作系统还包括一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程,该Get_Current_Process_Handle子例程在调用时还提供和该终止进程对应的终止进程数据库结构,该虚拟设备驱动程序还包括判定装置,用于一旦接收Terminate_Thread信号判定已终止进程;调用装置,用于调用Get_Current_Process_Handle子例程以便检索终止进程数据库结构;比较装置,用于比较该终止进程数据库结构和该表中的各现存子进程数据库结构;标识装置,用于若该终止进程数据库结构和一个现存子进程数据库结构相同把该终止进程标识为一个终止子进程;以及删除装置,用于若该终止进程被标识为终止子进程从该现存子进程数据库结构表中删除该终止进程数据库结构。55.一种用监视正在计算机系统中执行的并由操作系统控制的第一应用内子进程的建立和解除的方法,其中,在该计算机系统的存储媒体中存储供执行的第二应用,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该方法包括设置一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构表;判定该表是否包含任何现存子进程数据库结构;以及若该表不包含现存子进程数据库结构执行第二应用。56.一种其中存储着供执行的并由操作系统控制的应用的计算机系统,在该计算机系统中设置一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表,该系统包括一个处理器;一个存储媒体;一个位于该存储媒体中的用于监视该应用在该计算机系统里执行中时子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该虚拟设备驱动程序包括一个判定该应用执行中何时建立新进程的判定部分;一个调用部分,其(i)检索和该新进程对应的新进程数据库结构,以及(ii)利用该新进程数据库结构检索和该新进程的父进程对应的父进程数据库结构;一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;一个标识部分,若该父进程数据库进程和该应用进程数据库结构相同它把该新进程标识为一个现存子进程;以及一个添加部分,若新进程被标识为现存子进程它把该新进程数据库结构添加到该现存子进程数据库结构中。57.权利要求56的计算机机系统,其中该虚拟设备驱动程序还包括一个判定该应用执行中何时终止进程的判定部分;一个检索和终止进程对应的终止进程数据库结构的调用部分;一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程;以及一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构中删除该终止进程数据库结构。58.权利要求56的计算机系统,其中该操作系统是具有一个用来建立新进程并随后提供Create_Thread信号的系统进程建立子例程的视窗操作系统,该操作系统还具有一个用于提供该新进程数据库结构的Get_Current_Process_Handle子例程。59.权利要求58的计算机系统,其中该虚拟设备驱动程序的判定部分和该系统进程建立子例程通信并通过接收Create_Thread信号判定何时建立新进程。60.权利要求58的计算机系统,其中该虚拟设备驱动程序的调用部分和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该新进程数据库结构。61.权利要求57的计算机系统,其中该操作系统是视窗操作系统,其具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程和一个用于提供终止进程数据库结构的Get_Current_Process_Handle子例程。62.权利要求61的计算机系统,其中该虚拟设备驱动程序的判定部分和该系统进程终止子例程通信并通过接收Terminate_Thread信号判定何时终止进程。63.权利要求61的计算机系统,其中该虚拟设备驱动程序的调用部分和该Get_Current_Process_Handle子例程通信并通过调用该Get_Current_Process_Handle子例程检索该终止进程数据库结构。64.一种其中存储着供执行的并由视窗操作系统控制的应用的计算机系统,该视窗操作系统具有一个用于建立新进程并随后提供Create_Thread信号的系统进程建立子例程,该操作系统还具有一个调用时提供和该新进程对应的新进程数据库结构的Get_Current_Process_Handle子例程,在该计算机系统中设置一个用来存储和该正执行应用内的现存的子进程对应的现存子进程数据库结构的表,该系统包括一个处理器;一个存储媒体;一个位于该存储媒体中的用于监视该应用在该计算机系统里执行中时子进程的建立和解除的虚拟设备驱动程序,其中,每个子进程具有一个对应的子进程数据库结构,该正执行应用具有一个对应的应用进程数据库结构,该虚拟设备驱动程序包括一个和该系统进程建立子例程通信的判定部分,一旦接收Create_Thread信号它判定已建立新进程;一个调用部分,其(i)调用该Get_Current_Process_Handle子例程以便检索该新进程数据库结构,以及(ii)利用该新进程数据库结构中的一个指针检索和该新进程的父进程对应的父进程数据库结构;一个比较该父进程数据库结构和该应用进程数据库结构的比较部分;一个标识部分,若该父进程数据库结构和该应用进程数据库结构相同,其把该新进程标识为一个现存子进程,以及一个添加部分,若该新进程被标识为现存子进程,它把该新进程数据库结构添加到该现存子进程数据库结构表中。65.权利要求64的计算机系统,其中,该操作系统还包括一个用于终止进程并随后提供Terminate_Thread信号的系统进程终止子例程,该Get_Current_Process_Handle子例程在调用时还提供和该终止进程对应的终止进程数据库结构,该虚拟设备驱动程序还包括一个判定部分,它一旦接收Terminate_Thread信号判定已终止进程;一个调用Get_Current_Process_Handle子例程检索终止进程数据库结构的调用部分;一个比较该终止进程数据库结构和该表中的各现存子进程数据库结构的比较部分;一个标识部分,若该终止进程数据库结构和一个现存子进程数据库结构相同,它把该终止进程标识为一个终止子进程;以及一个删除部分,若该终止进程被标识为终止子进程,它从该现存子进程数据库结构表中删除该终止进程数据库结构。全文摘要一种用于监视正在计算机系统中执行的由操作系统,例如视窗操作系统控制的应用内子进程(450,445,465)或者线程的建立或解除的方法和虚拟设备驱动程序。提供一个用于存储和该正执行应用(410)内的现存的子进程对应的现存子进程数据库结构的表(455)。周期性地检查该表。若检查时该表不具有条目,可安全地假定现存子进程以及可能的相关子系进程已经退出并且已完成该应用的执行。接着可以执行一系列应用中的其它应用,例如在一软件程序的安装期间,并且使因并发地执行该系列中的应用造成破坏的风险为最小。文档编号G06F9/46GK1353831SQ00808157公开日2002年6月12日申请日期2000年5月24日优先权日1999年5月27日发明者F·J·德克尔申请人:计算机联合思想公司