系统初始建立时确定cd-rom驱动器的字母分配方法与设备的制作方法

文档序号:6417254阅读:216来源:国知局
专利名称:系统初始建立时确定cd-rom驱动器的字母分配方法与设备的制作方法
这里所公开的内容一般地涉及计算机系统,较具体地涉及在计算机系统初始建立时确定CD-ROM驱动器字母分配的方法与设备。
本申请与待审批美国专利申请No.08/919,959有关,后者的发明人为Richard D.Amberg、Roger W.Wong、和Michael A.Brundridge,标题为“Software Installation And Testing For A Built-to-Order Computer System(定制计算机系统的软件安装与测试)”,提交于1997年8月29日。该待审批申请的全部内容在此引用作为参考,并转让给本发明的受让人。
本申请与待审批美国专利申请No.08/920,773有关,后者的发明人为Richard D.Amberg、Roger W.Wong和Michael A.Brundridge,标题为“Software Installation And Testing For A Built-to-OrderComputer System(定制计算机系统的安装与试测)”,提交于1997年8月29日。该待审批申请的全部内容在此引用作为参考,并转让给本发明的受让人。
本申请与待审批美国专利申请No.08/921,438有关,后者的发明人为Richard D.Amberg、Roger W.Wong、和Michael A.Brundridge,标题为“Database For Facilitating Software Installation AndTest For A Built-to-Order Computer System(帮助定制计算机系统软件安装与测试的数据库)”,提交于1997年8月29日,该待审批申请的全部内容在此引用作为参考,并转让给本发明的受让人。
当客户在最初起动和建立一个计算机系统时,包括对操作系统(例如视窗95TM、视窗98TM等)初始化和建立时,CD-ROM的驱动器字母是不为操作系统(O/S)所知的。如果在计算机系统上还安装了其他的装置,例如可卸型盒式硬盘驱动器或ZIpTM驱动器,则CD-ROM的驱动器字母将改变,即与计算机系统未安装可卸型盒式硬盘驱动器时的字母不同。这将在定制计算机的制造过程中出现问题,即在实现对被制造目标计算机系统进行工厂软件下载的计算机制造应用中出现问题。该制造应用需要用CD-ROM驱动器的驱动器字母来把涉及到该CD-ROM的应用与简捷访问和菜单选择相连结起来。如果没有正确的连结,计算机系统将不能按希望的方式工作。
过去,确定CD-ROM驱动器的驱动器字母的一种方法是,先找出某一给定计算机系统中的所有硬盘驱动器字母,然后猜想CD-ROM驱动器字母可能是一系列硬盘驱动器字母的下一个字母。如果在该目标计算机系统中加上了一个可卸型盒式硬盘驱动器,则这种确定驱动器字母分配的特定方法将失效。
另一种方法是当客户最初起动计算机系统时利用DOS驱动器给可卸型盒式硬盘驱动器分配一个驱动器字母。对此,在系统建立时CD-ROM驱动器字母可以被正确地分配。然而,在以下方面这一特定方法是有问题的。当驱动器由外部供货商提供时,而且当磁盘驱动器的容量大于8.4G字节时非常可能造成严重的盘损伤。此外,在视窗NTTM和视窗98TM操作系统的环境下这个方法不能工作。
还有一种方法是给CD-ROM驱动器字母一个固定的代码,并使该代码远离于其他装置通常所采用的驱动器字母。不过,由于网络驱动器连接有可能需要使用这个被硬性编码的驱动器字母,所以这一方法也不是优选的方法。
在客户定制制造的环境下,被制造的计算机系统总是存在着各不相同的可能性。根据不同特定客户的定单,计算机系统可以在硬件和软件方面有所不同。例如,可以在制造过程中在定制计算机系统上安装各种软件应用。典型地,这些应用是从CD-ROM安装的。当客户得到了他或她的系统后这些软件应用也还可能需要访问CD-ROM。为了实现操作,这些应用需要知道CD-ROM的驱动器字母是什么。
在以前计算机系统制造中,CD-ROM驱动器字母是在需要时确定的,然后被存储着供需要时使用。但在定制的环境下,当一个给定计算机系统中的外设清单与该系统的操作系统能识别的外设清单不相同时,将发生问题。例如,计算机系统中可能安装了一个可卸型盒式硬盘驱动器,但操作系统却不能识别它。在定制制造环境下安装软件应用时若询问操作系统(O/S)在系统中是否有一个CD-ROM驱动器,O/S将回答不存在CD-ROM。这是因为在制造过程这个时间点上O/S还不知道任何关于CD-ROM的情况。换言之,不存在CD-ROM,但可以假定CD-ROM驱动器的字母是什么。这一假定可以根据这样一个方法来实现,即对硬驱进行计数即对驱动器字母的数目进行计数,然后加1。然后再把得到的计数数目与字母相联系起来,其中相应的字母便被假定为CD-ROM驱动器字母。由于已开始制造带有多个CD-ROM驱动器和多个可卸型盒式硬盘驱动器等的计算机系统,上述一直计数到最后一个硬驱然后再加1的假定可能不再能对应一个适当的CD-ROM驱动器字母。
补救上述问题的一个可能方法是,通过修改每个被安装到定制系统上去的软件应用,以估计出该计算机系统的CD-ROM驱动器字母是什么。这种修改可能对每个应用供货商都是需要的。或者,也可以把CD-ROM驱动器字母固定在某个指定字母上并使之不可更改。对于大容量定制计算机制造来说这些补救方法都是不合适的。
于是,希望能提供一种特别是用于定制计算机系统制造过程中的确定CD-ROM驱动器的驱动器字母分配的改进的方法和设备。
根据一个实施例,一个计算机系统包括至少一个处理器;至少一个计算机可读的媒体驱动器;以及制造处理码。制造处理码包含一些可执行的指令,使处理器能确定至少一个计算机可读媒体驱动器的驱动器字母指定。该计算机系统还包括一个操作系统和一个系统描述符记录(SDR),其中操作系统含有一个适合于实现对基于计算机可读的媒体驱动器的软件应用的简捷访问和菜单选择的桌面(desktop)。计算机可读媒体驱动器的驱动器字母指定还取决于操作系统和系统描述符记录。再有,制造处理码使得处理器对计算机可读媒体驱动器字母指定的确定能在操作系统桌面被完全初始化之前进行,还能把基于计算机可读媒体驱动器的软件应用结合在桌面上的简捷访问和菜单选择的建立中。
本公开的各个实施例有利地提供了一个用来根据操作系统、所安装的软件、以及这些部件是如何安装在目标计算机系统中的等因素,来确定驱动器字母指定的动态连接库(DLL)函数。
本公开的各个实施例还通过构筑一个包含了当目标计算机的操作系统桌面被完全初始化时应有的驱动器类型清单的期望驱动器类型清单,有利地提供了在目标计算机系统建立过程中对计算机可读媒体驱动器字母指定的确定。
根据下面所给出的关于实施本发明的最佳模式的详细说明,本发明的前述和其他教导和优点将变得更加明显。在下面的说明中将参考各个附图,其中

