欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在計(jì)算機(jī)運(yùn)行中交換設(shè)備的裝置與方法

文檔序號(hào):6643906閱讀:191來源:國(guó)知局
專利名稱:在計(jì)算機(jī)運(yùn)行中交換設(shè)備的裝置與方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及與計(jì)算機(jī)互聯(lián)的設(shè)備的領(lǐng)域,而更具體地,涉及在計(jì)算機(jī)操作中交換或改變與計(jì)算機(jī)互聯(lián)的設(shè)備。
背景技術(shù)
完全“即插即用”操作系統(tǒng)的驅(qū)動(dòng)器與設(shè)備能以極少到無須用戶的主動(dòng)介入來處理設(shè)備的增加與消除。結(jié)果完全“即插即用”系統(tǒng)允許相對(duì)不老練的用戶容易與平順地安裝與交換設(shè)備,并且用戶無須理解軟件或具有編程能力。
在各操作系統(tǒng)內(nèi),存在著一系列用于發(fā)現(xiàn)與初始化計(jì)算機(jī)中所包括的設(shè)備以便它們能正確地與該計(jì)算機(jī)的所有資源連通的驅(qū)動(dòng)器。對(duì)于諸如Windows 95或98(微軟公司產(chǎn)品)等操作系統(tǒng),當(dāng)在操作系統(tǒng)的安裝或引導(dǎo)期間起動(dòng)驅(qū)動(dòng)器時(shí),驅(qū)動(dòng)器枚舉或識(shí)別連接在計(jì)算機(jī)上的設(shè)備。然而對(duì)于一些設(shè)備,它們的相關(guān)設(shè)備驅(qū)動(dòng)器是不能完全“即插即用”的。這些驅(qū)動(dòng)器的實(shí)例包含用于硬盤驅(qū)動(dòng)的IDE驅(qū)動(dòng)器及用于軟盤驅(qū)動(dòng)的軟盤驅(qū)動(dòng)器。因?yàn)檫@些驅(qū)動(dòng)器不能完全“即插即用”,這些設(shè)備的驅(qū)動(dòng)器在運(yùn)行時(shí)間期間不能枚舉設(shè)備。
由于這一限制,在系統(tǒng)運(yùn)行(熱交換hot swapping)或睡眠狀態(tài)(溫交換warm swapping)時(shí),這些操作系統(tǒng)不能支持諸如硬盤驅(qū)動(dòng)器、CD-ROM驅(qū)動(dòng)器及軟盤驅(qū)動(dòng)器等不具有完全“即插即用”驅(qū)動(dòng)器的設(shè)備的交換。而是,用這些設(shè)備之一來交換另一個(gè)時(shí)要求用戶重新起動(dòng)或重新引導(dǎo)計(jì)算機(jī)。這一要求是對(duì)用戶既費(fèi)時(shí)又費(fèi)事的。
發(fā)明概述簡(jiǎn)要的,本發(fā)明包括枚舉計(jì)算機(jī)系統(tǒng)中存在的第一設(shè)備而使計(jì)算機(jī)系統(tǒng)能識(shí)別該第一設(shè)備的方法,該計(jì)算機(jī)系統(tǒng)具有存儲(chǔ)器及使用存儲(chǔ)在該存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)來建立計(jì)算機(jī)系統(tǒng)的工作配置的操作系統(tǒng),該數(shù)據(jù)結(jié)構(gòu)具有對(duì)應(yīng)于計(jì)算機(jī)系統(tǒng)中存在的設(shè)備的一或多個(gè)設(shè)備節(jié)點(diǎn),該方法包括下述步驟在計(jì)算機(jī)系統(tǒng)操作時(shí)向操作系統(tǒng)提供第一設(shè)備已插入計(jì)算機(jī)系統(tǒng)中的指示;響應(yīng)該指示為控制該第一設(shè)備枚舉一控制器;響應(yīng)第一設(shè)備控制器的枚舉,初始化與該第一設(shè)備控制器關(guān)聯(lián)的驅(qū)動(dòng)器;用初始化的驅(qū)動(dòng)器定位與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器(enumerator);以及用定位的枚舉器枚舉該第一設(shè)備,其中在初始化時(shí)與第一設(shè)備控制器關(guān)聯(lián)的驅(qū)動(dòng)器只能定位與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器。
在本方法的另一方面中,在連接第一設(shè)備之前,該方法還包括下述步驟判定當(dāng)前是否正在訪問計(jì)算機(jī)系統(tǒng)中的第二設(shè)備;從數(shù)據(jù)結(jié)構(gòu)中清除對(duì)應(yīng)于第二設(shè)備的設(shè)備節(jié)點(diǎn)及對(duì)應(yīng)于用于控制該第二設(shè)備的控制器的設(shè)備節(jié)點(diǎn);將在第二設(shè)備與第二設(shè)備控制器之間傳輸?shù)娜魏螖?shù)據(jù)信號(hào)從第二設(shè)備控制器到第二設(shè)備的傳輸中隔離;以及關(guān)閉第二設(shè)備的供電。
在本方法的又另一方面中,清除對(duì)應(yīng)于第二設(shè)備及第二設(shè)備控制器的設(shè)備節(jié)點(diǎn)的步驟包含卸載與第二設(shè)備及第二設(shè)備控制器關(guān)聯(lián)的所有驅(qū)動(dòng)器的子步驟。
在本發(fā)明的又一方面中,計(jì)算機(jī)程序產(chǎn)品包括具有實(shí)現(xiàn)在其中的用于枚舉計(jì)算機(jī)系統(tǒng)中存在的第一設(shè)備而使計(jì)算機(jī)系統(tǒng)能識(shí)別該第一設(shè)備的計(jì)算機(jī)可讀的程序代碼模塊的計(jì)算機(jī)可用的介質(zhì),該計(jì)算機(jī)系統(tǒng)具有存儲(chǔ)器及使用存儲(chǔ)在該存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)來建立該計(jì)算機(jī)系統(tǒng)的工作配置的操作系統(tǒng),該數(shù)據(jù)結(jié)構(gòu)具有對(duì)應(yīng)于存在在計(jì)算機(jī)系統(tǒng)中的設(shè)備的一或多個(gè)設(shè)備節(jié)點(diǎn),該計(jì)算機(jī)程序產(chǎn)品包含第一枚舉模塊,用于枚舉在計(jì)算機(jī)系統(tǒng)操作中將第一設(shè)備插入計(jì)算機(jī)系統(tǒng)之后枚舉用于控制第一設(shè)備的控制器;初始化模塊,用于響應(yīng)第一設(shè)備控制器的枚舉初始化與第一設(shè)備控制器關(guān)聯(lián)的驅(qū)動(dòng)器;定位器模塊,用于用初始化的驅(qū)動(dòng)器識(shí)別與第一設(shè)備控制器關(guān)聯(lián)的枚舉器;以及第二枚舉模塊,用于利用與第一設(shè)備控制器關(guān)聯(lián)的定位的枚舉器枚舉第一設(shè)備,其中與第一設(shè)備控制器關(guān)聯(lián)的驅(qū)動(dòng)器在初始化時(shí)只能定位與第一設(shè)備控制器關(guān)聯(lián)的枚舉器。


