具体实施方式
以下说明涉及安装和加载驱动程序包,包括相关驱动程序文件的技术。将驱动程序文件(包括至少一个驱动程序映像文件)安装到计算设备的硬盘驱动器上,作为驱动程序包的一部分,支持以硬连线或无线方式和相应计算设备共同使用的外围设备。但是,由于新的和更新版本的驱动程序文件常常具有和之前安装的驱动程序文件相同的名字,当操作各种外围设备时常常会出现冲突。
所述实施方式能并行安装和加载相同命名的驱动程序包和相关的驱动程序文件。即,所述实施方式能在相同硬盘驱动器上安装一个以上相同命名的驱动程序包和/或相关的驱动程序文件,并在不产生处理冲突的条件下加载到存储器中。更具体的是,所述安装包括在公共存储器的唯一分配的子目录中存储各驱动程序包和相关的驱动程序文件。若不并行的话,所述子目录和安装其它相同命名的驱动程序包和相关驱动程序文件的其它子目录接近。根据强名字为各驱动程序包分配各子目录。对驱动程序包而言,强名字是唯一的标识,可用于在任何计算设备上标记所述驱动程序包。
图1显示了用并行安装程序115安装驱动程序包110的计算设备105的例子。驱动程序包110(包括驱动程序文件)安装到计算设备105的硬盘驱动器上,支持以硬连线或无线方式和计算设备105共同使用的外围设备。可以和计算设备105共同使用的非排他性外围设备的例子包括复印机120、打印机125、游戏控制器130、个人数字助理(PDA)135、无线手机140和便携式摄像机145。其它外围设备(未显示)和音频/视频数据的输入/输出数据文件的传输等有关。当它们安装、连接或插到计算设备105中,或当它们和计算设备105无线通信时,这种外围设备可以和计算设备105共同使用。
而且,计算设备105可以是任意各种常规计算设备,包括桌面个人计算机(PC)、工作站、大型计算机、因特网设备和游戏控制器。而且,计算设备105可以是和网络有关的设备,包括但不限于PDA、便携式计算机和蜂窝式电话120等,它们可以通过有线和/或无线连接方式和网络进行通信。下面参考附图6进一步详细说明客户机或服务器的实施方式。
驱动程序包110可以通过并行安装程序115安装到计算设备105的硬盘驱动器上。计算设备105的并行安装程序115可以通过计算机可存取的介质(包括但不限于CD-ROM、闪存RAM或软盘)接收驱动程序包110(包括相关的驱动程序文件)。或者,计算设备105的并行安装程序115可以通过网络接收驱动程序包110和相关文件,作为从网站或中央服务器传送的操作系统升级或其它类型数据的一部分。
图2说明了驱动程序包110的例子。但是,按照本文实施例并行安装的驱动程序包或其它相关驱动程序文件不限于图2所述的。
外围设备的供应商通常提供驱动程序包110和相关驱动程序文件,支持外围设备在计算设备105上的功能。和驱动程序包110相关的驱动程序文件的例子包括设备设置信息文件(即,INF)210、至少一个驱动程序映像文件(即,“.sys”)215、驱动程序目录文件220、一个或多个辅助安装程序文件225和其它文件230(包括定制设备加载应用程序、设备图标、驱动程序库文件等)。
设备设置信息(INF)文件210包含操作系统设置组件所需的信息,用于加载外围设备的支持。
驱动程序映像文件215包含驱动程序的映像文件。驱动程序映像文件扩展名的非限制性例子是“.sys”,如Microsoft
操作系统中所用的。当它们形成操作系统和外围设备(与计算设备105共同使用)之间的接口时,驱动程序映像文件常称为“驱动程序”。
驱动程序目录文件220包括对应于外围设备和/或驱动程序包供应商的数字签名。驱动程序目录文件220也可以包括供应商的公钥或者公钥标记,它和数字签名相结合或者附于其上。
辅助安装程序225是辅助安装和管理安装或连接到计算设备105上的外围设备的可选驱动程序文件。
图3显示了执行并行安装驱动程序文件所用处理流程的功能部分的实施方式。
在图3所示的实施例中,在外围设备通过硬连线或无线方式和计算设备105连接之前或之后,安装程序115将驱动程序包110接收到计算设备105中。如上所述,驱动程序包110可以从计算机可存取的介质如CD-ROM、闪存RAM、软盘等或通过网络在线接收。
安装程序115是和计算设备105相关的模块或组件,它们接收驱动程序包110并产生用于驱动程序包110的“强名字”305。强名字305是在至少计算设备105上驱动程序包110的唯一标识。而且,强名字305可用于唯一标记驱动程序包110,以及和驱动程序包110相关的任意一个驱动程序文件210、215、220、225和230。
安装程序115产生强名字305,作为驱动程序包110所含、有关或附带的数据的函数。更具体的是,可以产生强名字305,作为来自和驱动程序包110有关的驱动程序文件210、215、220、225和230的数据的任意组合的散列(hash)、任意这种数据的连接或者散列和连接的可变组合。例如,使用SHA1散列(20字节)的驱动程序目录文件220、至少一部分设备设置信息文件(即,INF)210和至少一种版本、日期、结构和语言的设备设置信息文件210可以产生强名字305。或者,强名字305可以包含在驱动程序包110中,作为INF文件的部分。这种信息可以包含驱动程序文件的版本或者制造商的名字。因此,“产生”强名字305仅仅是从驱动程序包中的合适文件提取强名字的功能。
所需的产生强名字305的效果或许是将驱动程序包110及其相关驱动程序文件反向与供应商关联起来,用于之后的标识和支持的目的。因此,强名字305还包含供应商名字、供应商公钥或公钥标记、驱动程序包版本和与驱动程序包110有关的其它驱动程序文件的任意组合的散列和/或连接。这种数据仅作为例子提供,决不是具体限制所涉及的实际驱动程序包。
在图3的例子中,安装程序115可使用强名字305来为驱动程序文件310分配驱动程序存储315中的唯一存储位置。所述唯一的存储位置可以分配给整个驱动程序包110,或者分配给和驱动程序包110相关的一个或多个驱动程序文件,这包括驱动程序包110本身或者设备设置信息文件210、驱动程序映像文件215、驱动程序目录文件220、辅助安装程序225或“其它”文件230的任意组合。
驱动程序存储315是和计算设备105有关的存储部件或模块,它包含许多子目录,各子目录分配给单独的驱动程序包或者至少一个相关的驱动程序文件,用于产生强名字305。下面参考图4详细说明驱动程序存储315的实施方式。
图3的例子还提到根据强名字305从驱动程序包110中的一个驱动程序文件提取的具体数据的存储。尤其是,所述例子显示了服务名320,它从驱动程序包110的设备设置信息(INF)文件210提取,被分配了存储名数据库325中的唯一存储位置。操作系统使用服务名和相关的参数,为外围设备建立通向支持外围设备的驱动程序文件的映像路径。下面参考图5进一步详细说明服务名数据库325的实施方式。
图4显示了驱动程序存储315的例子。驱动程序存储315可以是计算设备105有关的存储模块或组件。驱动程序存储315包括许多子目录,各自和用于各驱动程序包110或至少一个有关驱动程序文件的强名字305一致。因此,各子目录根据强名字305安装驱动程序包110或有关驱动程序文件。
通过并行安装相同命名的驱动程序包或有关驱动程序文件(包括驱动程序映像文件),驱动程序存储315能使系统减少驱动程序映像冲突的出现。供应商将相同的名字重复用于多种版本的驱动程序文件,尤其是驱动程序映像文件。或者,不同供应商常常将相同的名字用于不同外围设备相关的驱动程序文件(例如,驱动程序映像文件)。因此,根据唯一标识如强名字305来存储驱动程序包及其有关驱动程序文件的实施例能将相同命名的驱动程序文件并行安装到驱动程序存储315中。
图4的例子假设安装到图3所示驱动程序存储315中的驱动程序文件310是不同驱动程序包对应的驱动程序映像文件。更具体的是,在图4中,三种不同驱动程序映像文件(名为foo.sys)可以并行安装到驱动程序存储315的子目录405、410和415中。所述单独驱动程序映像文件(名为foo.sys)根据各驱动程序映像文件的各驱动程序包产生的强名字“strongname.1”、“strongname.2”和“strongname.3”安装到子目录405、410和415中。至于图4的例子,来自不同驱动程序包的相同命名的驱动程序文件可以并行安装到计算设备105中。而且,没有任何名为foo.sys的驱动程序映像文件会相互覆盖,不论它们安装到计算设备105的硬盘驱动器上的驱动程序存储315中的顺序。
图5显示了服务名数据库325的例子,用于辅助加载驱动程序文件。尤其是,当操作系统将用于外围设备的驱动程序映像文件从驱动程序存储315加载到计算设备105的存储器中时,避免了驱动冲突。尤其是,所述操作系统确定子目录405、410和415中哪一个已经安装了用于将计算设备105上的操作系统连接到外围设备上的合适驱动程序映像文件。
在图5中,服务名数据库325可以是和计算设备105有关的存储模块或组件。服务器数据库325识别和驱动程序包及其相关驱动程序文件的强名字一致的许多子目录。因此,服务名数据库325的各子目录存储了和驱动相关的参数,如服务关键字、映像路径或和安装在驱动程序存储315中的驱动程序包110或相关驱动程序文件相对应的其它信息。服务名数据库仅仅是将操作指向给定外围设备的具体驱动的模块例子。
服务名数据库325包括服务关键字、映像路径和与图4中的驱动程序映像文件相对应的其它服务有关的信息。子目录模块505、510和515各自存储服务关键字、映像路径和其它信息,对应于图4中具有强名字“strongname.1”、“strongname.2”和“strongname.3”的驱动程序映像文件。
例如,图5显示服务关键字“ServiceName.StrongName.1”505包括从给定强名字“strongname.1”的驱动程序包提取的服务名。映像路径“%DriverStore%\StrongName.1\Foo.Sys”510将外围设备程序编码指向在驱动程序存储315中的子目录%DriverStore%\StrongName.1405安装的驱动程序映像文件foo.sys(见图4)。所述参数“其它信息”包括和任意其它服务名有关的数据,它可用于支持以硬连线或无线方式和计算设备105共同使用的外围设备。因此,操作系统可以访问服务名数据库325,并通过合适的服务名参数指向驱动程序存储315中安装的合适驱动程序映像文件,将外围设备的程序编码连接到操作系统上。因此,操作系统可以将名为foo.sys的正确驱动程序映像文件加载到计算设备105的存储器中,操作所述外围设备。
在所述实施方式中,并行安装驱动程序包及其相关的驱动程序文件。但是,若另一驱动程序文件共享相同的名字的话,并不是所有的相关驱动程序文件(例如,驱动程序映像文件)从其各自的驱动程序存储位置加载到计算设备的存储器中。INF文件的另一实施方式包括命令操作系统的标志,从驱动程序存储315加载和驱动程序包相关的驱动程序文件。后者对应的编码例子如下所述:
#if_SETUPAPI_VER>=0 x 0600
//
//(AddService)并行安装服务
//
#define SPSVCINST_SIDE_BY_SIDE(0 x 00000800)
#endif//_SETUPAPI_VER>=0 x 0600。
标志“SPSVCINST_SIDE_BY_SIDE”(非限制性例子)确立了将来自安装在驱动程序存储315中的驱动程序包的驱动程序映像文件从驱动程序存储315加载到计算设备105的存储器上,操作外围设备。
图6说明了通用计算机环境600,它可以用于执行上述并行加载驱动程序文件的技术。所述计算机环境600仅是计算环境的例子,决不是要对计算机和网络结构的应用或功能范围进行限制。计算机环境600也不应解释为具有和计算机环境600例子中所述任意一个组件或组件的组合相关的任意相关性或要求。
计算机环境600包括呈计算机602形式的通用计算设备,它包括计算设备105。所述计算机602的部件包括但不限于一个或多个处理器或处理单元604、系统存储器606以及将各种系统组件(包括处理器604)耦合到系统存储器606上的系统总线608。
系统总线608表示了任意几种类型的总线结构中的一种或多种,包括存储器总线或存储控制器、外围总线、图像加速端口和使用任意各种总线结构的处理器或局部总线。通过例子,这种结构可以包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、外围组件互连(PCI,已知为Mezzanine总线),PCI快速总线、通用串行总线(USB)、安全数据(SD)总线或者IEEE1394,即,火线总线)。
计算机602可以包括各种计算机可读介质。这种介质可以是任何计算机602可访问的介质,包括易失性和非易失性的介质、可移动或不可移动的介质。
系统存储器606包括呈易失性存储器形式的计算机可读介质,如随机存取存储器(RAM)610、和/或非易失性的存储器,如只读存储器(ROM)612或闪存RAM。基本输入/输出系统(BIOS)614包括例如在启动过程中帮助在计算机602中部件之间转送信息的基本例行程序,它们存储在ROM612或闪存RAM中。RAM610通常包含数据和/或程序模块,它们通过处理单元604直接存取和/或操作。
计算机602也包括其它可移动/不可移动的,易失性/非易失性计算机存储介质。例如,图6说明了从不可移动的非易失性的磁性介质(未显示)读取和写入的硬盘驱动器616、从可移动、非易失性磁盘620(例如,软盘)上读取和写入的磁盘驱动器618以及从可移动、非易失性光盘624如CD-ROM、DVD-ROM或其它光学介质上读取和/或写入的光盘驱动器622。硬盘驱动器616、磁盘驱动器618和光盘驱动器622通过一个或多个数据介质接口625各自连接到系统总线608上。或者,硬盘驱动器616、磁盘驱动器618和光盘驱动器622通过一个或多个接口(未显示)连接到系统总线608上。
所述磁盘驱动器及其相关的计算机可读介质提供了计算机可读指令、数据结构、程序模块和其它计算机602的数据的非易失性存储方式。虽然所述例子说明了硬盘驱动器616、可移动磁盘620和可移动光盘624,但是应意识到也可以使用其它类型的计算机可读介质(可存储计算机可存取的数据),如磁带或其它磁性存储设备、闪存卡、CD-ROM、数字通用盘(DVD)或其它光学存储器、随机存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等来执行示例计算系统和环境。
可以将许多程序模块存储到硬盘616、磁盘620、光盘624、ROM612和/或RAM610上,例如,操作系统626、一个或多个应用程序628、其它程序模块630和程序数据632。所述操作系统626、一个或多个应用程序628、其它程序模块630和程序数据632各自(或其一些组合)可以实现支持所述分布式文件系统的全部或部分驻留组件。
用户可以通过输入设备如键盘634和指向设备636(例如,鼠标)将命令和信息输入计算机602中。其它输入设备638(具体未显示)包括麦克风、操纵杆、游戏垫、圆盘式卫星电视天线、串行端口、扫描仪等。这些和其它输入设备通过输入/输出接口640和处理单元604连接,所述接口640耦合到系统总线608上,也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。
监视器642或其它类型的显示设备也可以通过接口如视频适配器644连接到系统总线608上。除了监视器642以外,其它输入外围设备包括组件如扬声器(未显示)和打印机646,它们可以通过I/O接口604连接到计算机602上。
通过逻辑连接到一个或多个远程计算机,如远程计算设备648上,计算机602可以在网络环境下操作。例如,远程计算设备648可以是PC、便携式计算机、服务器、路由器、网络计算机、对等设备或其它普通网络节点等。远程计算设备648描述为便携式计算机,它可以包括本文所述相对于计算机602的许多或所有元件和特征。或者,计算机602也可以在非网络环境中操作。
计算机602和远程计算机648之间的逻辑连接描述为局域网(LAN)650和广域网(WAN)652。这种网络环境常用于办公室、企业式计算机网络、企业内部互联网和因特网。
当在LAN网络环境中使用时,计算机602通过网络接口或适配器654连接到局域网650中。当在WAN网络环境中使用时,计算机602通常包括调制解调器656或其它在大网络652上建立连接的装置。调制解调器656可以置于计算机602的外部或内部,通过I/O接口640或其它合适机制连接到系统总线608上。应意识到,所述网络连接是例子,可以使用其它在计算机602和648之间建立至少一种通信连接的装置。
在网络环境中,如计算环境600所示,相对于计算机602或其部分所述的程序模块可以存储在远程存储器设备中。例如,远程应用程序658驻留在远程计算机648的存储器设备中。为了进行说明,本文将应用或程序和其它可执行的程序组件,诸如操作系统描述为离散的程序块,虽然认为这种程序和组件在各时间下驻留在计算设备602的不同存储组件中,并由计算机至少一个数据处理器执行。
在计算机可执行指令的一般背景中说明了各种模块和技术,如程序模块,由一个或多个计算机或其它设备执行。通常,程序模块包括例行程序、程序、对象、组件、数据结构等,用于执行具体的任务,或实现具体的抽象数据类型。通常,可以按照各种实施方式中所希望的,组合或分布程序模块的功能。
这些模块和技术的实现可以存储在计算机可读介质中,或者在一些计算机可读介质形式之间传送。计算机可读介质可以是任何可用的介质,它们可被计算机访问。例如,计算机可读介质包括“计算机存储介质”和“通信介质”,但不限于这些。
“计算机存储介质”包括易失性和非易失性的,可移动和不可移动的介质,可以用任何存储信息如计算机可读指令、数据结构、程序模块或其它数据的方法或技术实现。
计算机存储介质包括(但不限于)RAM、ROM、EEPROM、闪存RAM或其它存储技术、CD-ROM、数字通用盘(DVD)或其它光学存储器、磁带盒、磁带、磁盘存储或其它磁存储设备,或任何可用于存储所需的信息并被计算机访问的其它介质。
“通信介质”通常包括计算机可读指令、数据结构、程序模块或调制数据信号中的其它数据,如载波或其它传送机制。通信介质也包括任何信息传输介质。术语“调制数据信号”是指以在信号中编码信息的方式设置或改变其一个或多个特征的信号。作为非限制性的例子,通信介质包括有线介质,如有线网络或直接有线连接,以及无线介质,如声波、RF、红外线和其它无线介质。在计算机可读的介质范围内包括上述的任意组合。
虽然已经说明了本发明的实施方式和应用,但是应理解本发明并不限制于上述精确的构型和资源。在不背离权利要求所限定的发明范围的条件下,可以在本发明的排列、操作以及方法和系统的细节上作出对本领域那些技术人员来说显而易见的各种修改、改变和变化。