專利名稱:并行驅(qū)動程序的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及同時安裝和加載的多個相同命名的驅(qū)動程序。
背景技術(shù):
驅(qū)動程序映像文件(或“驅(qū)動程序”)是將計算設(shè)備所用操作系統(tǒng)連接到外圍設(shè)備的例行程序。驅(qū)動程序映像文件包括外圍設(shè)備所用的機器語言,用于執(zhí)行相應(yīng)程序碼所請求的功能。對于能和計算設(shè)備協(xié)同使用的外圍設(shè)備,在所述外圍設(shè)備能執(zhí)行其預(yù)期功能之前,要將包含相關(guān)驅(qū)動程序文件的驅(qū)動程序包(包括驅(qū)動程序映像文件)安裝到計算設(shè)備的硬盤驅(qū)動器上。
安裝到計算設(shè)備的硬盤驅(qū)動器上的驅(qū)動程序包的數(shù)量隨計算設(shè)備的操作系統(tǒng)所支持的外圍設(shè)備數(shù)而增多。尤其是對大多數(shù)和計算設(shè)備聯(lián)合使用的每一個外圍設(shè)備,將驅(qū)動程序包的相當(dāng)穩(wěn)定的數(shù)據(jù)流安裝到計算設(shè)備的硬盤驅(qū)動器上,用于代替或更新現(xiàn)有的驅(qū)動程序包或者和現(xiàn)有驅(qū)動程序包相關(guān)的驅(qū)動程序文件。
不幸的是,外圍設(shè)備和相應(yīng)驅(qū)動程序包的供應(yīng)商常常使用相同名字的和上述驅(qū)動程序包有關(guān)的新更新版本的驅(qū)動程序文件。當(dāng)把新更新的驅(qū)動程序包或者相關(guān)驅(qū)動程序文件安裝到計算設(shè)備的硬盤驅(qū)動器上時,它們通常會覆蓋之前安裝的驅(qū)動程序包(它具有與之相關(guān)的同名驅(qū)動程序文件),而不論是否是和相同外圍設(shè)備有關(guān)的同名驅(qū)動程序文件。因此,重復(fù)使用驅(qū)動程序文件名導(dǎo)致出現(xiàn)本領(lǐng)域技術(shù)人員所稱的“驅(qū)動程序沖突”。驅(qū)動程序文件沖突的結(jié)果是使用具體驅(qū)動程序文件的外圍設(shè)備實際上調(diào)用了和所需驅(qū)動程序文件名字相同的另一驅(qū)動程序文件,或者外圍設(shè)備調(diào)用不再存在的驅(qū)動程序文件,這是因為它已經(jīng)被之后安裝的具有相同名字的驅(qū)動程序文件覆蓋了。
Microsoft Corporation of Redmond,WA的研究員認為目前版本的Windows操作系統(tǒng)可以支持157000個以上的驅(qū)動程序文件,但是大約只有26000個驅(qū)動程序文件被唯一命名。即大約131000個操作系統(tǒng)支持的驅(qū)動程序文件具有重復(fù)的名字。而且,該研究還發(fā)現(xiàn)外圍設(shè)備供應(yīng)商提出的唯一命名的驅(qū)動程序文件數(shù)以至少12個/天的速度增加,但是操作系統(tǒng)支持的新的驅(qū)動程序文件總數(shù)以150個/天以上的速度增加。換句話說,具有重復(fù)名字的驅(qū)動程序文件以大約138個/天的速度增加。因此,驅(qū)動程序沖突的比例也增大。
以下假設(shè)代表了操作系統(tǒng)中加載的重復(fù)命名的驅(qū)動程序文件出現(xiàn)的問題。所述例子假設(shè)用戶將打印機插到計算機上,并安裝了相應(yīng)的驅(qū)動程序包。所述驅(qū)動程序包包括信息文件“INF”,它指出驅(qū)動程序包中包含了哪些文件。通常,所述INF文件指出存在至少一個驅(qū)動程序映像文件(例如,“foo.sys”),它安裝到用戶計算機的硬盤驅(qū)動器上。所述例子還假設(shè)用戶經(jīng)常將復(fù)印機插到計算機上,并安裝也具有名為“foo.sys”的驅(qū)動程序映像文件的相應(yīng)驅(qū)動程序包。在當(dāng)前實現(xiàn)的解決方案中,最新插入的復(fù)印機相應(yīng)的驅(qū)動程序映像文件foo.sys安裝在打印機相應(yīng)的較舊的驅(qū)動程序映像文件上。結(jié)果,當(dāng)要將復(fù)印機相應(yīng)的foo.sys加載到計算機存儲器中,供相應(yīng)應(yīng)用程序使用時,使用打印機就會導(dǎo)致驅(qū)動程序沖突。因此,打印機在用戶的計算機上就不能工作。
另一假設(shè)例子涉及想要使用不同版本的驅(qū)動程序映像文件來驅(qū)動不同版本的外圍設(shè)備的供應(yīng)商。但是,當(dāng)更新或升級較早版本驅(qū)動程序映像文件時,若供應(yīng)商不能改變至少一個驅(qū)動程序映像文件的名字,則計算設(shè)備的硬盤驅(qū)動器上較早版本的驅(qū)動程序映像文件會被升級的驅(qū)動程序映像文件覆蓋。因此,當(dāng)較新版本的驅(qū)動程序映像文件覆蓋了具有相同名字的之前版本的驅(qū)動程序映像文件時,需要之前版本的驅(qū)動程序映像文件的外圍設(shè)備不能將所需驅(qū)動程序映像文件加載到存儲器中,因此,所述外圍設(shè)備不能在計算設(shè)備上操作。即,名字和之前版本的驅(qū)動程序映像文件相同的新的或更新的驅(qū)動程序映像文件已經(jīng)安裝到計算設(shè)備的硬盤驅(qū)動器上,代替了之前版本的驅(qū)動程序映像文件。
發(fā)明內(nèi)容
本文說明了并行安裝和加載驅(qū)動器。
為了支持和計算機協(xié)同使用的外圍設(shè)備,將驅(qū)動程序包安裝到計算設(shè)備的硬盤驅(qū)動器上??蔀檫@樣的驅(qū)動程序包產(chǎn)生一個強名字(strong name)。然后,所述強名字用作在公共存儲器中為驅(qū)動程序包和有關(guān)驅(qū)動程序文件分配唯一子目錄位置的基準(zhǔn),不論驅(qū)動程序包和相關(guān)驅(qū)動程序文件是否和其它驅(qū)動程序包和相關(guān)驅(qū)動程序文件共享一個名字。
在以下詳細說明中,由于以下詳述使得各種改變和修改對本領(lǐng)域那些技術(shù)人員來說顯而易見的,因此,所述實施方式僅用于示例說明的目的。在附圖中,標(biāo)記號碼最左邊的數(shù)字表示其中所述標(biāo)記號碼第一次出現(xiàn)的附圖。在不同附圖中使用相同的標(biāo)記號碼來表示類似或相同的物品。
圖1顯示計算設(shè)備例子,它安裝驅(qū)動程序包來支持許多插入或連接到計算設(shè)備上的外圍設(shè)備中至少一個。
圖2說明可以按照實施方式所述進行安裝的驅(qū)動程序包的例子。
圖3說明了執(zhí)行并行驅(qū)動安裝的功能部分的例子,并演示了包括所述部分的相關(guān)處理流程的例子。
圖4說明了圖3中存儲部分的例子。
圖5說明了圖3中存儲部分的另一例子。
圖6說明了可用于執(zhí)行本文所述技術(shù)的通用計算機網(wǎng)絡(luò)環(huán)境的例子。
具體實施例方式
以下說明涉及安裝和加載驅(qū)動程序包,包括相關(guān)驅(qū)動程序文件的技術(shù)。將驅(qū)動程序文件(包括至少一個驅(qū)動程序映像文件)安裝到計算設(shè)備的硬盤驅(qū)動器上,作為驅(qū)動程序包的一部分,支持以硬連線或無線方式和相應(yīng)計算設(shè)備共同使用的外圍設(shè)備。但是,由于新的和更新版本的驅(qū)動程序文件常常具有和之前安裝的驅(qū)動程序文件相同的名字,當(dāng)操作各種外圍設(shè)備時常常會出現(xiàn)沖突。
所述實施方式能并行安裝和加載相同命名的驅(qū)動程序包和相關(guān)的驅(qū)動程序文件。即,所述實施方式能在相同硬盤驅(qū)動器上安裝一個以上相同命名的驅(qū)動程序包和/或相關(guān)的驅(qū)動程序文件,并在不產(chǎn)生處理沖突的條件下加載到存儲器中。更具體的是,所述安裝包括在公共存儲器的唯一分配的子目錄中存儲各驅(qū)動程序包和相關(guān)的驅(qū)動程序文件。若不并行的話,所述子目錄和安裝其它相同命名的驅(qū)動程序包和相關(guān)驅(qū)動程序文件的其它子目錄接近。根據(jù)強名字為各驅(qū)動程序包分配各子目錄。對驅(qū)動程序包而言,強名字是唯一的標(biāo)識,可用于在任何計算設(shè)備上標(biāo)記所述驅(qū)動程序包。
圖1顯示了用并行安裝程序115安裝驅(qū)動程序包110的計算設(shè)備105的例子。驅(qū)動程序包110(包括驅(qū)動程序文件)安裝到計算設(shè)備105的硬盤驅(qū)動器上,支持以硬連線或無線方式和計算設(shè)備105共同使用的外圍設(shè)備??梢院陀嬎阍O(shè)備105共同使用的非排他性外圍設(shè)備的例子包括復(fù)印機120、打印機125、游戲控制器130、個人數(shù)字助理(PDA)135、無線手機140和便攜式攝像機145。其它外圍設(shè)備(未顯示)和音頻/視頻數(shù)據(jù)的輸入/輸出數(shù)據(jù)文件的傳輸?shù)扔嘘P(guān)。當(dāng)它們安裝、連接或插到計算設(shè)備105中,或當(dāng)它們和計算設(shè)備105無線通信時,這種外圍設(shè)備可以和計算設(shè)備105共同使用。
而且,計算設(shè)備105可以是任意各種常規(guī)計算設(shè)備,包括桌面?zhèn)€人計算機(PC)、工作站、大型計算機、因特網(wǎng)設(shè)備和游戲控制器。而且,計算設(shè)備105可以是和網(wǎng)絡(luò)有關(guān)的設(shè)備,包括但不限于PDA、便攜式計算機和蜂窩式電話120等,它們可以通過有線和/或無線連接方式和網(wǎng)絡(luò)進行通信。下面參考附圖6進一步詳細說明客戶機或服務(wù)器的實施方式。
驅(qū)動程序包110可以通過并行安裝程序115安裝到計算設(shè)備105的硬盤驅(qū)動器上。計算設(shè)備105的并行安裝程序115可以通過計算機可存取的介質(zhì)(包括但不限于CD-ROM、閃存RAM或軟盤)接收驅(qū)動程序包110(包括相關(guān)的驅(qū)動程序文件)?;蛘?,計算設(shè)備105的并行安裝程序115可以通過網(wǎng)絡(luò)接收驅(qū)動程序包110和相關(guān)文件,作為從網(wǎng)站或中央服務(wù)器傳送的操作系統(tǒng)升級或其它類型數(shù)據(jù)的一部分。
圖2說明了驅(qū)動程序包110的例子。但是,按照本文實施例并行安裝的驅(qū)動程序包或其它相關(guān)驅(qū)動程序文件不限于圖2所述的。
外圍設(shè)備的供應(yīng)商通常提供驅(qū)動程序包110和相關(guān)驅(qū)動程序文件,支持外圍設(shè)備在計算設(shè)備105上的功能。和驅(qū)動程序包110相關(guān)的驅(qū)動程序文件的例子包括設(shè)備設(shè)置信息文件(即,INF)210、至少一個驅(qū)動程序映像文件(即,“.sys”)215、驅(qū)動程序目錄文件220、一個或多個輔助安裝程序文件225和其它文件230(包括定制設(shè)備加載應(yīng)用程序、設(shè)備圖標(biāo)、驅(qū)動程序庫文件等)。
設(shè)備設(shè)置信息(INF)文件210包含操作系統(tǒng)設(shè)置組件所需的信息,用于加載外圍設(shè)備的支持。
驅(qū)動程序映像文件215包含驅(qū)動程序的映像文件。驅(qū)動程序映像文件擴展名的非限制性例子是“.sys”,如Microsoft Windows操作系統(tǒng)中所用的。當(dāng)它們形成操作系統(tǒng)和外圍設(shè)備(與計算設(shè)備105共同使用)之間的接口時,驅(qū)動程序映像文件常稱為“驅(qū)動程序”。
驅(qū)動程序目錄文件220包括對應(yīng)于外圍設(shè)備和/或驅(qū)動程序包供應(yīng)商的數(shù)字簽名。驅(qū)動程序目錄文件220也可以包括供應(yīng)商的公鑰或者公鑰標(biāo)記,它和數(shù)字簽名相結(jié)合或者附于其上。
輔助安裝程序225是輔助安裝和管理安裝或連接到計算設(shè)備105上的外圍設(shè)備的可選驅(qū)動程序文件。
圖3顯示了執(zhí)行并行安裝驅(qū)動程序文件所用處理流程的功能部分的實施方式。
在圖3所示的實施例中,在外圍設(shè)備通過硬連線或無線方式和計算設(shè)備105連接之前或之后,安裝程序115將驅(qū)動程序包110接收到計算設(shè)備105中。如上所述,驅(qū)動程序包110可以從計算機可存取的介質(zhì)如CD-ROM、閃存RAM、軟盤等或通過網(wǎng)絡(luò)在線接收。
安裝程序115是和計算設(shè)備105相關(guān)的模塊或組件,它們接收驅(qū)動程序包110并產(chǎn)生用于驅(qū)動程序包110的“強名字”305。強名字305是在至少計算設(shè)備105上驅(qū)動程序包110的唯一標(biāo)識。而且,強名字305可用于唯一標(biāo)記驅(qū)動程序包110,以及和驅(qū)動程序包110相關(guān)的任意一個驅(qū)動程序文件210、215、220、225和230。
安裝程序115產(chǎn)生強名字305,作為驅(qū)動程序包110所含、有關(guān)或附帶的數(shù)據(jù)的函數(shù)。更具體的是,可以產(chǎn)生強名字305,作為來自和驅(qū)動程序包110有關(guān)的驅(qū)動程序文件210、215、220、225和230的數(shù)據(jù)的任意組合的散列(hash)、任意這種數(shù)據(jù)的連接或者散列和連接的可變組合。例如,使用SHA1散列(20字節(jié))的驅(qū)動程序目錄文件220、至少一部分設(shè)備設(shè)置信息文件(即,INF)210和至少一種版本、日期、結(jié)構(gòu)和語言的設(shè)備設(shè)置信息文件210可以產(chǎn)生強名字305。或者,強名字305可以包含在驅(qū)動程序包110中,作為INF文件的部分。這種信息可以包含驅(qū)動程序文件的版本或者制造商的名字。因此,“產(chǎn)生”強名字305僅僅是從驅(qū)動程序包中的合適文件提取強名字的功能。
所需的產(chǎn)生強名字305的效果或許是將驅(qū)動程序包110及其相關(guān)驅(qū)動程序文件反向與供應(yīng)商關(guān)聯(lián)起來,用于之后的標(biāo)識和支持的目的。因此,強名字305還包含供應(yīng)商名字、供應(yīng)商公鑰或公鑰標(biāo)記、驅(qū)動程序包版本和與驅(qū)動程序包110有關(guān)的其它驅(qū)動程序文件的任意組合的散列和/或連接。這種數(shù)據(jù)僅作為例子提供,決不是具體限制所涉及的實際驅(qū)動程序包。
在圖3的例子中,安裝程序115可使用強名字305來為驅(qū)動程序文件310分配驅(qū)動程序存儲315中的唯一存儲位置。所述唯一的存儲位置可以分配給整個驅(qū)動程序包110,或者分配給和驅(qū)動程序包110相關(guān)的一個或多個驅(qū)動程序文件,這包括驅(qū)動程序包110本身或者設(shè)備設(shè)置信息文件210、驅(qū)動程序映像文件215、驅(qū)動程序目錄文件220、輔助安裝程序225或“其它”文件230的任意組合。
驅(qū)動程序存儲315是和計算設(shè)備105有關(guān)的存儲部件或模塊,它包含許多子目錄,各子目錄分配給單獨的驅(qū)動程序包或者至少一個相關(guān)的驅(qū)動程序文件,用于產(chǎn)生強名字305。下面參考圖4詳細說明驅(qū)動程序存儲315的實施方式。
圖3的例子還提到根據(jù)強名字305從驅(qū)動程序包110中的一個驅(qū)動程序文件提取的具體數(shù)據(jù)的存儲。尤其是,所述例子顯示了服務(wù)名320,它從驅(qū)動程序包110的設(shè)備設(shè)置信息(INF)文件210提取,被分配了存儲名數(shù)據(jù)庫325中的唯一存儲位置。操作系統(tǒng)使用服務(wù)名和相關(guān)的參數(shù),為外圍設(shè)備建立通向支持外圍設(shè)備的驅(qū)動程序文件的映像路徑。下面參考圖5進一步詳細說明服務(wù)名數(shù)據(jù)庫325的圖4顯示了驅(qū)動程序存儲315的例子。驅(qū)動程序存儲315可以是計算設(shè)備105有關(guān)的存儲模塊或組件。驅(qū)動程序存儲315包括許多子目錄,各自和用于各驅(qū)動程序包110或至少一個有關(guān)驅(qū)動程序文件的強名字305一致。因此,各子目錄根據(jù)強名字305安裝驅(qū)動程序包110或有關(guān)驅(qū)動程序文件。
通過并行安裝相同命名的驅(qū)動程序包或有關(guān)驅(qū)動程序文件(包括驅(qū)動程序映像文件),驅(qū)動程序存儲315能使系統(tǒng)減少驅(qū)動程序映像沖突的出現(xiàn)。供應(yīng)商將相同的名字重復(fù)用于多種版本的驅(qū)動程序文件,尤其是驅(qū)動程序映像文件?;蛘?,不同供應(yīng)商常常將相同的名字用于不同外圍設(shè)備相關(guān)的驅(qū)動程序文件(例如,驅(qū)動程序映像文件)。因此,根據(jù)唯一標(biāo)識如強名字305來存儲驅(qū)動程序包及其有關(guān)驅(qū)動程序文件的實施例能將相同命名的驅(qū)動程序文件并行安裝到驅(qū)動程序存儲315中。
圖4的例子假設(shè)安裝到圖3所示驅(qū)動程序存儲315中的驅(qū)動程序文件310是不同驅(qū)動程序包對應(yīng)的驅(qū)動程序映像文件。更具體的是,在圖4中,三種不同驅(qū)動程序映像文件(名為foo.sys)可以并行安裝到驅(qū)動程序存儲315的子目錄405、410和415中。所述單獨驅(qū)動程序映像文件(名為foo.sys)根據(jù)各驅(qū)動程序映像文件的各驅(qū)動程序包產(chǎn)生的強名字“strongname.1”、“strongname.2”和“strongname.3”安裝到子目錄405、410和415中。至于圖4的例子,來自不同驅(qū)動程序包的相同命名的驅(qū)動程序文件可以并行安裝到計算設(shè)備105中。而且,沒有任何名為foo.sys的驅(qū)動程序映像文件會相互覆蓋,不論它們安裝到計算設(shè)備105的硬盤驅(qū)動器上的驅(qū)動程序存儲315中的順序。
圖5顯示了服務(wù)名數(shù)據(jù)庫325的例子,用于輔助加載驅(qū)動程序文件。尤其是,當(dāng)操作系統(tǒng)將用于外圍設(shè)備的驅(qū)動程序映像文件從驅(qū)動程序存儲315加載到計算設(shè)備105的存儲器中時,避免了驅(qū)動沖突。尤其是,所述操作系統(tǒng)確定子目錄405、410和415中哪一個已經(jīng)安裝了用于將計算設(shè)備105上的操作系統(tǒng)連接到外圍設(shè)備上的合適驅(qū)動程序映像文件。
在圖5中,服務(wù)名數(shù)據(jù)庫325可以是和計算設(shè)備105有關(guān)的存儲模塊或組件。服務(wù)器數(shù)據(jù)庫325識別和驅(qū)動程序包及其相關(guān)驅(qū)動程序文件的強名字一致的許多子目錄。因此,服務(wù)名數(shù)據(jù)庫325的各子目錄存儲了和驅(qū)動相關(guān)的參數(shù),如服務(wù)關(guān)鍵字、映像路徑或和安裝在驅(qū)動程序存儲315中的驅(qū)動程序包110或相關(guān)驅(qū)動程序文件相對應(yīng)的其它信息。服務(wù)名數(shù)據(jù)庫僅僅是將操作指向給定外圍設(shè)備的具體驅(qū)動的模塊例子。
服務(wù)名數(shù)據(jù)庫325包括服務(wù)關(guān)鍵字、映像路徑和與圖4中的驅(qū)動程序映像文件相對應(yīng)的其它服務(wù)有關(guān)的信息。子目錄模塊505、510和515各自存儲服務(wù)關(guān)鍵字、映像路徑和其它信息,對應(yīng)于圖4中具有強名字“strongname.1”、“strongname.2”和“strongname.3”的驅(qū)動程序映像文件。
例如,圖5顯示服務(wù)關(guān)鍵字“ServiceName.StrongName.1”505包括從給定強名字“strongname.1”的驅(qū)動程序包提取的服務(wù)名。映像路徑“%DriverStore%\StrongName.1\Foo.Sys”510將外圍設(shè)備程序編碼指向在驅(qū)動程序存儲315中的子目錄%DriverStore%\StrongName.1 405安裝的驅(qū)動程序映像文件foo.sys(見圖4)。所述參數(shù)“其它信息”包括和任意其它服務(wù)名有關(guān)的數(shù)據(jù),它可用于支持以硬連線或無線方式和計算設(shè)備105共同使用的外圍設(shè)備。因此,操作系統(tǒng)可以訪問服務(wù)名數(shù)據(jù)庫325,并通過合適的服務(wù)名參數(shù)指向驅(qū)動程序存儲315中安裝的合適驅(qū)動程序映像文件,將外圍設(shè)備的程序編碼連接到操作系統(tǒng)上。因此,操作系統(tǒng)可以將名為foo.sys的正確驅(qū)動程序映像文件加載到計算設(shè)備105的存儲器中,操作所述外圍設(shè)備。
在所述實施方式中,并行安裝驅(qū)動程序包及其相關(guān)的驅(qū)動程序文件。但是,若另一驅(qū)動程序文件共享相同的名字的話,并不是所有的相關(guān)驅(qū)動程序文件(例如,驅(qū)動程序映像文件)從其各自的驅(qū)動程序存儲位置加載到計算設(shè)備的存儲器中。INF文件的另一實施方式包括命令操作系統(tǒng)的標(biāo)志,從驅(qū)動程序存儲315加載和驅(qū)動程序包相關(guān)的驅(qū)動程序文件。后者對應(yīng)的編碼例子如下所述#if SETUPAPI VER>=0x0600////(AddService)并行安裝服務(wù)
//#define SPSVCINST_SIDE_BY_SIDE(0x00000800)#endif//_SETUPAPI_VER>=0x0600。
標(biāo)志“SPSVCINST_SIDE_BY_SIDE”(非限制性例子)確立了將來自安裝在驅(qū)動程序存儲315中的驅(qū)動程序包的驅(qū)動程序映像文件從驅(qū)動程序存儲315加載到計算設(shè)備105的存儲器上,操作外圍設(shè)備。
圖6說明了通用計算機環(huán)境600,它可以用于執(zhí)行上述并行加載驅(qū)動程序文件的技術(shù)。所述計算機環(huán)境600僅是計算環(huán)境的例子,決不是要對計算機和網(wǎng)絡(luò)結(jié)構(gòu)的應(yīng)用或功能范圍進行限制。計算機環(huán)境600也不應(yīng)解釋為具有和計算機環(huán)境600例子中所述任意一個組件或組件的組合相關(guān)的任意相關(guān)性或要求。
計算機環(huán)境600包括呈計算機602形式的通用計算設(shè)備,它包括計算設(shè)備105。所述計算機602的部件包括但不限于一個或多個處理器或處理單元604、系統(tǒng)存儲器606以及將各種系統(tǒng)組件(包括處理器604)耦合到系統(tǒng)存儲器606上的系統(tǒng)總線608。
系統(tǒng)總線608表示了任意幾種類型的總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或存儲控制器、外圍總線、圖像加速端口和使用任意各種總線結(jié)構(gòu)的處理器或局部總線。通過例子,這種結(jié)構(gòu)可以包括工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)總線、微通道結(jié)構(gòu)(MCA)總線、增強ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局部總線、外圍組件互連(PCI,已知為Mezzanine總線),PCI快速總線、通用串行總線(USB)、安全數(shù)據(jù)(SD)總線或者IEEE1394,即,火線總線)。
計算機602可以包括各種計算機可讀介質(zhì)。這種介質(zhì)可以是任何計算機602可訪問的介質(zhì),包括易失性和非易失性的介質(zhì)、可移動或不可移動的介質(zhì)。
系統(tǒng)存儲器606包括呈易失性存儲器形式的計算機可讀介質(zhì),如隨機存取存儲器(RAM)610、和/或非易失性的存儲器,如只讀存儲器(ROM)612或閃存RAM?;据斎?輸出系統(tǒng)(BIOS)614包括例如在啟動過程中幫助在計算機602中部件之間轉(zhuǎn)送信息的基本例行程序,它們存儲在ROM612或閃存RAM中。RAM610通常包含數(shù)據(jù)和/或程序模塊,它們通過處理單元604直接存取和/或操作。
計算機602也包括其它可移動/不可移動的,易失性/非易失性計算機存儲介質(zhì)。例如,圖6說明了從不可移動的非易失性的磁性介質(zhì)(未顯示)讀取和寫入的硬盤驅(qū)動器616、從可移動、非易失性磁盤620(例如,軟盤)上讀取和寫入的磁盤驅(qū)動器618以及從可移動、非易失性光盤624如CD-ROM、DVD-ROM或其它光學(xué)介質(zhì)上讀取和/或?qū)懭氲墓獗P驅(qū)動器622。硬盤驅(qū)動器616、磁盤驅(qū)動器618和光盤驅(qū)動器622通過一個或多個數(shù)據(jù)介質(zhì)接口625各自連接到系統(tǒng)總線608上?;蛘?,硬盤驅(qū)動器616、磁盤驅(qū)動器618和光盤驅(qū)動器622通過一個或多個接口(未顯示)連接到系統(tǒng)總線608上。
所述磁盤驅(qū)動器及其相關(guān)的計算機可讀介質(zhì)提供了計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其它計算機602的數(shù)據(jù)的非易失性存儲方式。雖然所述例子說明了硬盤驅(qū)動器616、可移動磁盤620和可移動光盤624,但是應(yīng)意識到也可以使用其它類型的計算機可讀介質(zhì)(可存儲計算機可存取的數(shù)據(jù)),如磁帶或其它磁性存儲設(shè)備、閃存卡、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲器、隨機存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)等來執(zhí)行示例計算系統(tǒng)和環(huán)境。
可以將許多程序模塊存儲到硬盤616、磁盤620、光盤624、ROM612和/或RAM610上,例如,操作系統(tǒng)626、一個或多個應(yīng)用程序628、其它程序模塊630和程序數(shù)據(jù)632。所述操作系統(tǒng)626、一個或多個應(yīng)用程序628、其它程序模塊630和程序數(shù)據(jù)632各自(或其一些組合)可以實現(xiàn)支持所述分布式文件系統(tǒng)的全部或部分駐留組件。
用戶可以通過輸入設(shè)備如鍵盤634和指向設(shè)備636(例如,鼠標(biāo))將命令和信息輸入計算機602中。其它輸入設(shè)備638(具體未顯示)包括麥克風(fēng)、操縱桿、游戲墊、圓盤式衛(wèi)星電視天線、串行端口、掃描儀等。這些和其它輸入設(shè)備通過輸入/輸出接口640和處理單元604連接,所述接口640耦合到系統(tǒng)總線608上,也可以通過其它接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。
監(jiān)視器642或其它類型的顯示設(shè)備也可以通過接口如視頻適配器644連接到系統(tǒng)總線608上。除了監(jiān)視器642以外,其它輸入外圍設(shè)備包括組件如揚聲器(未顯示)和打印機646,它們可以通過I/O接口604連接到計算機602上。
通過邏輯連接到一個或多個遠程計算機,如遠程計算設(shè)備648上,計算機602可以在網(wǎng)絡(luò)環(huán)境下操作。例如,遠程計算設(shè)備648可以是PC、便攜式計算機、服務(wù)器、路由器、網(wǎng)絡(luò)計算機、對等設(shè)備或其它普通網(wǎng)絡(luò)節(jié)點等。遠程計算設(shè)備648描述為便攜式計算機,它可以包括本文所述相對于計算機602的許多或所有元件和特征?;蛘?,計算機602也可以在非網(wǎng)絡(luò)環(huán)境中操作。
計算機602和遠程計算機648之間的邏輯連接描述為局域網(wǎng)(LAN)650和廣域網(wǎng)(WAN)652。這種網(wǎng)絡(luò)環(huán)境常用于辦公室、企業(yè)式計算機網(wǎng)絡(luò)、企業(yè)內(nèi)部互聯(lián)網(wǎng)和因特網(wǎng)。
當(dāng)在LAN網(wǎng)絡(luò)環(huán)境中使用時,計算機602通過網(wǎng)絡(luò)接口或適配器654連接到局域網(wǎng)650中。當(dāng)在WAN網(wǎng)絡(luò)環(huán)境中使用時,計算機602通常包括調(diào)制解調(diào)器656或其它在大網(wǎng)絡(luò)652上建立連接的裝置。調(diào)制解調(diào)器656可以置于計算機602的外部或內(nèi)部,通過I/O接口640或其它合適機制連接到系統(tǒng)總線608上。應(yīng)意識到,所述網(wǎng)絡(luò)連接是例子,可以使用其它在計算機602和648之間建立至少一種通信連接的裝置。
在網(wǎng)絡(luò)環(huán)境中,如計算環(huán)境600所示,相對于計算機602或其部分所述的程序模塊可以存儲在遠程存儲器設(shè)備中。例如,遠程應(yīng)用程序658駐留在遠程計算機648的存儲器設(shè)備中。為了進行說明,本文將應(yīng)用或程序和其它可執(zhí)行的程序組件,諸如操作系統(tǒng)描述為離散的程序塊,雖然認為這種程序和組件在各時間下駐留在計算設(shè)備602的不同存儲組件中,并由計算機至少一個數(shù)據(jù)處理器執(zhí)行。
在計算機可執(zhí)行指令的一般背景中說明了各種模塊和技術(shù),如程序模塊,由一個或多個計算機或其它設(shè)備執(zhí)行。通常,程序模塊包括例行程序、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等,用于執(zhí)行具體的任務(wù),或?qū)崿F(xiàn)具體的抽象數(shù)據(jù)類型。通常,可以按照各種實施方式中所希望的,組合或分布程序模塊的功能。
這些模塊和技術(shù)的實現(xiàn)可以存儲在計算機可讀介質(zhì)中,或者在一些計算機可讀介質(zhì)形式之間傳送。計算機可讀介質(zhì)可以是任何可用的介質(zhì),它們可被計算機訪問。例如,計算機可讀介質(zhì)包括“計算機存儲介質(zhì)”和“通信介質(zhì)”,但不限于這些。
“計算機存儲介質(zhì)”包括易失性和非易失性的,可移動和不可移動的介質(zhì),可以用任何存儲信息如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其它數(shù)據(jù)的方法或技術(shù)實現(xiàn)。
計算機存儲介質(zhì)包括(但不限于)RAM、ROM、EEPROM、閃存RAM或其它存儲技術(shù)、CD-ROM、數(shù)字通用盤(DVD)或其它光學(xué)存儲器、磁帶盒、磁帶、磁盤存儲或其它磁存儲設(shè)備,或任何可用于存儲所需的信息并被計算機訪問的其它介質(zhì)。
“通信介質(zhì)”通常包括計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或調(diào)制數(shù)據(jù)信號中的其它數(shù)據(jù),如載波或其它傳送機制。通信介質(zhì)也包括任何信息傳輸介質(zhì)。術(shù)語“調(diào)制數(shù)據(jù)信號”是指以在信號中編碼信息的方式設(shè)置或改變其一個或多個特征的信號。作為非限制性的例子,通信介質(zhì)包括有線介質(zhì),如有線網(wǎng)絡(luò)或直接有線連接,以及無線介質(zhì),如聲波、RF、紅外線和其它無線介質(zhì)。在計算機可讀的介質(zhì)范圍內(nèi)包括上述的任意組合。
雖然已經(jīng)說明了本發(fā)明的實施方式和應(yīng)用,但是應(yīng)理解本發(fā)明并不限制于上述精確的構(gòu)型和資源。在不背離權(quán)利要求所限定的發(fā)明范圍的條件下,可以在本發(fā)明的排列、操作以及方法和系統(tǒng)的細節(jié)上作出對本領(lǐng)域那些技術(shù)人員來說顯而易見的各種修改、改變和變化。
權(quán)利要求
1.一種方法,所述方法包括接收驅(qū)動程序包;產(chǎn)生用于驅(qū)動程序包的強名字;以及根據(jù)強名字為驅(qū)動程序包相關(guān)的驅(qū)動程序文件分配存儲位置。
2.如權(quán)利要求1所述的方法,其特征在于,所述驅(qū)動程序文件包括驅(qū)動程序映像文件,所述方法還包括從存儲位置將驅(qū)動程序映像文件加載到存儲器中。
3.如權(quán)利要求1所述的方法,其特征在于,所述驅(qū)動程序文件包括至少一個驅(qū)動程序映像文件和服務(wù)名中的至少一個。
4.如權(quán)利要求1所述的方法,其特征在于,產(chǎn)生用于驅(qū)動程序包的強名字包括將驅(qū)動程序包有關(guān)的至少一個驅(qū)動程序文件散列。
5.如權(quán)利要求4所述的方法,其特征在于,至少一個驅(qū)動程序文件包含驅(qū)動程序目錄文件、設(shè)置信息文件和驅(qū)動程序映像文件中任意一個。
6.如權(quán)利要求4所述的方法,其特征在于,產(chǎn)生用于驅(qū)動程序包的強名字包括將至少一個驅(qū)動程序文件的散列連接到驅(qū)動程序目錄文件和來自驅(qū)動程序包的公鑰中的至少一個。
7.如權(quán)利要求1所述的方法,其特征在于,按照強名字將存儲位置分配給來自驅(qū)動程序包的驅(qū)動程序文件包括將驅(qū)動程序包有關(guān)的至少一個驅(qū)動程序文件分配到驅(qū)動程序存儲的子目錄中。
8.如權(quán)利要求1所述的方法,其特征在于,按照強名字將存儲位置分配給來自驅(qū)動程序包的數(shù)據(jù)包括將將服務(wù)名參數(shù)分配給服務(wù)名數(shù)據(jù)庫。
9.一種方法,所述方法包括產(chǎn)生相同命名的驅(qū)動程序文件所對應(yīng)的各驅(qū)動程序包的唯一標(biāo)識;以及根據(jù)唯一標(biāo)識將各驅(qū)動程序包相關(guān)的驅(qū)動程序文件分配給公共存儲中的子目錄。
10.如權(quán)利要求9所述的方法,其特征在于,所述驅(qū)動程序文件包括驅(qū)動,以及所述方法還包括從子目錄之一將驅(qū)動程序加載到存儲器中。
11.如權(quán)利要求9所述的方法,其特征在于,所述驅(qū)動程序文件包括驅(qū)動程序映像文件和服務(wù)名中的至少一個。
12.如權(quán)利要求9所述的方法,其特征在于,產(chǎn)生相同命名的驅(qū)動程序文件所對應(yīng)的各驅(qū)動程序包的唯一標(biāo)識包括將驅(qū)動程序包有關(guān)的至少一個驅(qū)動程序文件散列。
13.如權(quán)利要求12所述的方法,其特征在于,產(chǎn)生相同命名的驅(qū)動程序文件所對應(yīng)的各驅(qū)動程序包的唯一標(biāo)識包括將供應(yīng)商的數(shù)字簽名添加到所述散列上。
14.如權(quán)利要求9所述的方法,其特征在于,將來自各驅(qū)動程序包的驅(qū)動程序文件分配在公共存儲的子目錄中避免了重寫之前版本的相同命名的驅(qū)動程序文件。
15.如權(quán)利要求11所述的方法,其特征在于,所述分配包括根據(jù)各驅(qū)動程序映像文件對應(yīng)的驅(qū)動程序包所用的唯一標(biāo)識將來自各驅(qū)動程序包的驅(qū)動程序文件分配在驅(qū)動程序存儲的子目錄中。
16.如權(quán)利要求11所述的方法,其特征在于,所述分配包括將來自各驅(qū)動程序包的服務(wù)名分配到服務(wù)名數(shù)據(jù)庫中,所述數(shù)據(jù)庫包括服務(wù)關(guān)鍵字和對應(yīng)驅(qū)動程序文件之一的映像路徑。
17.一種具有由一個或多個處理器執(zhí)行的一條或多條指令的計算機可讀介質(zhì),所述一條或多條指令使一個或多個處理器產(chǎn)生驅(qū)動程序包的強名字,根據(jù)強名字為驅(qū)動程序包相關(guān)的驅(qū)動程序文件分配存儲位置。
18.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述驅(qū)動程序文件包括驅(qū)動程序映像文件,以及所述一條或多條指令使一個或多個處理器還從存儲位置將驅(qū)動程序映像文件加載到存儲器中。
19.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述強名字是驅(qū)動程序包有關(guān)的至少一個驅(qū)動程序文件的散列。
20.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述強名字結(jié)合了驅(qū)動程序目錄文件和對應(yīng)于驅(qū)動程序包供應(yīng)商的公鑰中的至少一個。
21.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述驅(qū)動程序文件是驅(qū)動程序映像文件和輔助安裝程序中的至少一個,且所述存儲位置是驅(qū)動程序存儲子目錄。
22.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述驅(qū)動程序文件是服務(wù)名,且存儲位置是存儲相應(yīng)服務(wù)名和映像路徑的數(shù)據(jù)庫。
23.如權(quán)利要求17所述的計算機可讀介質(zhì),其特征在于,所述使一個或多個處理器為驅(qū)動程序包有關(guān)的驅(qū)動程序文件分配存儲位置的一條或多條指令制止了分配到之前分配的存儲位置。
24.一種設(shè)備,它包括為驅(qū)動程序包產(chǎn)生強名字的安裝程序;以及用于根據(jù)強名字安裝驅(qū)動程序包相關(guān)的文件的存儲器。
25.如權(quán)利要求24所述的設(shè)備,其特征在于,和驅(qū)動程序包有關(guān)的文件包括驅(qū)動程序,以及所述設(shè)備還包括將驅(qū)動程序加載到存儲器中的加載程序。
26.如權(quán)利要求24所述的設(shè)備,其特征在于,所述安裝程序產(chǎn)生強名字,作為驅(qū)動程序包有關(guān)的至少一個驅(qū)動程序文件的散列函數(shù)。
27.如權(quán)利要求24所述的設(shè)備,其特征在于,所述安裝程序通過加入和驅(qū)動程序包有關(guān)的數(shù)字簽名和公鑰中的至少一個來產(chǎn)生強名字。
28.如權(quán)利要求24所述的設(shè)備,其特征在于,所述存儲器包括對應(yīng)于強名字的子目錄。
29.如權(quán)利要求28所述的設(shè)備,其特征在于,所述存儲器是驅(qū)動程序存儲,且所述文件包括驅(qū)動程序映像文件和輔助安裝程序中的至少一個。
30.如權(quán)利要求28所述的設(shè)備,其特征在于,所述存儲器是數(shù)據(jù)庫,且所述文件包括具有相應(yīng)服務(wù)關(guān)鍵字和映像路徑的服務(wù)名。
31.一種設(shè)備,它包括用于產(chǎn)生驅(qū)動程序包用強名字的裝置,以及根據(jù)強名字存儲驅(qū)動程序包有關(guān)的文件的裝置。
32.如權(quán)利要求31所述的設(shè)備,其特征在于,和驅(qū)動程序包有關(guān)的文件包括驅(qū)動程序映像文件,以及所述設(shè)備還包括將驅(qū)動程序映像文件加載到存儲器中的裝置。
33.如權(quán)利要求31所述的設(shè)備,其特征在于,所述產(chǎn)生裝置將來白驅(qū)動程序包的至少一個驅(qū)動程序文件散列。
34.如權(quán)利要求31所述的設(shè)備,其特征在于,所述產(chǎn)生裝置將驅(qū)動程序包有關(guān)的數(shù)字簽名加入強名字中。
35.如權(quán)利要求31所述的設(shè)備,其特征在于,所述存儲裝置具有對應(yīng)強名字的子目錄。
36.如權(quán)利要求34所述的設(shè)備,其特征在于,所述存儲裝置具有存儲驅(qū)動程序包、驅(qū)動程序映像文件和輔助安裝程序中至少一種的子目錄。
37.如權(quán)利要求34所述的設(shè)備,其特征在于,所述存儲裝置存儲具有對應(yīng)服務(wù)關(guān)鍵字和映像路徑的服務(wù)名。
38.如權(quán)利要求34所述的設(shè)備,其特征在于,所述存儲裝置存儲從操作系統(tǒng)到具體設(shè)備的驅(qū)動程序文件的指針。
全文摘要
避免之后版本或其它相同命名的驅(qū)動程序重寫驅(qū)動程序的方法和系統(tǒng),它包括為各合格的驅(qū)動程序包產(chǎn)生唯一標(biāo)識。然后,根據(jù)唯一標(biāo)識,將來自驅(qū)動程序包的驅(qū)動程序文件或整個驅(qū)動程序包本身安裝到公共存儲器中的子目錄位置。這樣,就可以并行安裝和加載具有相同名字的多個驅(qū)動程序包和驅(qū)動程序文件。
文檔編號G06F9/445GK1667574SQ20051005319
公開日2005年9月14日 申請日期2005年3月2日 優(yōu)先權(quán)日2004年3月2日
發(fā)明者J·G·卡瓦拉瑞斯, J·亨特, J·T·科布, L·D·麥克米歇爾, S·喬德 申請人:微軟公司