圖1為符合本發(fā)明的計(jì)算機(jī)系統(tǒng)的框圖。
圖2a與2b為符合本發(fā)明的交換進(jìn)程的框圖流程圖。
圖3為符合本發(fā)明的枚舉進(jìn)程的框圖流程圖。
圖4為符合本發(fā)明的設(shè)備交換系統(tǒng)的框圖。
發(fā)明詳述下面在特定實(shí)施例的上下文中描述本發(fā)明,但并不旨在這樣限定本發(fā)明。
圖1示出如何將符合本發(fā)明的計(jì)算機(jī)系統(tǒng)10的部件安裝在一起。如圖1中所示,計(jì)算機(jī)系統(tǒng)10包含配置管理器20、多個(gè)設(shè)備或資源30、登記處(registry)40、設(shè)備節(jié)點(diǎn)(devnode)樹50、及設(shè)備驅(qū)動(dòng)器存儲(chǔ)器60。見下面對(duì)上文中元件的定義。最好在即插即用框架中實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)10。雖然圖1中示示出,計(jì)算機(jī)系統(tǒng)10包含其它元件,諸如處理器、存儲(chǔ)器、監(jiān)視器、及象鍵盤或指點(diǎn)設(shè)備等輸入設(shè)備。如本技術(shù)中已知的,其它元件也可包含在計(jì)算機(jī)系統(tǒng)10中。
下面是計(jì)算機(jī)系統(tǒng)10中的這些元件的定義??梢宰鳛樘摂M設(shè)備驅(qū)動(dòng)器(VxD)實(shí)現(xiàn)的“配置管理器”20是即插即用框架的中心部件。VxD是專門為Windows 95與98格式化的驅(qū)動(dòng)器。包含DLL與DOS TSR格式在內(nèi)的其它驅(qū)動(dòng)器也是可能有的。配置管理器20指導(dǎo)計(jì)算機(jī)系統(tǒng)10中的所有配置管理。為了指導(dǎo)配置管理,它能使用三個(gè)數(shù)據(jù)存儲(chǔ)器注冊(cè)表40、設(shè)備節(jié)點(diǎn)樹50及設(shè)備驅(qū)動(dòng)器存儲(chǔ)器60,并能用四種軟件部件工作枚舉器、仲裁器、設(shè)備加載器及設(shè)備驅(qū)動(dòng)器。
“枚舉器”確定計(jì)算機(jī)系統(tǒng)10中當(dāng)前安裝了哪些硬件設(shè)備及它們需要哪些資源。從而,枚舉便是發(fā)現(xiàn)或識(shí)別設(shè)備。如同配置管理器20,枚舉器也能實(shí)現(xiàn)為VxD。識(shí)別出各設(shè)備之后,枚舉器便建立“設(shè)備節(jié)點(diǎn)”。設(shè)備節(jié)點(diǎn)是包含關(guān)于識(shí)別的設(shè)備的基本信息的數(shù)據(jù)結(jié)構(gòu)。設(shè)備節(jié)點(diǎn)能包含指示可能的配置、當(dāng)前配置、狀態(tài)信息、及該設(shè)備的驅(qū)動(dòng)器的字段。
枚舉器識(shí)別出新設(shè)備之后,稱作“設(shè)備安裝器”的模塊在“注冊(cè)表”40中建立一新的項(xiàng)。注冊(cè)表40存儲(chǔ)項(xiàng)的分層樹,它們包含曾經(jīng)安裝在計(jì)算機(jī)系統(tǒng)10中的各設(shè)備的關(guān)鍵字與值。各項(xiàng)的關(guān)鍵字為各自的設(shè)備的標(biāo)識(shí),而各項(xiàng)中的值包含關(guān)于設(shè)備的類型的信息及其說明,在枚舉時(shí)應(yīng)為特定設(shè)備加載哪些驅(qū)動(dòng)器、驅(qū)動(dòng)器修正號(hào)、制造商、及設(shè)備的潛在邏輯配置。值的信息能來自設(shè)備零售商提供的設(shè)備信息文件或來自設(shè)備本身。“設(shè)備信息文件”包含關(guān)于已知設(shè)備及它們的配置的信息。為了為剛安裝在系統(tǒng)中的設(shè)備建立設(shè)備節(jié)點(diǎn),枚舉器能利用對(duì)應(yīng)于注冊(cè)表40中的設(shè)備的項(xiàng)的信息。
將枚舉器建立的各設(shè)備節(jié)點(diǎn)放置在“設(shè)備樹”50中。設(shè)備樹50為描述計(jì)算機(jī)系統(tǒng)10中存在的所有硬件的設(shè)備節(jié)點(diǎn)的分層樹。設(shè)備樹中的層次構(gòu)成為使得將設(shè)備節(jié)點(diǎn)放置在控制這些設(shè)備節(jié)點(diǎn)的設(shè)備的設(shè)備節(jié)點(diǎn)的下方層次中,借此提供控制的指示。例如,將受總線控制的設(shè)備的設(shè)備節(jié)點(diǎn)放置在總線的設(shè)備節(jié)點(diǎn)下方。諸如總線的設(shè)備節(jié)點(diǎn)等設(shè)備節(jié)點(diǎn)稱作父節(jié)點(diǎn),而諸如連接在總線上的設(shè)備等受父節(jié)點(diǎn)控制的設(shè)備節(jié)點(diǎn)則為子節(jié)點(diǎn)。
枚舉器識(shí)別出設(shè)備并建立了其設(shè)備節(jié)點(diǎn)之后,配置管理器20調(diào)用與該設(shè)備關(guān)聯(lián)的“設(shè)備加載器”。能作為VxD實(shí)現(xiàn)的設(shè)備加載器加載與管理給定設(shè)備節(jié)點(diǎn)的設(shè)備驅(qū)動(dòng)器及枚舉器。在由好幾個(gè)層的設(shè)備驅(qū)動(dòng)器管理設(shè)備時(shí),通常使用設(shè)備加載器。設(shè)備加載器協(xié)調(diào)好幾個(gè)層的工作并進(jìn)行適用于所有設(shè)備驅(qū)動(dòng)器的通用配置任務(wù)。
“設(shè)備驅(qū)動(dòng)器”控制與管理設(shè)備硬件。設(shè)備驅(qū)動(dòng)器負(fù)責(zé)識(shí)別給定設(shè)備的特定資源需求并設(shè)定該設(shè)備以配置管理器20分配的配置操作。能將已安裝在計(jì)算機(jī)系統(tǒng)10中的所有設(shè)備30的設(shè)備驅(qū)動(dòng)器存儲(chǔ)在設(shè)備驅(qū)動(dòng)器存儲(chǔ)器60中。
最后,也能作為VxD實(shí)現(xiàn)的“仲裁器”是由配置管理器20用來解決設(shè)備30之間的資源沖突的。仲裁器審閱安裝在計(jì)算機(jī)系統(tǒng)10中的設(shè)備30的需求表并找出資源的最佳分配來滿足所有設(shè)備。仲裁器為計(jì)算機(jī)系統(tǒng)10中的若干資源作出無沖突分配,其中包含輸入/輸出(I/O)地址、存儲(chǔ)器地址、中斷請(qǐng)求(IRQ)、及直接存儲(chǔ)器存取(DMA)通道。
應(yīng)指出仲裁器、枚舉器、注冊(cè)表、設(shè)備節(jié)點(diǎn)樹、配置管理器及設(shè)備加載器是包含微軟公司在Windows 95與Windows 98中提供的在內(nèi)的各種軟件零售商所提供的軟件的標(biāo)準(zhǔn)項(xiàng)目。
下面是計(jì)算機(jī)系統(tǒng)10中的配置管理器20所使用的數(shù)據(jù)存儲(chǔ)器與軟件部件的更詳細(xì)的說明。建立計(jì)算機(jī)系統(tǒng)的工作配置的積木塊是設(shè)備節(jié)點(diǎn)。如上所述,設(shè)備節(jié)點(diǎn)是物理上存在在系統(tǒng)上的設(shè)備30的基本存儲(chǔ)器內(nèi)表示。它是包含關(guān)于設(shè)備及其驅(qū)動(dòng)器的信息的數(shù)據(jù)結(jié)構(gòu)。存儲(chǔ)在設(shè)備節(jié)點(diǎn)中的信息包含設(shè)備標(biāo)識(shí)(ID)、其當(dāng)前分配的配置、可能的邏輯配置、狀態(tài)信息、及設(shè)備驅(qū)動(dòng)器入口點(diǎn)。如上所述,設(shè)備節(jié)點(diǎn)是由枚舉器建立的。響應(yīng)設(shè)備節(jié)點(diǎn)的建立,配置管理器20導(dǎo)致適當(dāng)驅(qū)動(dòng)器的加載。
用在設(shè)備節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)中的“設(shè)備ID”為對(duì)計(jì)算機(jī)系統(tǒng)10中可包含的各設(shè)備獨(dú)一無二的ASCII串。該串通常標(biāo)識(shí)找到該設(shè)備的部件,但由于它也用作注冊(cè)表40中的關(guān)鍵字,它必須是在計(jì)算機(jī)系統(tǒng)10內(nèi)獨(dú)一無二的,以便能可靠地檢索到關(guān)于該設(shè)備的信息。這一串能用來交叉參照關(guān)于存儲(chǔ)在注冊(cè)表40中的設(shè)備的數(shù)據(jù)。
下面是設(shè)備ID的實(shí)例Root\*PNP 0000\0;ISAPNP\ADP1522-DEV0000\E8124123;BIOS\*PNP0100\0;及PCMCIA\MEGAHERTZ-XJ124FM-936B。如這些實(shí)例中所見,ID的第一部分標(biāo)識(shí)找到該設(shè)備的部件。例如,ISAPNP對(duì)應(yīng)于即插即用的設(shè)備的ISA總線。設(shè)備ID的這一命名方案為總線特定的命名方案。
如上面所討論的,枚舉器為識(shí)別安裝的硬件與建立設(shè)備節(jié)點(diǎn)的部件。在計(jì)算機(jī)系統(tǒng)10中,各總線包含由配置管理器20調(diào)用來定位在其各自的總線上的設(shè)備的枚舉器。這些總線包含PCI、EISA、PCMCIA、SCSI等。這些總線上的設(shè)備通常配置成完全支持即插即用的。也能將ISA總線配置成支持即插即用的,并稱作ISAPNP總線。在總線上識(shí)別出的設(shè)備的設(shè)備節(jié)點(diǎn)可具有它們自己的枚舉器而在設(shè)備節(jié)點(diǎn)樹50上建立子節(jié)點(diǎn)。這些子設(shè)備節(jié)點(diǎn)的任何一個(gè)能具有在設(shè)備節(jié)點(diǎn)樹50上建立該設(shè)備節(jié)點(diǎn)的進(jìn)一步子節(jié)點(diǎn)的枚舉器。
為了識(shí)別在不能即插即用的標(biāo)準(zhǔn)ISA總線上配置的設(shè)備(有時(shí)稱作傳統(tǒng)設(shè)備)配置管理器20能使用檢測(cè)模塊而不是枚舉器。檢測(cè)模塊能使用識(shí)別傳統(tǒng)設(shè)備的方法,諸如檢驗(yàn)硬編碼的I/O位置的預(yù)期值來檢測(cè)諸如鍵盤或中斷控制器等設(shè)備。
枚舉器負(fù)責(zé)為它們定位的設(shè)備建立設(shè)備ID。如上所述,各標(biāo)識(shí)符應(yīng)是獨(dú)一無二的并在每一次系統(tǒng)引導(dǎo)時(shí)始終如一。應(yīng)將該串構(gòu)成為使它能用于標(biāo)識(shí)注冊(cè)表40中獨(dú)一無二的項(xiàng)。該串通常以枚舉器的名稱開始,后面跟隨一“\”。例如,ISA即插即用枚舉器能將所有設(shè)備標(biāo)識(shí)符起始為“ISAPNP\”。
枚舉器構(gòu)筑設(shè)備節(jié)點(diǎn)樹50并可參預(yù)在與各自的枚舉器關(guān)聯(lián)的總線上配置設(shè)備30。在大多數(shù)操作系統(tǒng)中,每一次計(jì)算機(jī)起動(dòng)時(shí)發(fā)生枚舉進(jìn)程。在枚舉進(jìn)程結(jié)束時(shí),設(shè)備節(jié)點(diǎn)樹50包含關(guān)于可利用的系統(tǒng)資源、所需的設(shè)備驅(qū)動(dòng)器、及這些資源的其它要求的信息。
設(shè)備節(jié)點(diǎn)樹50為表示計(jì)算機(jī)系統(tǒng)10中的硬件的結(jié)構(gòu)的設(shè)備節(jié)點(diǎn)的分層的樹。從而,設(shè)備節(jié)點(diǎn)是在設(shè)備節(jié)點(diǎn)樹50的根上或者是父設(shè)備節(jié)點(diǎn)的子節(jié)點(diǎn)。一個(gè)設(shè)備節(jié)點(diǎn)能具有多個(gè)子設(shè)備節(jié)點(diǎn)。設(shè)備節(jié)點(diǎn)的父節(jié)點(diǎn)的其它子節(jié)點(diǎn)稱作兄弟。每一次起動(dòng)計(jì)算機(jī)時(shí)構(gòu)造設(shè)備節(jié)點(diǎn)樹50。此外,它可以是完全動(dòng)態(tài)的,如果在計(jì)算機(jī)系統(tǒng)10中消除或增加設(shè)備30,甚至在計(jì)算機(jī)正在運(yùn)行時(shí)改變。
設(shè)備節(jié)點(diǎn)樹50為計(jì)算機(jī)系統(tǒng)10提供許多功能。首先,它描述計(jì)算機(jī)系統(tǒng)10中存在的所有硬件。此外,設(shè)備節(jié)點(diǎn)樹50為枚舉器提供配置它們的子硬件的機(jī)制,允許獨(dú)立于總線的驅(qū)動(dòng)器。驅(qū)動(dòng)器能是獨(dú)立于總線的,因?yàn)楦骺偩€的枚舉器能獨(dú)立于其它總線識(shí)別與配置受該總線控制的設(shè)備。通常,驅(qū)動(dòng)器并不知道或關(guān)心它們?cè)跇鋬?nèi)的精確位置。驅(qū)動(dòng)器通常只關(guān)心它們自己的硬件設(shè)備或設(shè)備節(jié)點(diǎn),而不注意樹中它們上面或下面的層。
設(shè)備節(jié)點(diǎn)樹50包含計(jì)算機(jī)系統(tǒng)10中所有設(shè)備30的配置信息,并且配置管理器20用它來跟蹤與各設(shè)備關(guān)聯(lián)的資源,諸如中斷請(qǐng)求(IRQ)、輸入/輸出(I/O)端口及甚至聚SCSI標(biāo)識(shí)符等非共享資源。設(shè)備節(jié)點(diǎn)樹50描述存在的設(shè)備與資源、資源需求、資源依存性、及當(dāng)前資源分配。
表1示出說明某些典型設(shè)備的設(shè)備ID及可期望在層次中何處能找到它們的設(shè)備節(jié)點(diǎn)樹的實(shí)例。未示出設(shè)備ID以外的各節(jié)點(diǎn)的實(shí)際內(nèi)容。
表1設(shè)備節(jié)點(diǎn)樹實(shí)例Htree\Root\0-設(shè)備節(jié)點(diǎn)樹的根節(jié)點(diǎn)\Root\*PNP0801\0-老式聲音清除器兼容的聲音設(shè)備\Root\*PNPOC00\0-即插即用BIOS\BIOS\*PNP0901\0-超級(jí)VGA兼容的顯示器適配器\BIOS\*PNP0000\0-AT中斷控制器\BIOS\*PNP0100\0-AT定時(shí)器\BIOS\*PNP0200\0-AT DMA控制器\BIOS\*PNP0301\0-PS/2形式鍵盤控制器\BIOS\*PNP0400\0-標(biāo)準(zhǔn)LPT打印機(jī)端口\BIOS\*PNP0400\1-標(biāo)準(zhǔn)LPT打印機(jī)端口\BIOS\*PNP0501\0-16550通信端口\BIOS\*PNP0501\1-16550通信端口\BIOS\*PNP0700\0-PC標(biāo)準(zhǔn)軟盤控制器\BIOS\*PNP0800\0-AT形式揚(yáng)聲器聲音\BIOS\*PNP0901\0-SVGA兼容的顯示器適配器\BIOS\*PNP0B00\0-AT實(shí)時(shí)時(shí)鐘\BIOS\*PNP0C01\0-系統(tǒng)存儲(chǔ)器\BIOS\*PNP0E00\0-PCMCLA控制器\PCMCIA\3C08SF\0-網(wǎng)絡(luò)適配器如表1中所示,根節(jié)點(diǎn)是聲音清除器與即插即用BIOS的父節(jié)點(diǎn)。即插即用BIOS又具有一系列子節(jié)點(diǎn)。即插即用BIOS的枚舉器識(shí)別這些設(shè)備的每一個(gè)并為各設(shè)備建立設(shè)備節(jié)點(diǎn),其中各設(shè)備節(jié)點(diǎn)為即插即用BIOS設(shè)備節(jié)點(diǎn)的子節(jié)點(diǎn)。如上面討論的,這一分層結(jié)構(gòu)示出這些子節(jié)點(diǎn)的每一個(gè)是受即插即用BIOS控制的。類似地,PCMCIA控制器的枚舉器識(shí)別受該P(yáng)CMCIA控制器控制的網(wǎng)絡(luò)適配器,并為該網(wǎng)絡(luò)適配器建立一設(shè)備節(jié)點(diǎn)作為PCMCIA控制器的子節(jié)點(diǎn)。
計(jì)算機(jī)系統(tǒng)10還使用與擴(kuò)充注冊(cè)表40及各種設(shè)備信息文件(帶.INF文件名擴(kuò)展)。注冊(cè)表40存儲(chǔ)曾經(jīng)安裝在特定機(jī)器上的所有設(shè)備30,其中包含諸如傳統(tǒng)設(shè)備等不允許完全即插即用的設(shè)備。注冊(cè)表40還存儲(chǔ)已由枚舉器定位的即插即用設(shè)備的有關(guān)信息、設(shè)備特定的狀態(tài)信息、設(shè)備對(duì)設(shè)備驅(qū)動(dòng)器的連接、以及關(guān)于最后知道的配置的數(shù)據(jù)-用于加速資源分配。
上面提到的設(shè)備信息文件包含關(guān)于已知設(shè)備及它們的配置的信息。計(jì)算機(jī)系統(tǒng)10能提供某些類別信息文件(例如SCSI.INF與MODEM.INF);其它是由設(shè)備制造商提供的。當(dāng)枚舉器檢測(cè)到或枚舉新設(shè)備時(shí),在所有已知的.INF文件中搜索與該設(shè)備ID匹配的項(xiàng)。在找到匹配時(shí),便拷貝適當(dāng)?shù)奈募⑺璧臄?shù)據(jù)拷貝到注冊(cè)表40中新建立的注冊(cè)表?xiàng)l目中。
注冊(cè)表40是通過微軟Win 32API組在Windows 95、Windows 98與.Windows NT中訪問的全系統(tǒng)數(shù)據(jù)庫(kù)。此外,Windows 95與Windows 98提供對(duì)注冊(cè)表40的實(shí)方式訪問以便在切換到保護(hù)方式之前在引導(dǎo)期間能使用它。如前面指出的,注冊(cè)表40存儲(chǔ)類似于Windows3.1-格式.INI文件中的項(xiàng)的“關(guān)鍵字”與“值”的分層樹(除外Windows3.1.INI文件具有與注冊(cè)表的樹結(jié)構(gòu)相反的平坦結(jié)構(gòu))。在枚舉特定設(shè)備時(shí)操作系統(tǒng)利用注冊(cè)表40來存儲(chǔ)關(guān)于應(yīng)加載哪些驅(qū)動(dòng)器的信息、以及諸如驅(qū)動(dòng)器修正號(hào)、制造商、及該設(shè)備的潛在邏輯配置等信息。下面的表II示出示范性注冊(cè)表?xiàng)l目。
表II注冊(cè)表?xiàng)l目實(shí)例\HKEY_LOCAL_MACHINE\ENUM\ROOT\*PNP0000\0000DrvDesc=”可編程中斷控制器”類別=”系統(tǒng)”BootConfig=(I/O端口20h,21h,A0h,及A1h-二進(jìn)制資源數(shù)據(jù))驅(qū)動(dòng)器=”系統(tǒng)\0000”硬件ID=”*PNP0000”InfName=”MACHINE.INF”Mfg=”微軟”NoSetupUI=”1”ENUM\BIOS\*PNP0000\0000\LogConfig0=(二進(jìn)制資源數(shù)據(jù),在這一情況中作為上面的BootConfig)SYSTEM\CurrentControlSet\Services\Class\System\0000DriverDesc=”可編程中斷控制器”DevLoader\”*VPICD”EnumPropPages=”Sysclass.dll,EnumPropPages”表II中的注冊(cè)表?xiàng)l目示出可為特定設(shè)備包含在注冊(cè)表40中的信息的實(shí)例。在這一實(shí)例中,設(shè)備為可編程的中斷控制器。這一設(shè)備的信息包含可能的引導(dǎo)配置、與該設(shè)備關(guān)聯(lián)的設(shè)備驅(qū)動(dòng)器、獨(dú)一無二的ID、該設(shè)備的信息文件名、及用于加載該設(shè)備的設(shè)備驅(qū)動(dòng)器的設(shè)備加載器。
大多數(shù)即插即用注冊(cè)表?xiàng)l目存儲(chǔ)在注冊(cè)表40的ENUM樹中,即\HKEY_LOCAL_MACHINE\ENUM。在ENUM下,各枚舉器具有其本身的分支,它曾經(jīng)枚舉與建立的各設(shè)備具有在該枚舉器下面的一個(gè)子節(jié)點(diǎn)。存在著一個(gè)稱作ENUM\ROOT的特殊枚舉器分支,它包含諸如傳統(tǒng)設(shè)備等非即插即用的硬件的注冊(cè)表?xiàng)l目,對(duì)于它們沒有枚舉器但能用上面討論的其它手段檢測(cè)到。例如,在安裝操作系統(tǒng)時(shí),根據(jù)諸如MSDET.INF信息文件等信息文件中的表加載檢測(cè)模塊。當(dāng)檢測(cè)到不完全允許即插即用的設(shè)備時(shí),便從注冊(cè)表40中的適當(dāng)設(shè)備信息文件中檢索關(guān)于它的信息。然后將這一信息存儲(chǔ)在注冊(cè)表40中建立在HKEY_LOCAL_MACHINE\ENUM\Root分支下的新節(jié)點(diǎn)中。
當(dāng)枚舉器或檢測(cè)模塊檢測(cè)到在注冊(cè)表40中沒有它的注冊(cè)表?xiàng)l目的設(shè)備時(shí),設(shè)備安裝器在注冊(cè)表40中建立新項(xiàng)。大多數(shù)信息是由設(shè)置有該設(shè)備的.INF文件或直接由該設(shè)備的建立模塊提供的。注冊(cè)表40還存儲(chǔ)配置特定的信息,它是與是否與有能力的便攜式計(jì)算機(jī)對(duì)接或脫離對(duì)接有關(guān)的信息,以及用戶特定的信息。
設(shè)備節(jié)點(diǎn)樹50與注冊(cè)表40之間的區(qū)別是重要的。在完全即插即用的系統(tǒng)中,設(shè)備節(jié)點(diǎn)樹50是當(dāng)前安裝的設(shè)備的精確分層表示。反之,注冊(cè)表40包含曾經(jīng)安裝(即使它們當(dāng)前不存在)的所有設(shè)備的信息。設(shè)備在注冊(cè)表40中的位置并不完全反映設(shè)備節(jié)點(diǎn)樹50中描述的分層結(jié)構(gòu)。在注冊(cè)表40中,設(shè)備位于它們的枚舉器下方,但所有枚舉器是保持在平坦的表中的,意味著枚舉器并不按照識(shí)別它們的相關(guān)設(shè)備的枚舉器保持在分層結(jié)構(gòu)中。設(shè)備節(jié)點(diǎn)樹50只存在在存儲(chǔ)器中,而注冊(cè)表40則保存在盤上。
如前面指出的,設(shè)備驅(qū)動(dòng)器控制與管理設(shè)備硬件。設(shè)備驅(qū)動(dòng)器負(fù)責(zé)識(shí)別給定設(shè)備30的特定資源需求并將該設(shè)備設(shè)定為以配置管理器20所賦予的配置操作。配置管理器20提供設(shè)備驅(qū)動(dòng)器能用來執(zhí)行其任務(wù)的服務(wù)與消息。
設(shè)備驅(qū)動(dòng)器檢驗(yàn)設(shè)備節(jié)點(diǎn)樹50中表示其設(shè)備的分配的配置的設(shè)備節(jié)點(diǎn)部分來確定已為該設(shè)備分配了哪些資源。對(duì)于即插即用卡,給定設(shè)備的分配的資源在每一次引導(dǎo)時(shí),或甚至在計(jì)算機(jī)系統(tǒng)10正在運(yùn)行時(shí)(動(dòng)態(tài)地)可以改變。邏輯配置描述對(duì)給定的硬件有效的各種配置。諸如它是否斷開或配置等關(guān)于設(shè)備的狀態(tài)的信息是由配置管理器20維護(hù)在設(shè)備節(jié)點(diǎn)樹50中的各設(shè)備節(jié)點(diǎn)中的。驅(qū)動(dòng)器能通過向配置管理器20查詢?cè)撔畔聿樵冞@一信息。在為特定的設(shè)備節(jié)點(diǎn)加載驅(qū)動(dòng)器時(shí),它向配置管理器20注冊(cè),傳遞在分配或改變硬件配置時(shí)將調(diào)用的設(shè)備的入口點(diǎn)。雖然設(shè)備驅(qū)動(dòng)器或其它部件不能直接訪問設(shè)備節(jié)點(diǎn)樹50或設(shè)備節(jié)點(diǎn),它能檢索關(guān)于設(shè)備節(jié)點(diǎn)的本體的信息并執(zhí)行檢索及設(shè)置該設(shè)備節(jié)點(diǎn)中的信息的任務(wù)。配置管理器20提供這些服務(wù)在設(shè)備節(jié)點(diǎn)上執(zhí)行任務(wù)。然而,設(shè)備驅(qū)動(dòng)器及其它部件能在注冊(cè)表40中存儲(chǔ)關(guān)于給定的設(shè)備節(jié)點(diǎn)的信息,以及檢索配置管理器20存儲(chǔ)在注冊(cè)表40中的關(guān)于設(shè)備節(jié)點(diǎn)的信息。
設(shè)備加載器加載與管理給定設(shè)備節(jié)點(diǎn)的設(shè)備驅(qū)動(dòng)器及枚舉器。當(dāng)設(shè)備由設(shè)備驅(qū)動(dòng)器的不同的層管理時(shí),通常使用設(shè)備加載器。設(shè)備加載器協(xié)調(diào)不同的層的工作并執(zhí)行適用于所有設(shè)備驅(qū)動(dòng)器的通用配置任務(wù)。
配置管理器20能將設(shè)備加載器與給定的設(shè)備節(jié)點(diǎn)關(guān)聯(lián)。設(shè)備加載器也能為給定的設(shè)備節(jié)點(diǎn)或任何子設(shè)備節(jié)點(diǎn)加載枚舉器及設(shè)備驅(qū)動(dòng)器。其它服務(wù)包含檢索與分配私有值給設(shè)備節(jié)點(diǎn)以及在設(shè)備描述符塊中檢索與設(shè)備節(jié)點(diǎn)關(guān)聯(lián)的任何動(dòng)態(tài)加載的虛擬設(shè)備。
仲裁器為分配諸如IRQ與I/O端口等各種資源的所有權(quán)的部件。資源仲裁器調(diào)解設(shè)備之間的資源沖突。仲裁器檢驗(yàn)設(shè)備需求表并找出最佳資源分配來滿足所有設(shè)備。配置管理器20也提供服務(wù)與信息來支持資源仲裁器的操作。
需求表標(biāo)識(shí)設(shè)備30成功地操作所需的資源類型及與這些資源關(guān)聯(lián)的任何限制。IRQ、I/O端口、DMA通道與存儲(chǔ)器范圍是資源類型的實(shí)例。限制通常是資源間的依存性,諸如設(shè)備30要求必須見到組合在一起的IRQ3與I/O端口O2F8以便成功地操作。
邏輯配置是設(shè)備30成功地操作所要求的資源的說明。任何給定的設(shè)備30可具有若干可能的邏輯配置。配置管理器20利用設(shè)備30的邏輯配置來決定如何在競(jìng)爭(zhēng)中的設(shè)備之間分配資源。配置管理器20提供設(shè)備驅(qū)動(dòng)器、枚舉器、及其它部件能用來檢驗(yàn)與建立邏輯配置的服務(wù)。
資源描述符描述邏輯配置中的資源。其中有存儲(chǔ)器、I/O端口、DMA通道、及IRQ的資源描述符。能根據(jù)需要建立其它資源描述符來標(biāo)識(shí)設(shè)備可利用的其它類型的資源。
存儲(chǔ)器資源描述符標(biāo)識(shí)存儲(chǔ)器地址范圍。這一描述符包含描述存儲(chǔ)器資源的MEM_DES結(jié)構(gòu)及標(biāo)識(shí)各設(shè)備的可能存儲(chǔ)器配置的MEM_RANGE結(jié)構(gòu)的數(shù)組。I/O端口資源描述符標(biāo)識(shí)I/O端口地址范圍。它包含描述I/O端口資源的IO_DES結(jié)構(gòu)及標(biāo)識(shí)可能的端口配置的IO_RANGE結(jié)構(gòu)的數(shù)組。
DMA通道資源描述符標(biāo)識(shí)一組DMA通道選擇對(duì)象。這一描述符為標(biāo)識(shí)設(shè)備能使用的DMA通道的DMA_DES結(jié)構(gòu)。最后,IRQ資源描述符標(biāo)識(shí)一組IRQ選擇對(duì)象。它是標(biāo)識(shí)設(shè)備能使用的IRQ及IRQ是否能共享的IRQ_DES結(jié)構(gòu)。
當(dāng)以I/O端口資源描述符工作時(shí),IOR_Alias與IOR_Decode值規(guī)定設(shè)備對(duì)其應(yīng)答的端口別名。端口別名是設(shè)備30對(duì)之應(yīng)答的地址,似乎它便是I/O端口的實(shí)際地址。此外,某些卡實(shí)際使用附加端口于不同目的,但使用使它們似乎正在使用別名的解碼方案;例如,ISA卡可解碼10位并需要03Coh。這一卡必須規(guī)定04h的IOR_Alias偏移及IOR_Decode 3(不使用別名作為實(shí)際端口)。為了方便,可將別名字段設(shè)定為零來指示不需要?jiǎng)e名;在這一情況中,忽略解碼字段。
如果該卡要使用7Coh、OBCoh、及OFCoh上的端口,其中這些端口具有不同的功能,IOR_Alias值將是相同的而IOR_Decode值將是OFh,指示端口地址的位11與12是有效的。從而,分配是對(duì)所有端口(PORT[i]+(n*alias*256))φ(decode*256/03FFh),其中n為任何整數(shù)而PORT為IOR_nPorts、IOR_Min、及IOR_Max字段規(guī)定的范圍。注意最小別名是4而最小解碼是3。
由于ISA總線的歷史原因,假設(shè)使用其中PORT=n*400+Z(其中“Z”為范圍100h-3ffh內(nèi)的端口,而“N”大于或等于1)的任何端口的所有EISA與ISA卡將保留端口Z并將其它端口作為別名對(duì)待。如果保留了落入這一組中的端口但驅(qū)動(dòng)器并不保留“Z”地址,則假設(shè)該設(shè)備是在局部總線上(諸如PCI),其中該保留的端口地址不出現(xiàn)在ISA總線上。
范圍表是I/O端口或存儲(chǔ)器地址范圍(以DWORD形式)的排序的表,其中沒有兩個(gè)范圍重疊。管理I/O與存儲(chǔ)器資源的資源仲裁器利用該范圍表服務(wù)來發(fā)現(xiàn)給定的I/O或存儲(chǔ)器范圍是否與任何其它范圍沖突。這些服務(wù)檢測(cè)建立包含重疊的范圍表的企圖并或者失敗或者在已經(jīng)存在重疊時(shí)建立合并的范圍。各范圍必須指定連接的地址范圍,但范圍表本身可包含多個(gè)范圍,其中沒有一個(gè)必須與表中的任何其它范圍連接。
與這些部件及資源聯(lián)合工作,配置管理器20為計(jì)算機(jī)系統(tǒng)10的所有設(shè)備30找出可工作的配置從而各設(shè)備30能與其它設(shè)備無沖突地使用其分配的IRQ號(hào)、I/O端口地址、及其它資源。配置管理器30還協(xié)助監(jiān)視計(jì)算機(jī)系統(tǒng)10中存在的設(shè)備30的數(shù)目與類型的改變,并在發(fā)生改變時(shí)根據(jù)需要管理設(shè)備30的配置。為了建立與維護(hù)配置,配置管理器20與枚舉器、資源仲裁器、設(shè)備加載器、及設(shè)備驅(qū)動(dòng)器聯(lián)合工作。它提供這些部件用來執(zhí)行它們的配置任務(wù)的服務(wù)與信息。下面的表III示出配置管理器20所提供的一些服務(wù)的表及這些服務(wù)的各個(gè)的說明。
表III配置管理器服務(wù)服務(wù)說明CONFIGMG_Create_DevNode 在硬件樹上增加設(shè)備節(jié)點(diǎn)。CONFIGMG_Disable_DevNode禁止硬件樹中的設(shè)備節(jié)點(diǎn)。CONFIGMG_Enable_DevNode 允許硬件樹中的設(shè)備節(jié)點(diǎn)。CONFIGMG_Query_Remove_SubTree 檢驗(yàn)是否能消除設(shè)備節(jié)點(diǎn)及其后代。CONFIGMG_Reenumerate_DevNode使指定的設(shè)備節(jié)點(diǎn)的枚舉器接受CONFIG_ENUMERATE枚舉器功能。CONFIGMG_Remove_SubTree 消除設(shè)備節(jié)點(diǎn)及其子節(jié)點(diǎn)。
可將這些服務(wù)用在計(jì)算機(jī)系統(tǒng)10中來允許在計(jì)算機(jī)系統(tǒng)10正在操作時(shí)在計(jì)算機(jī)系統(tǒng)10中插入與識(shí)別設(shè)備30。除了表III中所示的服務(wù),還有許多在Windows 95與98中標(biāo)準(zhǔn)的服務(wù)能用在計(jì)算機(jī)系統(tǒng)10中。Karen Hazzah的“編寫Windows VxD及設(shè)備驅(qū)動(dòng)器,第二版”(1997年R&D Books出版)提供即插即用框架及其部件的更完整說明,通過引用將其結(jié)合在此。
圖2a與2b為符合本發(fā)明的用于在操作中的計(jì)算機(jī)系統(tǒng)10中消除與插入具有不完全允許“即插即用”的驅(qū)動(dòng)器的設(shè)備的進(jìn)程的流程圖。這一進(jìn)程能作為軟件程序、布線成執(zhí)行該進(jìn)程的諸如可編程存儲(chǔ)器、固件或處理器等硬件設(shè)備或它們的某種組合實(shí)現(xiàn)。參見圖2a,在引導(dǎo)計(jì)算機(jī)系統(tǒng)10時(shí),配置管理器20用枚舉器、設(shè)備節(jié)點(diǎn)、設(shè)備驅(qū)動(dòng)器及注冊(cè)表40生成設(shè)備節(jié)點(diǎn)樹50(步驟110)。
在計(jì)算機(jī)系統(tǒng)10正在運(yùn)行(熱交換)或在睡眠狀態(tài)中(溫交換)時(shí),計(jì)算機(jī)系統(tǒng)10的用戶能請(qǐng)求用當(dāng)前存在在計(jì)算機(jī)系統(tǒng)10中的設(shè)備替換或交換不同的設(shè)備(步驟112)。為了作出這一請(qǐng)求,用戶能通過Windows型界面或與計(jì)算機(jī)系統(tǒng)10正在使用的操作系統(tǒng)兼容的任何其它類型界面查詢計(jì)算機(jī)系統(tǒng)10。在這一請(qǐng)求中,用戶能指定要消除的設(shè)備及要插入的新設(shè)備。此外,如果沒有設(shè)備要被消除,則用戶可以只指定要插入的設(shè)備。響應(yīng)這一請(qǐng)求,配置管理器20調(diào)用用戶請(qǐng)求消除的設(shè)備的控制器的驅(qū)動(dòng)器(步驟114)。這一調(diào)用能用CONFIGMG_Query_Remove_SubTree服務(wù)作出。如果要消除的設(shè)備是硬驅(qū)動(dòng)器,這一設(shè)備控制器可以是例如IDE控制器,而如果要消除的設(shè)備是軟驅(qū)動(dòng)器,則為軟控制器。取決于消除的設(shè)備的類型,其它控制器也是可能的。
設(shè)備控制器的驅(qū)動(dòng)器確定要消除的設(shè)備當(dāng)前是否正在使用(步驟116)。例如,如果該設(shè)備是盤驅(qū)動(dòng)器,驅(qū)動(dòng)器會(huì)確定該驅(qū)動(dòng)器上的文件當(dāng)前是否打開。為了作出確定,可作出CONFIGMG_Query_Remove_SubTree調(diào)用或查詢。在盤驅(qū)動(dòng)器的實(shí)例中,可通過若干層驅(qū)動(dòng)器訪問該盤驅(qū)動(dòng)器,諸如文件系統(tǒng)驅(qū)動(dòng)器、盤驅(qū)動(dòng)器驅(qū)動(dòng)器及盤控制器驅(qū)動(dòng)器。雖然盤控制器驅(qū)動(dòng)器可能不知道盤驅(qū)動(dòng)器上打開的文件,它能將關(guān)于狀態(tài)的查詢提交給能作出確定的其它驅(qū)動(dòng)器層。
如果該設(shè)備當(dāng)前正在使用,通過界面通知用戶不能消除該設(shè)備(步驟118)。如果在應(yīng)答該查詢中返回CR_REMOVED_VETOED指示,則確定該設(shè)備當(dāng)前正在使用。在盤驅(qū)動(dòng)器的實(shí)例中??梢韵蛴脩籼峁┬畔黻P(guān)閉該文件并在關(guān)閉文件之后重試交換。反之,如果該設(shè)備不在使用,則通過界面通知用戶能進(jìn)行交換(步驟120)。如果返回的指示為CR_SUCCESS則該設(shè)備不在使用。
在消除該設(shè)備之前,配置管理器20從設(shè)備節(jié)點(diǎn)樹50中消除與要消除的設(shè)備控制器關(guān)聯(lián)的所有設(shè)備節(jié)點(diǎn)及受該設(shè)備控制器控制的所有設(shè)備,其中包含要消除的該設(shè)備(步驟122)。這能用CONFIGMG_Remove_SubTree服務(wù)完成。作為這一操作的后果,從計(jì)算機(jī)系統(tǒng)10中卸載了與消除的設(shè)備節(jié)點(diǎn)相關(guān)的所有驅(qū)動(dòng)器與驅(qū)動(dòng)器字母。例如,消除軟盤驅(qū)動(dòng)器及其控制器的設(shè)備節(jié)點(diǎn)會(huì)消除它們的相關(guān)驅(qū)動(dòng)器及驅(qū)動(dòng)器字母,諸如“a”驅(qū)動(dòng)器。
如果正在交換的設(shè)備是受同一控制器控制的,諸如都受IDE控制器控制的CD-ROM與硬驅(qū)動(dòng)器,則只消除該控制器的設(shè)備節(jié)點(diǎn)。然而,如果正在交換的設(shè)備是受不同控制器控制的,則有必要消除兩個(gè)控制器的設(shè)備節(jié)點(diǎn)。如果正在插入新設(shè)備而不消除另一設(shè)備,則只須消除控制該新設(shè)備的控制器的設(shè)備節(jié)點(diǎn)。
消除了設(shè)備節(jié)點(diǎn)之后,便斷開了要消除的設(shè)備與其控制器之間傳輸?shù)男盘?hào)(步驟124)。為了執(zhí)行這一信號(hào)斷開,可將一電路集成到控制器中或加到計(jì)算機(jī)系統(tǒng)10中控制器與要消除的設(shè)備之間。這一信號(hào)斷開電路可以是諸如開關(guān)設(shè)備,它在斷開時(shí)封鎖控制器與要消除的相關(guān)設(shè)備之間的信號(hào)傳輸。信號(hào)斷開電路的開關(guān)控制響應(yīng)能交換該設(shè)備的指示。雖然信號(hào)斷開并非必要,但最好包含以免對(duì)控制器及要消除的設(shè)備的可能損壞。如果要交換的設(shè)備是受不同控制器控制的,也必須斷開要插入的設(shè)備的控制器的信號(hào)。如果要插入的設(shè)備不是交換另一設(shè)備的,斷開要插入的設(shè)備的控制器的信號(hào)也是必要的。
除了斷開設(shè)備與其控制器之間傳輸?shù)男盘?hào)之外,切斷正在消除的設(shè)備的供電(步驟126)。一旦信號(hào)已斷開及該設(shè)備已斷電,用戶便能從計(jì)算機(jī)系統(tǒng)10中消除該設(shè)備(步驟128)。
如圖2b中所示,在用戶從計(jì)算機(jī)系統(tǒng)10中消除該設(shè)備之后,用戶便能插入新設(shè)備(步驟130)。在作出這一交換之前,可通過界面向用戶提供計(jì)算機(jī)系統(tǒng)10已準(zhǔn)備好進(jìn)行交換的指示。
在向新設(shè)備供電與重新接通斷開的信號(hào)之前,用戶能通過界面提供已插入新設(shè)備的指示。作為替代,可在計(jì)算機(jī)系統(tǒng)10中包含傳感器電路來感測(cè)或確定已插入新設(shè)備,并提供已插入新設(shè)備的指示。
給出了已插入新設(shè)備的指示,便向新設(shè)備供電(步驟132)并將從上述控制器斷開的信號(hào)重新接通到該新設(shè)備(步驟134)。響應(yīng)這一指示,配置管理器20隨即指令枚舉器枚舉或識(shí)別該新增加的設(shè)備的控制器(步驟136)。這一枚舉器與該新設(shè)備的控制器連接在其上面的總線通信。枚舉可用CONFIGMG_Reenumernt_DevNode系統(tǒng)調(diào)用完成。通過重新枚舉該控制器,定位新設(shè)備的控制器并將其設(shè)備節(jié)點(diǎn)加到設(shè)備節(jié)點(diǎn)樹50上(步驟138)。如果交換的設(shè)備是受不同的控制器控制的,則也重新枚舉消除的設(shè)備的控制器。
在將控制器的設(shè)備節(jié)點(diǎn)加到設(shè)備節(jié)點(diǎn)樹50上之后,還初始化對(duì)應(yīng)于該控制器的驅(qū)動(dòng)器(步驟140)。如上面所討論的,控制器的設(shè)備節(jié)點(diǎn)可包含關(guān)于該控制器的驅(qū)動(dòng)器的位置的信息。在驅(qū)動(dòng)器的初始化期間,該控制器的驅(qū)動(dòng)器定位與該控制器關(guān)聯(lián)的枚舉器,后者將該新設(shè)備枚舉為連接在該控制器上(步驟142)。作為這一枚舉的結(jié)果,也將對(duì)應(yīng)于該新設(shè)備的設(shè)備節(jié)點(diǎn)加到設(shè)備節(jié)點(diǎn)樹50上(步驟144)。設(shè)備節(jié)點(diǎn)樹50中存在了新設(shè)備的設(shè)備節(jié)點(diǎn),計(jì)算機(jī)系統(tǒng)10便能識(shí)別與使用該新設(shè)備,似乎該新設(shè)備是在引導(dǎo)時(shí)安裝的一樣。
如上面所討論的,當(dāng)在計(jì)算機(jī)系統(tǒng)10正在運(yùn)行時(shí)插入設(shè)備時(shí),諸如Windows 95與98等操作系統(tǒng)不能識(shí)別與初始化具有不允許完全“即插即用”的驅(qū)動(dòng)器的設(shè)備。反之,這些驅(qū)動(dòng)器只能在初始化了對(duì)應(yīng)的驅(qū)動(dòng)器時(shí)才能枚舉設(shè)備,而這在傳統(tǒng)上只在起動(dòng)或安裝操作系統(tǒng)期間出現(xiàn)。然而在圖2a與2b的進(jìn)程中,控制器與設(shè)備的驅(qū)動(dòng)器是卸載然后重新初始化的,這便允許甚至在計(jì)算機(jī)系統(tǒng)10正在運(yùn)行或睡眠時(shí)也能識(shí)別與初始化新安裝的設(shè)備。
識(shí)別計(jì)算機(jī)系統(tǒng)10中存在的設(shè)備的進(jìn)程依賴于枚舉器的使用。枚舉器能與特定的設(shè)備節(jié)點(diǎn)關(guān)聯(lián),諸如總線或設(shè)備控制器的設(shè)備節(jié)點(diǎn)。此外,至少一個(gè)枚舉器與設(shè)備節(jié)點(diǎn)樹50的根節(jié)點(diǎn)關(guān)聯(lián)。配置管理器20使用與設(shè)備節(jié)點(diǎn)樹50的根節(jié)點(diǎn)關(guān)聯(lián)的枚舉器在起動(dòng)時(shí)開始該枚舉進(jìn)程。然而,不管枚舉器是與根節(jié)點(diǎn)、父節(jié)點(diǎn)還是子節(jié)點(diǎn)關(guān)聯(lián)的,枚舉進(jìn)程都以相同方式進(jìn)行。圖3示出符合本發(fā)明的枚舉進(jìn)程的流程圖。
首先,配置管理器20或與設(shè)備節(jié)點(diǎn)關(guān)聯(lián)的設(shè)備驅(qū)動(dòng)器判定設(shè)備節(jié)點(diǎn)是否包含關(guān)聯(lián)的枚舉器(步驟210)。如果否,則該設(shè)備節(jié)點(diǎn)不能具有任何子節(jié)點(diǎn)與關(guān)聯(lián)的設(shè)備來枚舉并為其調(diào)用驅(qū)動(dòng)器。反之,如果配置管理器20或設(shè)備驅(qū)動(dòng)器判定該設(shè)備節(jié)點(diǎn)包含枚舉器,便調(diào)用該枚舉器(步驟212)。然后調(diào)用的枚舉器搜索與對(duì)應(yīng)的設(shè)備節(jié)點(diǎn)的設(shè)備關(guān)聯(lián)或受其控制的任何設(shè)備(步驟214)。如果定位了這一設(shè)備,枚舉器便在注冊(cè)表40中搜索對(duì)應(yīng)于該定位的設(shè)備的項(xiàng)(步驟216)。
如果在注冊(cè)表40中未找到對(duì)應(yīng)于定位的設(shè)備的項(xiàng),稱作設(shè)備安裝器的模塊為該定位的設(shè)備在注冊(cè)表40中建立一新項(xiàng)(步驟218)。一旦為該設(shè)備建立了項(xiàng),便以與任何其它安裝的或以前安裝的設(shè)備相同的方式對(duì)待它。如果找到或已新建立了項(xiàng),枚舉器便將該項(xiàng)的設(shè)備節(jié)點(diǎn)加到設(shè)備節(jié)點(diǎn)樹50上(步驟220)。加到設(shè)備節(jié)點(diǎn)樹50上的定位的設(shè)備的設(shè)備節(jié)點(diǎn)是作為對(duì)具有找到該定位的設(shè)備的枚舉器的設(shè)備節(jié)點(diǎn)的子節(jié)點(diǎn)加入的。例如,如果IDE控制器的設(shè)備節(jié)點(diǎn)的枚舉器定位了硬驅(qū)動(dòng)器,該硬驅(qū)動(dòng)器的設(shè)備節(jié)點(diǎn)將作為設(shè)備節(jié)點(diǎn)樹50中的IDE控制器的設(shè)備節(jié)點(diǎn)的子節(jié)點(diǎn)加入。枚舉器還根據(jù)設(shè)備節(jié)點(diǎn)中的信息識(shí)別該定位的設(shè)備的設(shè)備驅(qū)動(dòng)器(步驟222),并使用這一信息來調(diào)用該設(shè)備驅(qū)動(dòng)器(步驟224)。然后該進(jìn)程重復(fù)自己。
圖4示出符合本發(fā)明的設(shè)備交換器70的框圖。設(shè)備交換器70可作為軟件程序、諸如可編程存儲(chǔ)器、固件或處理器等硬件設(shè)備、或者它們的某種組合實(shí)現(xiàn)。設(shè)備交換器70可作為諸如圖1中所示的計(jì)算機(jī)系統(tǒng)10等計(jì)算機(jī)系統(tǒng)的一部分加入。例如,如果作為軟件程序?qū)崿F(xiàn),設(shè)備交換器能在激活時(shí)加載到計(jì)算機(jī)系統(tǒng)10的存儲(chǔ)器中。
如圖4中所示,設(shè)備交換器70包含查詢模塊72、消除模塊74、斷開與供電模塊76及枚舉模塊78。這些模塊能在計(jì)算機(jī)系統(tǒng)10操作時(shí)加載到計(jì)算機(jī)系統(tǒng)10的存儲(chǔ)器中。操作中,圖4中的計(jì)算機(jī)系統(tǒng)10的用戶能用輸入設(shè)備作出請(qǐng)求用安裝在計(jì)算機(jī)系統(tǒng)10中的設(shè)備30交換另一設(shè)備。設(shè)備交換器70的查詢模塊72接受這一請(qǐng)求,它判定要消除的設(shè)備當(dāng)前是否正受訪問(圖2a的步驟116)。如果是,查詢模塊72通過諸如計(jì)算機(jī)系統(tǒng)10中的監(jiān)視器等界面通知用戶該設(shè)備當(dāng)前正在使用而此時(shí)不能消除(圖2a的步驟118)。如果不在訪問,查詢模塊72通知用戶可以接受交換(圖2a的步驟120)。
消除該設(shè)備之前,消除模塊74從設(shè)備節(jié)點(diǎn)樹50中消除該設(shè)備的設(shè)備節(jié)點(diǎn)及其相關(guān)控制器(圖2a的步驟122)。這一消除同時(shí)卸載與該設(shè)備及控制器相關(guān)的所有驅(qū)動(dòng)器及驅(qū)動(dòng)器的驅(qū)動(dòng)器字母。除了消除設(shè)備節(jié)點(diǎn),斷開與供電模塊76信令斷開電路(未示出)斷開在被消除的設(shè)備與控制器之間傳輸?shù)男盘?hào)(圖2a的步驟124)。斷開與供電模塊76還切斷被消除的設(shè)備的供電(圖2a的步驟126)。
交換設(shè)備之后,斷開與供電模塊76接收已插入新增加的設(shè)備的指示,向新增加的設(shè)備供電并信令斷開電路重新接通控制器與增加的設(shè)備之間傳輸?shù)男盘?hào)(圖2b的步驟132與134)。也接收已插入新增加的設(shè)備的指示的枚舉模塊78便定位新增加的設(shè)備的控制器并將該控制器的設(shè)備節(jié)點(diǎn)加到設(shè)備節(jié)點(diǎn)樹50中(圖2b的步驟136與138)。這一控制器可以是與消除的設(shè)備的控制器同一或不同的控制器。初始化與該控制器的設(shè)備節(jié)點(diǎn)關(guān)聯(lián)的設(shè)備驅(qū)動(dòng)器并調(diào)用與該控制器關(guān)聯(lián)的枚舉器,后者定位新增加的設(shè)備并將其設(shè)備節(jié)點(diǎn)加到設(shè)備節(jié)點(diǎn)樹50上(圖2b的步驟140、142與144)。此時(shí),計(jì)算機(jī)系統(tǒng)10的其余部分完全可以訪問該新增加的設(shè)備。
已為了示例與說明的目的提出了本發(fā)明的較佳實(shí)施例的上文中的描述。這不是為了將本發(fā)明窮盡或限制在公開的精確方式上,而是根據(jù)上面的教導(dǎo)或者從本發(fā)明的實(shí)踐中有可能進(jìn)行各種修改與改型。這一實(shí)施例是為了說明本發(fā)明的原理及使熟悉本技術(shù)的人員能在各種實(shí)施例中利用本發(fā)明及適合于設(shè)想的特殊用途的各種修改的實(shí)際應(yīng)用而選擇與描述的。旨在由這里所附的權(quán)利要求及它們的等效物來定義本
權(quán)利要求
1.一種枚舉計(jì)算機(jī)系統(tǒng)中存在的第一設(shè)備而使該計(jì)算機(jī)系統(tǒng)能識(shí)別該第一設(shè)備的方法,該計(jì)算機(jī)系統(tǒng)具有存儲(chǔ)器及使用存儲(chǔ)在該存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)來建立計(jì)算機(jī)系統(tǒng)的工作配置的操作系統(tǒng),該數(shù)據(jù)結(jié)構(gòu)具有對(duì)應(yīng)于該計(jì)算機(jī)系統(tǒng)中存在的設(shè)備的一或多個(gè)設(shè)備節(jié)點(diǎn),該方法包括下述步驟當(dāng)計(jì)算機(jī)系統(tǒng)正在操作時(shí)向該操作系統(tǒng)提供已將該第一設(shè)備插入計(jì)算機(jī)系統(tǒng)中的指示;響應(yīng)該指示枚舉用于控制該第一設(shè)備的第一設(shè)備控制器;響應(yīng)第一設(shè)備控制器的枚舉初始化與該第一設(shè)備控制器關(guān)聯(lián)的第一驅(qū)動(dòng)器;用該初始化后的第一驅(qū)動(dòng)器定位與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器;以及用該定位的枚舉器枚舉該第一設(shè)備,其中當(dāng)初始化該第一驅(qū)動(dòng)器時(shí),該第一驅(qū)動(dòng)器只能定位與第一設(shè)備控制器關(guān)聯(lián)的枚舉器。
2.對(duì)照權(quán)利要求1的方法,其中枚舉第一設(shè)備控制器的步驟包含將該第一設(shè)備控制器的設(shè)備節(jié)點(diǎn)加到該數(shù)據(jù)結(jié)構(gòu)上的子步驟。
3.按照權(quán)利要求1的方法,其中枚舉該第一設(shè)備控制器的步驟包含從存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中的設(shè)備節(jié)點(diǎn)表中定位該第一設(shè)備控制器的設(shè)備節(jié)點(diǎn)的子步驟。
4.按照權(quán)利要求1的方法,其中枚舉第一設(shè)備的步驟包含從存儲(chǔ)在計(jì)算機(jī)系繞的存儲(chǔ)器中的設(shè)備節(jié)點(diǎn)表中定位第一設(shè)備的設(shè)備節(jié)點(diǎn)的子步驟。
5.按照權(quán)利要求4的方法,其中枚舉第一設(shè)備的步驟還包含將該第一設(shè)備的定位的設(shè)備節(jié)點(diǎn)加到該數(shù)據(jù)結(jié)構(gòu)上的子步驟。
6.按照權(quán)利要求1的方法,其中枚舉第一設(shè)備的步驟包含將該第一設(shè)備的設(shè)備節(jié)點(diǎn)加到該數(shù)據(jù)結(jié)構(gòu)上的子步驟。
7.按照權(quán)利要求1的方法,還包括下述步驟在將第一設(shè)備連接到計(jì)算機(jī)系統(tǒng)上之后向該第一設(shè)備供電;以及接通在第一設(shè)備與第一設(shè)備控制器之間傳輸?shù)娜魏螖?shù)據(jù)信號(hào)。
8.按照權(quán)利要求1的方法,在接通第一設(shè)備的步驟之前,還包括下述步驟確定當(dāng)前是否正在訪問計(jì)算機(jī)系統(tǒng)中的第二設(shè)備;從該數(shù)據(jù)結(jié)構(gòu)中清除對(duì)應(yīng)于該第二設(shè)備的設(shè)備節(jié)點(diǎn)及對(duì)應(yīng)于用于控制該第二設(shè)備的控制器的設(shè)備節(jié)點(diǎn);隔離在第二設(shè)備與第二設(shè)備控制器之間傳輸?shù)娜魏螖?shù)據(jù)信號(hào)從第二設(shè)備控制器到第二設(shè)備的傳輸;以及關(guān)閉第二設(shè)備的供電。
9.按照權(quán)利要求8的方法,其中清除對(duì)應(yīng)于第二設(shè)備及第二設(shè)備控制器的設(shè)備節(jié)點(diǎn)的步驟包含卸載與該第二設(shè)備及該第二設(shè)備控制器關(guān)聯(lián)的所有驅(qū)動(dòng)器的子步驟。
10.按照權(quán)利要求8的方法,其中該第一設(shè)備控制器與第二設(shè)備控制器是同一控制器。
11.按照權(quán)利要求8的方法,還包括將隔離的數(shù)據(jù)信號(hào)接通到第一設(shè)備上的步驟。
12.按照權(quán)利要求1的方法,其中該第一設(shè)備是軟驅(qū)動(dòng)器、硬驅(qū)動(dòng)器、及CD-ROM驅(qū)動(dòng)器之一。
13.按照權(quán)利要求1的方法,其中該第一設(shè)備控制器為IDE驅(qū)動(dòng)器控制器及軟驅(qū)動(dòng)器控制器之一。
14.按照權(quán)利要求8的方法,其中該第二設(shè)備為軟驅(qū)動(dòng)器、硬驅(qū)動(dòng)器、及CD-ROM驅(qū)動(dòng)器之一。
15.按照權(quán)利要求8的方法,其中該第二設(shè)備控制器為IDE驅(qū)動(dòng)器控制器及軟驅(qū)動(dòng)器控制器之一。
16.一種計(jì)算機(jī)程序產(chǎn)品,包括具有用于枚舉計(jì)算機(jī)系統(tǒng)中存在的第一設(shè)備而使該計(jì)算機(jī)系統(tǒng)能識(shí)別該第一設(shè)備的計(jì)算機(jī)可讀的程序代碼模塊實(shí)現(xiàn)在其上的計(jì)算機(jī)可用的介質(zhì),該計(jì)算機(jī)系統(tǒng)具有存儲(chǔ)器及使用存儲(chǔ)在該存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)來建立計(jì)算機(jī)系統(tǒng)的工作配置的操作系統(tǒng),該數(shù)據(jù)結(jié)構(gòu)具有對(duì)應(yīng)于該計(jì)算機(jī)系統(tǒng)中存在的設(shè)備的一或多個(gè)設(shè)備節(jié)點(diǎn),該計(jì)算機(jī)程序產(chǎn)品包括第一枚舉模塊,用于在該計(jì)算機(jī)操作中將第一設(shè)備插入該計(jì)算機(jī)系統(tǒng)中之后枚舉用于控制該第一設(shè)備的第一設(shè)備控制器;初始化模塊,用于響應(yīng)該第一設(shè)備控制器的枚舉初始化與該第一設(shè)備控制器關(guān)聯(lián)的第一驅(qū)動(dòng)器;定位器模塊,用于用初始化的第一驅(qū)動(dòng)器識(shí)別與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器;以及第二枚舉模塊,用于用與該笫一設(shè)備控制器關(guān)聯(lián)的該定位的枚舉器枚舉該第一設(shè)備,其中在初始化第一驅(qū)動(dòng)器時(shí)該第一驅(qū)動(dòng)器只能定位與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器。
17.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中該第一枚舉模塊包含用于將第一設(shè)備控制器的設(shè)備節(jié)點(diǎn)加到該數(shù)據(jù)結(jié)構(gòu)上的子模塊。
18.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中該第一枚舉模塊包含用于從存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中的設(shè)備節(jié)點(diǎn)表中定位該第一設(shè)備控制器的設(shè)備節(jié)點(diǎn)的子模塊。
19.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中該第二枚舉模塊包含用于從存儲(chǔ)在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中的設(shè)備節(jié)點(diǎn)表中定位該第一設(shè)備的設(shè)備節(jié)點(diǎn)的子模塊。
20.按照權(quán)利要求19的計(jì)算機(jī)程序產(chǎn)品,其中該第二枚舉模塊還包含用于將該第一設(shè)備的定位的設(shè)備節(jié)點(diǎn)加到該數(shù)據(jù)結(jié)構(gòu)上的子模塊。
21.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中該第二枚舉模塊包含用于將該第一設(shè)備的設(shè)備節(jié)點(diǎn)加到該數(shù)據(jù)結(jié)構(gòu)上的子模塊。
22.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,還包括用于在將該第一設(shè)備連接到該計(jì)算機(jī)系統(tǒng)上之后向該第一設(shè)備供電的供電模塊;以及用于接通在該第一設(shè)備與第一設(shè)備控制器之間傳輸?shù)娜魏螖?shù)據(jù)信號(hào)的開關(guān)模塊。
23.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,還包括查詢模塊,用于確定當(dāng)前是否正在訪問計(jì)算機(jī)系統(tǒng)中的第二設(shè)備;清除模塊,用于從該數(shù)據(jù)結(jié)構(gòu)中消除對(duì)應(yīng)于第二設(shè)備的設(shè)備節(jié)點(diǎn)及對(duì)應(yīng)于控制該第二設(shè)備的控制器的設(shè)備節(jié)點(diǎn);隔離模塊,用于隔離在第二設(shè)備與第二設(shè)備控制器之間傳輸?shù)娜魏螖?shù)據(jù)信號(hào)從第二設(shè)備控制器到第二設(shè)備的傳輸;供電模塊,用于切斷第二設(shè)備的供電,使得能將該第二設(shè)備從計(jì)算機(jī)系統(tǒng)上清除。
24.按照權(quán)利要求23的計(jì)算機(jī)程序產(chǎn)品,其中該第一設(shè)備控制器與第二設(shè)備控制器為同一控制器。
25.按照權(quán)利要求23的計(jì)算機(jī)程序產(chǎn)品,還包括用于將隔離的數(shù)據(jù)信號(hào)接通到第一設(shè)備上的開關(guān)模塊。
26.按照權(quán)利要求23的計(jì)算機(jī)程序產(chǎn)品,其中該清除模塊包含用于卸載與第二設(shè)備及第二設(shè)備控制器關(guān)聯(lián)的所有驅(qū)動(dòng)器的子模塊。
27.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中該第一設(shè)備為軟驅(qū)動(dòng)器、硬驅(qū)動(dòng)器、及CD-ROM驅(qū)動(dòng)器之一。
28.按照權(quán)利要求16的計(jì)算機(jī)程序產(chǎn)品,其中該第一設(shè)備控制器為IDE驅(qū)動(dòng)器控制器及軟驅(qū)動(dòng)器控制器之一。
29.按照權(quán)利要求23的計(jì)算機(jī)程序產(chǎn)品,其中該第二設(shè)備為軟驅(qū)動(dòng)器、硬驅(qū)動(dòng)器、及CD-ROM驅(qū)動(dòng)器之一。
30.按照權(quán)利要求23的計(jì)算機(jī)程序產(chǎn)品,其中該第二設(shè)備控制器為IDE驅(qū)動(dòng)器控制器及軟驅(qū)動(dòng)器控制器之一。
31.一種用于枚舉計(jì)算機(jī)系統(tǒng)中存在的第一設(shè)備而使該計(jì)算機(jī)系統(tǒng)能識(shí)別該第一設(shè)備的計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)具有存儲(chǔ)器及使用存儲(chǔ)在該存儲(chǔ)器中的數(shù)據(jù)結(jié)構(gòu)來建立該計(jì)算機(jī)系統(tǒng)的工作配置的操作系統(tǒng),該數(shù)據(jù)結(jié)構(gòu)具有對(duì)應(yīng)于該計(jì)算機(jī)系統(tǒng)中存在的設(shè)備的一或多個(gè)設(shè)備節(jié)點(diǎn),該計(jì)算機(jī)系統(tǒng)包括在計(jì)算機(jī)系統(tǒng)操作時(shí)向操作系統(tǒng)提供已將第一設(shè)備插入該計(jì)算機(jī)系統(tǒng)中的指示的第一部件;響應(yīng)該指示枚舉用于控制該第一設(shè)備的第一設(shè)備控制器的第二部件;響應(yīng)第一設(shè)備控制器的枚舉,枚舉與該第一設(shè)備控制器關(guān)聯(lián)的第一驅(qū)動(dòng)器的第三部件;用初始化的第一驅(qū)動(dòng)器定位與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器的第四部件;以及用該定位的枚舉器枚舉第一設(shè)備的第五部件;其中在初始化該第一驅(qū)動(dòng)器時(shí),該第一驅(qū)動(dòng)器只能定位與該第一設(shè)備控制器關(guān)聯(lián)的枚舉器。
全文摘要
一種用于交換安裝在計(jì)算機(jī)系統(tǒng)中的設(shè)備的系統(tǒng)允許用戶在該計(jì)算機(jī)系統(tǒng)正在運(yùn)行或在睡眠狀態(tài)中時(shí)進(jìn)行設(shè)備交換。該系統(tǒng)能識(shí)別、訪問及使用新增加的設(shè)備而無須重新起動(dòng)或重新引導(dǎo)該計(jì)算機(jī)系統(tǒng)。
文檔編號(hào)G06F9/445GK1437726SQ00819275
公開日2003年8月20日 申請(qǐng)日期2000年3月2日 優(yōu)先權(quán)日2000年3月2日
發(fā)明者S·阿賴 申請(qǐng)人:鳳凰技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武川县| 织金县| 农安县| 成安县| 巨野县| 湟源县| 泾川县| 柞水县| 五原县| 浙江省| 大洼县| 瓮安县| 顺平县| 虹口区| 台山市| 苍南县| 灯塔市| 车致| 武功县| 健康| 尉犁县| 罗城| 梁平县| 北碚区| 剑阁县| 保山市| 丹阳市| 唐河县| 泽库县| 辽中县| 绥江县| 襄樊市| 紫阳县| 岗巴县| 五台县| 南通市| 武定县| 阳新县| 三都| 吉木萨尔县| 宿州市|