图1示出实现本公开的一个实施例的计算机的方框图;图2示出根据本公开实施例的一个“获取CDROM驱动器字母”(GetCdRomDriveLetter)模块的源码流程图;图3示出根据本公开实施例的一个“获取伪CDROM驱动器字母”(GetFakeCdRomDriveLetter)模块的源码流程图;图4示出根据本公开实施例的一个“获取期望驱动器类型清单”(GetExpectedDriveTypeList)模块的源码流程图;以及图5示出根据本公开实施例的一个“获取驱动器类型”(GetDriveType)模块的源码流程图。
参见图1,示出了一个计算机系统10的系统方框图,该系统具有这里所讨论的按照客户定单所构成的计算机系统的特点。计算机系统10含有一个中央处理单元(CPU)12;输入/输出(I/O)装置,例如显示器、键盘、鼠标器、和有关控制器,该装置总的由代号14表示;一个硬盘驱动器1 6和其他的存储装置,包括软驱、CD-ROM驱动器等,其整体由代号18表示;以及各种其他的子系统,例如网络接口卡(或NIC),其整体由代号20表示;所有这些装置都由图1中总的由总线22表示的一条或几条总线互相连接。
当在定制计算机系统上安装一个软件应用并且该软件应用需要知道CD-ROM驱动器字母是什么时,根据本实施例将提供制造码的一个中央核心段。制造码检验操作系统、客户定单、计算机系统是如何建立的、硬盘驱动器是如何格式化的、以及计算机系统中存在哪些种类的硬件,然后根据某种预定的方法作出关于CD-ROM驱动器字母应是什么的判断。CD-ROM驱动器字母的确定将与客户最终得到他或她的计算机系统并第一次起动时由O/S分配的字母相同。在定制制造过程中安装软件应用时,还不知道关于该计算机系统的某些信息。这是因为实际上不知道该计算机的操作系统将如何分配计算机系统中的驱动器字母。例如,视窗NT操作系统与视窗95系统对驱动器字母的分配是不同的。
制造码的中央核心段由软件应用安装程序的一部分组成,后者在制造过程的操作系统建立阶段内运行。当这个在毫不知晓驱动器字母指定情况的操作系统建立阶段中运行了该软件核心段的计算机系统被提供给客户时,将同时提供一个预定的CD-ROM驱动器字母指定中央应用(这里称之为OS驱动程序),该应用将出来工作并建立一个关于每个装置位于何处的表格,从那以后,就可得知每个装置将会在何处。其后,当某个应用需要知道CD-ROM驱动器在何处时它就可以得知。此外,如果需要知道可卸型盒式硬盘驱动器字母是什么,则也可以得知。使用这样的公开实施例,能够容易地提供关于任何给定计算机系统的驱动器字母信息。所以本实施例包含了一个软件工具。
当一个在计算机系统上运行的应用在需要时不能找到该系统的CD-ROM驱动器,则该计算机系统将是有故障的或不能工作的。客户可能会需要一个CD-ROM驱动器来进行重新安装和/或运行一个应用。在某些情形中,一个应用若找不到CD-ROM驱动器可能仍可以工作,但不能发挥100%的功能。例如,某个文字处理应用为了装载一个文件组可能会需要访问CD-ROM驱动器但又不能找到它。在此情形中该文字处理应用仍能运行,但不能在线地得到该文件组。于是该系统的用户将不得不使用印刷的手册。这说明了可能遇到的一些问题类型。
本实施例利用了定制制造应用与系统描述符记录(SDR)的结合,定制制造应用包括客户定制的计算机系统。系统描述符记录包括含有关于在定制计算机系统中安装了或准备安装哪些具体部件的信息的记录或数据文件。
自动工具是定制计算机系统制造环境中的一个应用,它利用了本公开的软件工具实施例。本公开的软件工具利用了SDR,后者能提供预定的信息并把信息提供给自动工具应用。自动工具应用与定制计算机系统的制造中的软件安装部分结合使用。也就是说,自动工具根据某一具体的定单为一个给定的定制计算机系统建立一个软件组。
如果定单中包括了安装CD-ROM驱动器,则将用到本实施例作为制造过程的一部分。定制计算机系统的制造过程将包括用一个软件安装程序进行软件安装。需在定制计算机系统上安装的软件对于各个被制造的定制计算机系统可能是不同的。对于带有CD-ROM驱动器的被制造定制计算机系统,本实施例可用来保证CD-ROM驱动器字母指定的正确判定。
在定制制造过程中,“现成件(ReadyWare)”是一个用来指那些可购得的软件应用(例如,文字处理器、数据库、电子数据表软件应用)的术语,它们根据具体的定单被安装在所制造的定制计算机系统上。在制造定制计算机系统时,现成件软件应用被安装在计算机系统上。这些软件应用是作为“安装后部件”(post-installedcomponent)安装的。制造过程中的软件安装是完全自动化的,也即,不需要通过系统操作人员物理地激活任何开关或按键来在软件安装过程中插入CD-ROM驱动器字母指定。在每天几千台系统的大容量定制制造环境下,软件安装中的工人或物理干预是为生产效率和成本所不能接受的,因此是不可取的。
在定制制造过程中软件应用被安装到一个给定计算机系统上。自动工具摄取关于计算机系统上具体安装了什么软件应用的“图像”,然后把该信息存储下来供以后使用。所获取的软件应用图像信息被放入每个被制造计算机系统中。当自动工具获取软件应用的图像时,CD-ROM驱动器字母可能是“L”,但在某个具体的被制造计算机系统上该字母可能不是“L”,甚至一个被制造计算机系统可能不含有CD-ROM驱动器。例如,一个客户可能购买了MicrosoftOffice,但没有订购CD-ROM驱动器。本实施例能确定,当给定制计算机系统加上一个CD-ROM驱动器时其字母应是什么。客户也可以在以后再为计算机系统加上CD-ROM驱动器,利用本实施例将可容易地确定正确的CD-ROM驱动器字母指定。
对于每个定制计算机系统而言,被制造的定制计算机系统是独特的,现成件软件应用也是独特的。本实施例有助于使硬件和软件以希望的功能的方式一起工作。
由于硬件、软件、装置驱动器等等是被添加到定制计算机系统上,所以在对一个给定的计算机系统安装软件的过程中CD-ROM驱动器字母指定一般是不断变动的。CD-ROM驱动器字母指定不是一个稳定的目标。软件安装的情景可能会是这样的开始时没有CD-ROM,然后有一个带有不正确驱动器字母的CD-ROM,一直到最终有一个带有正确驱动器字母的CD-ROM。不幸的是,在安装现成件应用时,目标计算机系统的操作系统可能处于整个软件安装的各个阶段中的任意一个阶段。软件的安装过程不能依赖于操作系统的知识是关于什么方面的以及它们是如何在目标计算机系统中建立的。实际上,本实施例的处理将出来工作并检验操作系统(O/S)是什么、客户定单上的部件是什么(即计算机系统中该有什么)、并判断是否存在一个CD-ROM驱动器字母,如果不存在,则它又应该是什么。本实施例对现成件软件应用进行这些工作。
再说定制制造过程,FISH是“工厂为硬件而安装的软件”的缩写。FISH主要包含用于给定目标计算机系统上所安装的硬件的软件装置驱动程序。如果订购了一个CD-ROM作为定制计算机系统的一部件,则将在定制制造过程中把用于该CD-ROM驱动器的装置驱动程序安装到计算机系统上。对于现成件软件应用来说,一般没有与之相关联的电路板或硬件。对于FISH,总存在有相关联的装置驱动程序。在许多情形中,现成件软件应用需要知道,作为安装了装置驱动程序的副产品,最终将发生些什么,例如CD-ROM驱动器字母或可卸型盒式硬盘驱动器装置驱动程序和驱动器字母指定等会有什么变化。对于现成件软件应用的安装来说,在许多情形中,某些特定装置的驱动器在制造过程的这个时间点上还没有被安装到计算机系统中,也即在物理上尚未存在这些装置驱动器。本实施例将根据当时所知的关于计算机系统的信息来识别驱动器字母指定,下面将对此作进一步讨论。
在软件安装过程中,不论操作系统说CD-ROM的驱动器字母是什么,本实施例都将利用此CD-ROM字母。作为副产品,本实施例能确定驱动器字母指定是什么以及该驱动器字母指定最终将会是什么。如果计算机系统得知CD-ROM驱动器字母指定为“E”,同时它还含有一个可卸型盒式硬盘驱动器,则后者的字母指定将插到CD-ROM驱动器字母指定的前面,而CD-ROM驱动器字母指定将跳到下一个字母。在本例中,可卸型盒式硬盘驱动器将变为E驱动器,而CD-ROM驱动器将变为F驱动器。所有知道CD-ROM驱动器为E驱动器的已安装软件应用将不再能工作,这是因为现在字母E是指向可卸型盒式硬盘驱动器的,从而已安装的软件应用不再能在E那里找到CD-ROM驱动器。本实施例将解决这一问题。
在刚安装上现成件软件应用时,该应用将与一个驱动器字母相结合。该驱动器字母是由本实施例提供的,也就是说本实施例的方法通知软件应用CD-ROM驱动器字母是什么,这是因为在制造过程的这一时间点上实际的驱动器字母并不是真实的。如前所述,当加上了可卸型盒式硬盘驱动器后,CD-ROM驱动器字母指定将会改变。
本实施例提供一种确定CD-ROM驱动器字母指定最终将变为什么的方法。图2-5示出一个动态连接库(DLL)的示例性的源码流程图,该DLL将用于下面将进一步讨论的根据本发明的对CD-ROM驱动器字母指定的确定中。这些流程图以动态连接库的形式说明软件实施例的功能流程。DLL形式允许在不必需重新编译整个工厂处理的情况下容易地更换某一模块。例如,若某一特定计算机系统含有两个CD-ROM驱动器,则可以把DLL修改得能处理有两个CD-ROM的情况,同时仍始终能知道CD-ROM驱动器字母将是什么。
本实施例在目标计算机系统内部工作。当在目标计算机上安装制造软件时,本公开的CD-ROM驱动器字母指定实施例(这里称为OS驱动程序)也被装载到目标系统上,供现成件和FISH软件的安装处理阶段使用。当CD-ROM驱动器字母指定实施例完成其预期任务之后,可以把它从目标系统删除。
在工厂处和客户那里都可以进行计算机系统的软件安装。根据目标系统的操作系统,某些情况下某些软件可以在工厂安装,但在另一些情况下则不能安装。当客户最初起动计算机系统时,本公开的OS驱动程序将运行。注意,在计算机系统的制造过程中,有两个软件安装阶段。软件安装的第一个阶段叫做软件下载。软件下载包括在工厂中把客户定购的现成件软件应用下载到计算机系统上。OS驱动程序也含在下载到计算机系统上的软件内。计算机系统可以在制造过程的这个时间点上,也可以不在这个时间点上发送给客户。当该计算机系统第一次通电或起动时,已下载的软件将被安装。换言之,软件安装的第二个阶段是对下载软件的实际安装。初始的起动和操作系统的建立可以是,也可以不是工厂内制造过程的一部分。初始的操作系统建立可以包括O/S软件的下载,因为它是直接从O/S软件的制造商处得到的。正是在已下载软件的安装过程中不正确CD-ROM驱动器字母指定的问题将变得明显。当CD-ROM驱动器字母指定不正确时,也即当它不是某一特定指定时,下载的软件将不能发挥期望的功能。
在下载了软件并安装了所有已下载软件之后,客户将可能想要运行某些软件。在把软件下载到计算机系统上时,不一定需要知道CD-ROM驱动器在什么地方(即驱动器字母指定是什么)。当安装下载的软件时不需要与CD-ROM驱动器通信;但当客户希望运行软件时,则必须知道CD-ROM驱动器将在什么地方(即驱动器字母将是什么)。在安装软件应用的当时是不知道CD-ROM驱动器字母的。然而本实施例将在软件安装过程中工作,以确定当客户以后使用该软件时CD-ROM驱动器的字母指定将是什么。也就是说,虽然软件应用在安装时不需要与CD-ROM驱动器通信,但在使用时却可能需要这一通信。在处理过程的这个时间点上,CD-ROM驱动器将通过OS驱动程序获得分派给它的驱动器字母。CD-ROM驱动器字母指定可以在安装软件的时间点与运行软件的时间点之间的某个点上被重新指定。驱动器字母的最后指定发生于软件被安装之后,但在被客户运行之前的某一时间。安装在计算机系统上的操作系统根据其特定的算法实现驱动器字母的最终指定。例如,对于微软操作系统,对磁盘驱动器的字母指定是A和B。对于计算机系统中的不论多少个的硬盘驱动器,其字母指定都是从C开始并依次采用各个后续字母。接着,对各个可卸型盒式硬盘驱动器分配驱动器字母。再接着,对每个CD-ROM驱动器分配字母。一个计算机系统可以含有多于一个的CD-ROM驱动器。
在制造过程的软件安装阶段中,软驱和硬驱的数目以及它们的驱动器字母指定是已知的。这是因为操作系统已经分配了这些驱动器字母指定。但是在软件安装阶段并不知道可卸型盒式硬盘驱动器和CD-ROM驱动器的字母指定。根据关于操作系统将如何最终分配可卸型盒式硬盘驱动器和CD-ROM驱动器的驱动器字母指定的知识,结合客户的定单并进一步与O/S对计算机系统的了解相联系,提供了一种在获得了关于驱动器字母指定最终将是什么的知识之后提供了预先分配可卸型盒式硬盘驱动器和CD-ROM驱动器的字母指定的机制。在客户使用一个计算机系统时,被运行的软件为了能发挥其预期功能必需确切知道特定可卸型盒式硬盘驱动器和/或CD-ROM驱动器的字母指定。本实施例提供了软件安装阶段的可卸型盒式硬盘驱动器和CD-ROM驱动器的驱动器字母指定。这样,计算机系统就可以在运行软件时发挥预期的功能。
为了进一步说明,假定在计算机系统上下载了O/S,并且客户得到了一盒CD-ROM盘。对于每个软件应用,可能需要客户把每片CD插入到驱动器内,叩击“安装”,然后等待相应的安装程序运行。可能需要对随一个特定计算机系统订购的每一个软件应用都进行这一操作,安装所有软件以便计算机系统成为它本应该从工厂中出来的形式。一旦在客户的桌面处(例如视窗桌面),所有驱动器的信息就都知道了。从制造过程的时间流程来看,首先是下载,然后是计算机通电以首次起动系统。随着计算机系统的运行,执行其任务,软件应用就被安装上了。在制造过程中计算机系统可以再起动一次或几次。最终,计算机系统将处于视窗桌面状态(当操作系统是微软视窗时)。当计算机系统处于视窗桌面状态时,所有的驱动器字母指定都已知道。对于一个普通的计算机系统,所有软件应用都可以以单一的一种结构预先安装到计算机系统上,这时由于只有一种结构,所以所有的驱动器指定总都是已知的。对于普通的计算机系统,如果其软件映像只允许一个硬驱,则需要两个8G字节的用户将不能得到上述情况。在定制制造过程中,软件应用的安装在操作系统建立的早期进行,那时操作系统还不知道关于CD-ROM驱动器、可卸型盒式硬盘驱动器、或例如RAM卡等其他可能设置的情况。本实施例的OS驱动程序在软件安装的时候就能预期到当处于视窗桌面时各个驱动器指定将是什么。在软件应用的安装过程中就利用了OS驱动程序所获得(和/或判定)的信息,使得当安装软件应用时,各个软件应用所有联系的驱动器指定将与计算机系统处于O/S桌面时的相同。
换言之,OS驱动程序根据客户定单信息、当时已安装在计算机系统中的软驱和硬驱数目、以及硬驱上分区的数目,判断将来的视窗桌面状况将是什么样的。所有这些用作根据的信息都被输入给OS驱动程序使它能判断当桌面具有全部功能时操作系统最终将会有什么样的状况。
本实施例提供了一种改进的定制计算机系统的制造过程。OS驱动程序与定制制造中的软件安装相结合地工作。OS驱动程序具有DLL的形式,提供目标计算机系统的CD-ROM驱动器字母确定。OS驱动程序含有一个“获取CD-ROM驱动器字母”模块、一个“获取伪CD-ROM驱动器字母”模块、一个“获取期望驱动器类型清单”模块和一个“获取驱动器类型”模块,下面将对它们作进一步说明。
本实施例在不正确的驱动器字母分配方面有利地减少对计算机制造商的技术支持要求。首次购买计算机系统的客户占有高的比例,他们对驱动器指定和驱动器字母分配知之甚少。
“获取CD-ROM驱动器字母”是根据本公开一个实施例的确定驱动器字母指定处理的总体。“获取CD-ROM驱动器字母”是DLL的一个功能性界面。调用“获取CD-ROM驱动器字母”这一功能将返回当达到视窗桌面(对于微软视窗操作系统情形)或其他OS桌面时的CD-ROM驱动器字母指定。
“获取伪CD-ROM驱动器字母”是针对DLL的“获取CD-ROM驱动器字母”功能性界面中的一个模块。请注意某些计算机系统可以不含有CD-ROM驱动器。“获取伪CD-ROM驱动器字母”能确定,当制造商(或客户)如果要安装一个CD-ROM驱动器时,实际的CD-ROM驱动器字母将是什么。
“获取期望驱动器类型清单”是这样一个模块,它利用客户定单、当前已安装了的计算机系统元部件、待安装的计算机系统元部件、以及OS是如何列出它至今所知的关于计算机系统的事物的这些信息的结合,判断出所有的驱动器字母分配将是什么。“获取期望驱动器类型清单”能构筑一个包含了可卸型盒式硬盘驱动器、磁盘驱动器、硬驱、和CD-ROM驱动器等等的表格。这个表格被暂时存储在计算机系统的存储器中。一旦此功能使用了这个表格并且退出了DLL,这个表格将被删除。这个表格的目的是,以后每当为获取一个CD-ROM字母而调用“获取期望驱动器类型清单”模块时不再需要每一次都重新计算驱动器字母指定。一旦建立了这个表,其使用将给出性能上的优点。
“获取驱动器类型”允许使用利用“获取期望驱动器类型清单”所构筑的上述表格来调用一个外部应用,并找出这个表格的每个元素是什么。例如,如果一个应用需要知道CD-ROM驱动器的指定字母是什么,就可以使用“获取驱动器类型”模块。如果该应用需要知道可卸型盒式硬盘驱动器的指定字母是什么,也可以使用“获取驱动器类型”模块。
现在参见图2详细讨论“GetCdRomDriveLetter()”DLL输出函数。这个函数将返回i)CD-ROM驱动器的一个驱动器字母指定,或者,ii)如果没有找到或没有期望的CD-ROM驱动器,则返回零(0)。如果调用例行程序给出一个整数指针,则该函数将i)如果是操作系统指定了CD-ROM驱动器的字母,则把值设为零(0),ii)如果是DLL函数指定了驱动器字母,则把值设为1。在步骤50中,调用GetExpectedDriveTypeList()DLL内部函数,以构筑一个当目标计算机系统的操作系统桌面被完全初始化时应有的期望驱动器类型清单。在步骤52中,如果CD-ROM驱动器字母是被DLL分配的,则把一个用户标志设定为1;如果该驱动器字母是被操作系统分配的,则把该标志设定为零(0)。在步骤54中,该函数利用“驱动器类型清单”来搜索并找到CD-ROM驱动器。在步骤56中,GetCdRomDriveLetter()DLL输出函数将返回i)CD-ROM驱动器字母;或ii)零(0),如果没有找到CD-ROM驱动器。
现在转到图3,更详细地讨论GetFakeCdRomDriveLetter()DLL输出函数。该函数将i)如果已分配了一个CD-ROM驱动器字母,则返回该驱动器字母;ii)如果尚未分配CD-ROM驱动器字母,则分配一个字母并返回这个字母。此外,GetFakeCdRomDriveLetter()DLL输出函数总能返回一个CD-ROM驱动器字母。在步骤60中,调用GetCdRomDriveLetter()DLL输出函数,以得到被分配的CD-ROM驱动器字母。在步骤62中,判断是否返回了一个有效的CD-ROM驱动器字母。如果返回了一个有效的CD-ROM驱动器字母,则进行步骤64的处理。在步骤64中,GetFakeCdRomDriveLetter()DLL输出函数将向调用者返回分配的CD-ROM驱动器字母。如果在步骤62中判定返回的是一个无效CD-ROM驱动器字母,则进行步骤66。在步骤66中,调用一个局部函数AssignCdRomDrive(),以强迫给驱动器类型清单分配一个CD-ROM驱动器字母。然后处理进入步骤68。在步骤68中,调用GetCdRomDriveLetter()DLL函数,以得到分配的CD-ROM驱动器字母。然后处理进入步骤64,其中GetFakeCdRomDriveLetter()DLL输出函数将向调用者返回分配的CD-ROM驱动器字母。
现在参见图4,更详细地讨论GetExpectedDriveTypeList()DLL内部函数。从步骤70开始,判断是否已建立了一个内部驱动器类型表。如果已建立了该表,则处理进入步骤72返回到调用者。如果在步骤70中判定尚未建立内部驱动器类型表,则处理进入步骤74。在步骤74中,根据操作系统的驱动器类型分配情况,构筑内部驱动器类型表。在步骤76中,判断最后的硬驱是否是一个SUBST(替代)驱动器。例如,在某些计算机系统中,如果在该系统中有一具有可卸型盒式硬盘驱动器,则用于具有Fat32格式的大型硬驱的补丁(patch)可能会利用微软DOS SUBST命令来暂时分配一个驱动器字母。如果最后的硬驱是一个SUBST驱动器,则处理进入步骤78。在步骤78中,从内部驱动器类型表中删去分配为SUBST的驱动器,然后继之以步骤80。如果在步骤76中判定最后硬驱不是一个SUBST驱动器,则处理直接进入步骤80。在步骤80中,对系统描述符记录(SDR)检查已安装的CD-ROM或可卸型盒式硬盘驱动器(例如Zip驱动器)。在步骤82中,判断是否有尚未列入驱动器类型表中的但已安装在计算机系统内的可卸型盒式硬盘驱动器。如果有这样的可卸型盒式硬盘驱动器,则处理进入步骤84。在步骤84中,在驱动器类型表中所有的硬驱后面但又在所有CD-ROM驱动器的前面插入可卸型盒式硬盘驱动器。然后处理进入步骤86。如果在步骤82中判定没有这样的可卸型盒式硬盘驱动器,则处理直接进入步骤86。在步骤86中判断是否有未列入驱动器类型表中的但已安装在计算机系统内的CD-ROM驱动器。如果有这样的CD-ROM驱动器,则处理进入步骤88。在步骤88中,在驱动器类型表中所有硬驱和可卸型盒式硬盘驱动器的后面插入CD-ROM驱动器。然后处理继之以步骤72。如果在步骤86中判定没有这样的CD-ROM驱动器,则处理直接进入步骤72。在步骤72中,建立驱动器类型表并返回给调用者。
现在转到图5,更详细地讨论GetDriveType()DLL输出函数。该函数将返回与调用者所传递的根目录相关联的驱动器类型。有效的返回码可以有DRIVE_UNKNOWN=0;DRIVE_NO_ROOT_DIR=1;DRIVE_REMOVABLE=2;DRIVE_FIXED=3;DRIVE_REMOTE=4;DRIVE_CDROM=5;以及DRIVE_RAMDISK=6。对于特定的实施若有必要也可以有其他的返回码。在步骤90中,调用GetExpectedDriveTypeList()DLL内部函数,以构筑一个当目标计算机系统的操作系统桌面被完全初始化时应有的期望驱动器类型清单。在下一个步骤92中,利用调用者所传来的根目录检索该驱动器类型清单,以获得驱动器类型。获得了驱动器类型之后,该处理将向调用者返回驱动器类型,或者,如果用户所提供的路径是无效的,则将返回一个DRIVE_UNKNOWN的返回码(步骤94)。
自动工具制造软件码被下载到计算机系统上,用于安装软件应用。该制造码含有用来安装已下载给计算机系统的那些软件应用的指令。制造码和OS驱动码是在定制计算机系统被初次起动之前下载给系统的硬驱的。GetDriveType使自动工具(或者任何采用OS驱动程序的外部应用)能获得GetExpectedDriveTypeList所建立的表。
这里的各个实施例有利地包含了这样一种DLL,它包括了根据操作系统、所安装的元部件、以及这些元部件是如何安装到相应目标计算机系统中的这些信息,来确定CD-ROM驱动器字母的函数。计算机系统制造应用软件在系统建立的过程中调用这个DLL以获得CD-ROM驱动器字母。该DLL能获得特定目标计算机系统中的各个指定装置的清单。
虽然通过参考本公开的各个实施例具体地示出和说明了本公开的方法和设备,但熟悉本技术领域的人们应会理解到,在不偏离所附权利要求所定义的方法和设备的精神和范畴的情况下,其中在形式上和细节上都可以做出各种改变。
权利要求
1.一种计算机系统,它包括至少一个处理器;至少一个计算机可读的媒体驱动器;以及制造处理码,它含有能使上述至少一个处理器确定上述至少一个计算机可读的媒体驱动器的驱动器字母指定的可执行指令。
2.根据权利要求1的计算机系统,其中上述计算机可读的媒体驱动器包含CD-ROM驱动器。
3.根据权利要求1的计算机系统,其中上述计算机可读的媒体驱动器包含可卸型盒式硬盘驱动器。
4.根据权利要求1的计算机系统,它还包括一个操作系统,上述操作系统含有一个适用于实现对基于计算机可读的媒体驱动器的软件应用的简捷访问和菜单选择的桌面;以及一个系统描述符记录,其中上述计算机可读的媒体驱动器的驱动器字母指定取决于上述操作系统和上述系统描述符记录。
5.根据权利要求4的计算机系统,其中上述制造处理码还可以使上述至少一个处理器对计算机可读的媒体驱动器字母指定的确定能在上述操作系统桌面被完全初始化之前进行,还可以使基于计算机可读的媒体驱动器的软件应用能结合在桌面上的简捷访问和菜单选择的建立中。
6.根据权利要求4的计算机系统,其中上述计算机可读的媒体驱动器包含CD-ROM驱动器。
7.根据权利要求4的计算机系统,其中上述计算机可读的媒体驱动器包含可卸型盒式硬盘驱动器。
8.根据权利要求1的计算机系统,其中上述制造处理码包含动态连接库函数。
9.根据权利要求8的计算机系统,其中动态连接库函数可以被一个外部软件应用安装程序调用,该外部软件应用安装程序包含一个用于定制计算机系统制造的安装例行程序。
10.根据权利要求8的计算机系统,其中动态连接库函数包含GetCdRomDriveLetter函数和GetFakeCdRomDriveLetter函数。
11.根据权利要求10的计算机系统,其中GetCdRomDriveLetter函数利用了GetExpectedDriveTypeList函数和GetDriveType函数的结合。
12.根据权利要求11的计算机系统,其中GetCdRomDriveLetter函数还是一个DLL输出函数,它向调用例行程序返回从下述两项中选出的一项i)计算机可读的媒体驱动器字母指定;ii)零,如果没有找到或期望到该计算机可读的媒体驱动器。
13.根据权利要求11的计算机系统,其中GetFakeCdRomDriveLetter函数还是一个DLL输出函数,它向调用例行程序返回从下述两项中选出的一项i)计算机可读的媒体驱动器的驱动器字母指定,如果已经分配了这样一个字母,ii)一个分配给计算机可读的媒体驱动器的驱动器字母指定,如果以前尚未分配过该计算机可读的媒体驱动器字母。
14.根据权利要求11的计算机系统,其中GetExpectedDriveTypeList函数是一个DLL内部函数,用于构筑一个内部驱动器类型表。
15.根据权利要求11的计算机系统,其中GetDriveType函数是一个DLL输出函数,它向调用例行程序返回与该调用例行程序所传送的根目录相关联的驱动器类型。
16.一种计算机系统方法,它包括提供至少一个处理器;提供至少一个计算机可读的媒体驱动器;以及提供制造处理码,其中包含能使至少一个处理器确定至少一个计算机可读的媒体驱动器的驱动器字母指定的可执行指令。
17.根据权利要求16的方法,其中计算机可读的媒体驱动器包含CD-ROM驱动器。
18.根据权利要求16的方法,其中计算机可读的媒体驱动器包含可卸型盒式硬盘驱动器。
19.根据权利要求16的方法,它还包括提供一个操作系统,该操作系统含有一个适合于实现对基于计算机可读的媒体驱动器的软件应用的简捷访问和菜单选择的桌面;以及提供一个系统描述符记录,其中计算机可读的媒体驱动器的驱动器字母指定取决于操作系统和系统描述符记录。
20.根据权利要求19的方法,其中制造处理码还可以使至少一个处理器对计算机可读的媒体驱动器字母指定的确定能在操作系统桌面被完全初始化之前进行,还可以使基于计算机可读的媒体驱动器的软件应用能结合在桌面上的简捷访问和菜单选择的建立中。
21.根据权利要求19的方法,其中计算机可读的媒体驱动器包含CD-ROM驱动器。
22.根据权利要求19的方法,其中计算机可读的媒体驱动器包含可卸型盒式硬盘驱动器。
23.根据权利要求16的方法,其中制造处理码包含动态连接库函数。
24.根据权利要求23的方法,其中动态连接库函数可以被一个外部软件应用安装程序调用,该外部软件应用安装程序含有用于定制计算机系统制造的安装例行程序。
25.根据权利要求23的方法,其中动态连接库函数包含GetCdRomDriveLetter函数和GetFakeCdRomDriveLetter函数。
26.根据权利要求25的方法,其中GetCdRomDriveLetter函数利用了GetExpectedDriveTypeList函数和GetDriveType函数的结合。
27.根据权利要求26的方法,其中GetCdRomDriveLetter函数还是一个DLL输出函数,它向调用例行程序返回从以下两项中选出的一项i)计算机可读的媒体驱动器的驱动器字母指定;ii)零,如果没有找到或期望到该计算机可读的媒体驱动器。
28.根据权利要求26的方法,其中GetFakeCdRomDriveLetter函数还是一个DLL输出函数,它向调用例行程序返回从以下两项中选出的一项i)计算机可读的媒体驱动器的一个驱动器字母指定,如果已经分配了这样一个字母指定;ii)一个分配给计算机可读的媒体驱动器的驱动器字母指定,如果以前尚未分配过计算机可读的媒体驱动器的字母。
29.根据权利要求26的方法,其中GetExpectedDriveTypeList函数是一个DLL内部函数,用于构筑一个内部驱动器类型表。
30.根据权利要求26的方法,其中GetDriveType函数是一个DLL输出函数,它向调用例行程序返回与该调用例行程序所传送的根目录相关联的驱动器类型。
全文摘要
一个计算机系统包含一个处理器、至少一个计算机可读的媒体驱动器、和制造处理码。制造处理码包含能使处理器确定至少一个计算机可读的媒体驱动器的驱动器字母指定的可执行指令。该计算机系统还包含一个操作系统和一个系统描述符记录,其中操作系统包含一个适合于实现对基于计算机可读的媒体驱动器的软件应用的简捷访问和菜单选择的桌面。计算机可读的媒体驱动器的驱动器字母指定还取决于操作系统和系统描述符记录。再有,制造处理码可以使处理器对计算机可读的媒体驱动器字母指定的确定在操作系统桌面被完全初始化之前进行,还可以使基于计算机可读的媒体驱动器的软件应用能结合在桌面上的简捷访问和菜单选择的建立中。
文档编号G06F3/08GK1270347SQ9912283
公开日2000年10月18日 申请日期1999年11月25日 优先权日1999年1月26日
发明者保罗·J·迈厄 申请人:戴尔美国公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1