專利名稱:遠(yuǎn)程系統(tǒng)的即插即用設(shè)備重定向的制作方法
遠(yuǎn)程系統(tǒng)的即插即用設(shè)備重定向相關(guān)申請(qǐng)本發(fā)明根據(jù)35U.S.C.S 119(e)要求于2005年9月9日提交的美國(guó)臨時(shí)申請(qǐng)第 60/716,025號(hào)的優(yōu)先權(quán),其公開(kāi)包含在此。背景遠(yuǎn)程客戶端訪問(wèn)平臺(tái)和系統(tǒng),諸如由微軟公司提供的Terminal Service (終端 服務(wù))系統(tǒng),允許計(jì)算機(jī)(用戶)遠(yuǎn)程訪問(wèn)以應(yīng)用服務(wù)器或服務(wù)器(服務(wù)器計(jì)算機(jī)) 為主機(jī)或駐留在其上的應(yīng)用程序。在遠(yuǎn)程客戶訪問(wèn)系統(tǒng)中,客戶計(jì)算機(jī)一般依賴于 服務(wù)器計(jì)算機(jī)通過(guò)駐留的應(yīng)用程序來(lái)提供計(jì)算功能性。應(yīng)用程序的示例包括字處理、多媒體和數(shù)據(jù)管理程序。服務(wù)器計(jì)算機(jī)可稱為主機(jī)計(jì)算機(jī)或終端服務(wù)器。在某些情形中,存在多個(gè)服 務(wù)器計(jì)算機(jī)??蛻粲?jì)算機(jī)可稱為遠(yuǎn)程終端,遠(yuǎn)程客戶端或者痩客戶端??蛻粲?jì)算機(jī) 主要用于用戶界面與用戶交互和設(shè)備輸入/輸出;然而,在許多情形中, 一個(gè)或 多個(gè)本地設(shè)備附連到客戶計(jì)算機(jī)并且由服務(wù)器計(jì)算機(jī)來(lái)訪問(wèn)??蛻粲?jì)算機(jī)上的軟件一般是通用而非應(yīng)用程序?qū)S玫?,并且通常由操作系統(tǒng)和通用軟件組成,后者包括支持遠(yuǎn)程客戶訪問(wèn)環(huán)境的軟件。在服務(wù)器計(jì)算機(jī)上的軟件一般包括專用應(yīng)用軟件來(lái)提供特定的功能性,諸如多媒體、成像、數(shù)據(jù)庫(kù)訪問(wèn)、字處理和其它類型的應(yīng)用。在客戶計(jì)算機(jī)與服務(wù)器計(jì)算機(jī)之間傳遞的數(shù)據(jù)大多數(shù)包括與用戶界面有關(guān)的命令與數(shù)據(jù),諸如圖像數(shù)據(jù)、鍵擊、鼠標(biāo)移動(dòng)等,并包括與位于客戶計(jì)算機(jī)處的硬件設(shè)備有關(guān)的命令與數(shù)據(jù)。服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)一般使用預(yù)先定義的通信協(xié)議如由微軟公司定義的遠(yuǎn)程桌面協(xié)議(RDP)來(lái)彼此通信或傳遞信息。該過(guò)程還涉及較低層網(wǎng)絡(luò)協(xié)議, 如經(jīng)互聯(lián)網(wǎng)協(xié)議的傳輸控制協(xié)議(TCP/IP)。遠(yuǎn)程客戶訪問(wèn)系統(tǒng)的好處在于,客戶計(jì)算機(jī)的功耗相對(duì)較低,因?yàn)榇蠖鄶?shù)功 能性與計(jì)算在服務(wù)器計(jì)算機(jī)處發(fā)生。盡管服務(wù)器計(jì)算機(jī)通常比典型的桌面計(jì)算機(jī)更 昂貴,但一個(gè)應(yīng)用服務(wù)器計(jì)算機(jī)可以為許多較便宜的客戶計(jì)算機(jī)服務(wù)。5、一些遠(yuǎn)程客戶訪問(wèn)系統(tǒng)的另一優(yōu)點(diǎn)是,數(shù)據(jù)可以駐留在服務(wù)器計(jì)算機(jī)的物理 單元中,并且可以由應(yīng)用程序在該單元處對(duì)其進(jìn)行處理而不必通過(guò)相對(duì)慢速的通信 鏈路傳送到客戶計(jì)算機(jī)——僅在客戶的物理單元處實(shí)現(xiàn)了用戶界面。客戶計(jì)算機(jī)具有諸如串行通用總線(USB)或火線(IEEE 1394)端口之類的 端口,它們可附連一個(gè)或多個(gè)本地或外圍硬件設(shè)備。這類設(shè)備可與用戶界面有關(guān), 例如USB鍵盤(pán)。在許多情形中,在服務(wù)器計(jì)算機(jī)處執(zhí)行的應(yīng)用程序需要訪問(wèn)并與 這類本地客戶設(shè)備交互。本地或外圍設(shè)備的示例包括音頻記錄器、數(shù)碼相機(jī)、文檔 掃描儀、外置盤(pán)驅(qū)動(dòng)器以及媒體閱讀器等等。這類設(shè)備有時(shí)稱為即插即用或PNP 設(shè)備,因?yàn)檫@些設(shè)備一旦連接到端口就變得可用。在典型的基于Windows⑧的桌面環(huán)境中,本地應(yīng)用通過(guò)一系列驅(qū)動(dòng)程序,即驅(qū) 動(dòng)程序棧來(lái)與本地設(shè)備通信。驅(qū)動(dòng)程序棧尤其用于促進(jìn)設(shè)備的PNP能力。考慮到 組織與可重用性,可在驅(qū)動(dòng)程序棧的組件之間劃分不同的職責(zé)。例如,有些驅(qū)動(dòng)程 序?qū)τ诒镜卦O(shè)備的全部或某些通用類,并且可被用于或重新被用于與許多不同設(shè)備 通信。其它驅(qū)動(dòng)程序?qū)崿F(xiàn)專用于某些設(shè)備的功能性,并且經(jīng)常明確地設(shè)計(jì)為隨附于 這些設(shè)備。 一般地,這樣的問(wèn)題是根據(jù)具體設(shè)備來(lái)解決的。例如,為了支持一本地 設(shè)備,就在本地機(jī)器或客戶計(jì)算機(jī)上安裝相應(yīng)的軟件驅(qū)動(dòng)程序。對(duì)于不同且多個(gè)設(shè) 備而言,會(huì)產(chǎn)生要提供不同且正確的軟件驅(qū)動(dòng)程序來(lái)支持不同的硬件設(shè)備的問(wèn)題。在某些情形中,用戶可能不是在使用連接了特定設(shè)備的同一客戶計(jì)算機(jī);然 而,用戶希望訪問(wèn)和利用該設(shè)備。這可能是這樣一種情形,即用戶正在從另一客戶 計(jì)算機(jī)"遠(yuǎn)程"地工作。而且,可能希望服務(wù)器計(jì)算機(jī)為不止一個(gè)客戶計(jì)算機(jī)或用 戶提供對(duì)本地設(shè)備的訪問(wèn)。因此,在遠(yuǎn)程客戶訪問(wèn)系統(tǒng)中,希望在特定的遠(yuǎn)程客戶 計(jì)算機(jī)處的設(shè)備看上去象是在本地連接到服務(wù)器計(jì)算機(jī)一樣,使得其它遠(yuǎn)程客戶計(jì) 算機(jī)可訪問(wèn)該設(shè)備。發(fā)明內(nèi)容設(shè)備在本地被連接在客戶計(jì)算機(jī)上并被識(shí)別,同時(shí)將作為驅(qū)動(dòng)程序棧一部分 的設(shè)備驅(qū)動(dòng)程序安裝在該客戶計(jì)算機(jī)上以支持連接在該客戶計(jì)算機(jī)上的每一設(shè)備。 設(shè)備的連接,連同在服務(wù)器計(jì)算機(jī)上創(chuàng)建虛擬驅(qū)動(dòng)程序的信息一起,被通信到服務(wù) 器計(jì)算機(jī)。虛擬驅(qū)動(dòng)程序是由駐留在服務(wù)器計(jì)算機(jī)上的應(yīng)用識(shí)別的。來(lái)自服務(wù)器計(jì) 算機(jī)的命令隨后可通過(guò)虛擬驅(qū)動(dòng)程序傳遞至該設(shè)備并通信回設(shè)備驅(qū)動(dòng)程序,從而允 許由服務(wù)器計(jì)算機(jī)來(lái)控制該設(shè)備。提供本發(fā)明內(nèi)容,它以簡(jiǎn)化的形式介紹在下面的具體實(shí)施方式
中進(jìn)一步描述 的精選概念。本發(fā)明內(nèi)容不是要標(biāo)識(shí)要求保護(hù)的主題的關(guān)鍵特征或基本特征,也不 是要用于幫助確定要求保護(hù)的主題的范圍。
參考附圖描述具體實(shí)施方式
。在附圖中,參考數(shù)字的最高位數(shù)字標(biāo)識(shí)該參考 數(shù)字首次出現(xiàn)的附圖。在不同附圖中使用相同的參考數(shù)字表示相似或相同項(xiàng)。圖1是遠(yuǎn)程客戶訪問(wèn)系統(tǒng)的示圖,該系統(tǒng)包括帶有支持連接在遠(yuǎn)程客戶計(jì)算 機(jī)上的即插即用設(shè)備的虛擬驅(qū)動(dòng)程序的服務(wù)器計(jì)算機(jī)。圖2是服務(wù)器計(jì)算機(jī)和客戶計(jì)算機(jī)的示圖,并且例示服務(wù)器計(jì)算機(jī)和客戶計(jì) 算機(jī)的驅(qū)動(dòng)程序棧。圖3是例示在服務(wù)器計(jì)算機(jī)上創(chuàng)建虛擬驅(qū)動(dòng)程序的過(guò)程的流程圖。圖4是例示提供將客戶計(jì)算機(jī)設(shè)備重定向到服務(wù)器計(jì)算機(jī)的過(guò)程的流程圖。
具體實(shí)施方式
圖1示出遠(yuǎn)程客戶訪問(wèn)系統(tǒng)或遠(yuǎn)程系統(tǒng)100。遠(yuǎn)程系統(tǒng)IOO包括服務(wù)器計(jì)算機(jī) 102和一個(gè)或多個(gè)客戶計(jì)算機(jī)104。具體地,服務(wù)器計(jì)算機(jī)102包括即插即用(PNP) 設(shè)備或者PNP重定向程序與虛擬設(shè)備驅(qū)動(dòng)程序,以促進(jìn)或支持在本地連接至客戶 計(jì)算機(jī)的設(shè)備。在此例中,示出單個(gè)客戶計(jì)算機(jī)104;然而,在其它實(shí)現(xiàn)中,可包括多個(gè)客戶 計(jì)算機(jī)。對(duì)連接在客戶計(jì)算機(jī)104上的本地設(shè)備108的訪問(wèn)與控制可被定向或重定 向至服務(wù)器計(jì)算機(jī)102,使得本地設(shè)備108可選擇地由服務(wù)器計(jì)算機(jī)102來(lái)訪問(wèn)與 控制。遠(yuǎn)程系統(tǒng)100可以是如由微軟公司提供或定義的Terminal Service ,其中 對(duì)于提供功能性的所有或某些應(yīng)用程序,多個(gè)客戶計(jì)算機(jī)(例如,客戶計(jì)算機(jī)104) 依賴服務(wù)器計(jì)算機(jī)102。網(wǎng)絡(luò)IIO連接服務(wù)器計(jì)算機(jī)102和客戶計(jì)算機(jī)104。網(wǎng)絡(luò)IIO可用多種方法來(lái) 實(shí)現(xiàn)以支持這樣的連網(wǎng)環(huán)境,包括基于線接的技術(shù)和無(wú)線技術(shù)兩者。本發(fā)明的諸方 面不限于一種特定的網(wǎng)絡(luò)體系結(jié)構(gòu)或者網(wǎng)絡(luò)技術(shù)。遠(yuǎn)程系統(tǒng)100表示包括直接經(jīng)由 調(diào)制解調(diào)器撥號(hào)、企業(yè)LAN (局域網(wǎng))、WAN (廣域網(wǎng))和因特網(wǎng)的不同體系結(jié) 構(gòu)。網(wǎng)絡(luò)110將服務(wù)器計(jì)算機(jī)102連接到一個(gè)或多個(gè)客戶計(jì)算機(jī)(例如客戶計(jì)算機(jī) 104)。而且,服務(wù)器計(jì)算機(jī)102與客戶計(jì)算機(jī)104之間的網(wǎng)絡(luò)IIO連接可實(shí)現(xiàn)傳輸協(xié)議,諸如經(jīng)互聯(lián)網(wǎng)協(xié)議的傳輸控制協(xié)議(TCP/IP)。服務(wù)器計(jì)算機(jī)102實(shí)現(xiàn)為帶有操作系統(tǒng),諸如由微軟公司提供的Windows Server 2003操作系統(tǒng)。服務(wù)器計(jì)算機(jī)102和客戶計(jì)算機(jī)104可實(shí)現(xiàn)通信協(xié)議諸如 由微軟公司定義的遠(yuǎn)程數(shù)據(jù)協(xié)議(RDP),以便彼此傳遞數(shù)據(jù)或信息(即通信)。 這樣的通信協(xié)議的使用,尤其是RDP的使用,可在遠(yuǎn)程客戶訪問(wèn)系統(tǒng)如Terminal Services 系統(tǒng)的上下文中實(shí)現(xiàn)。此外,與服務(wù)器計(jì)算機(jī)102和客戶計(jì)算機(jī)104的通信可利用經(jīng)RDP通信的I/O 請(qǐng)求分組(IRP),尤其是稱為1/0控制(IOCTL)代碼的一組特定的'IRP。具體 地,駐留在服務(wù)器計(jì)算機(jī)102上的應(yīng)用程序可實(shí)現(xiàn)IRP以與本地設(shè)備108的通信。 IRP可以是源自應(yīng)用程序的、包括對(duì)一個(gè)或多個(gè)本地設(shè)備108的請(qǐng)求的通信數(shù)據(jù)。 本地設(shè)備可由應(yīng)用程序在IOCTL代碼中標(biāo)識(shí)為物理設(shè)備對(duì)象(PDO),其中每個(gè) 特定設(shè)備108由一特定的PDO來(lái)標(biāo)識(shí)。如下所述的真實(shí)設(shè)備驅(qū)動(dòng)程序可創(chuàng)建本地 設(shè)備108的PDO??蛻粲?jì)算機(jī)104可以是通用PC (個(gè)人計(jì)算機(jī))、膝上型PC、平板式PC等等, 并且實(shí)現(xiàn)操作系統(tǒng),諸如來(lái)自微軟公司的Windows⑧品牌的操作系統(tǒng)??蛻粲?jì)算機(jī) 104是獨(dú)立的計(jì)算機(jī),它主要與服務(wù)器計(jì)算機(jī)102接口以訪問(wèn)非本地存儲(chǔ)在客戶計(jì) 算機(jī)104上的文件或其它信息(例如,駐留在應(yīng)用服務(wù)器計(jì)算機(jī)102上的應(yīng)用程序)??蛻粲?jì)算機(jī)104配備了一個(gè)或多個(gè)連接PNP設(shè)備如本地設(shè)備108的設(shè)備端口 。 設(shè)備端口包括USB 1.0、 1.1禾B 2.0以及火線(IEEE 1394)端口,它們支持現(xiàn)有(例 如,傳統(tǒng)的)和未來(lái)的標(biāo)準(zhǔn)。具體地,設(shè)備端口允許將本地設(shè)備108連接到客戶計(jì) 算機(jī)104。本地設(shè)備108包括但不限于,數(shù)碼相機(jī),視頻攝像機(jī),硬盤(pán)存儲(chǔ)設(shè)備, 數(shù)字媒體記錄器,打印機(jī),掃描儀等等。服務(wù)器計(jì)算機(jī)102包括PNP重定向程序 與虛擬設(shè)備驅(qū)動(dòng)程序106。具體地,如下面更詳細(xì)地討論的,PNP重定向程序被配 置為檢測(cè)或由客戶計(jì)算機(jī)104通知有關(guān)一個(gè)或多個(gè)本地設(shè)備108的連接。虛擬設(shè)備 驅(qū)動(dòng)程序是在服務(wù)器計(jì)算機(jī)102上創(chuàng)建的,以執(zhí)行在客戶計(jì)算機(jī)104上存在的實(shí)際 設(shè)備驅(qū)動(dòng)程序的功能。圖2示出服務(wù)器計(jì)算機(jī)102和客戶計(jì)算機(jī)104的示例性驅(qū)動(dòng)程序棧。這些驅(qū) 動(dòng)程序棧是示例配置,它們可用于將本地設(shè)備108的命令和控制指示給駐留在服務(wù) 器計(jì)算機(jī)102上的應(yīng)用202。具體地,專用于特定本地設(shè)備108的遠(yuǎn)程服務(wù)驅(qū)動(dòng)程 序或者虛擬驅(qū)動(dòng)程序204是作為計(jì)算機(jī)102的驅(qū)動(dòng)程序棧的一部分來(lái)創(chuàng)建或提供 的。服務(wù)器計(jì)算機(jī)102包括處理單元或處理器206以及存儲(chǔ)系統(tǒng)或存儲(chǔ)器208。處 理器206被配置為控制或訪問(wèn)服務(wù)器計(jì)算機(jī)102的組件,諸如存儲(chǔ)器208和服務(wù)器 計(jì)算機(jī)102驅(qū)動(dòng)程序棧的組件。盡管此例例示存儲(chǔ)器208與服務(wù)器計(jì)算機(jī)102驅(qū)動(dòng) 程序棧的組件分開(kāi),但可以認(rèn)識(shí)到,在其它實(shí)現(xiàn)中,如下面進(jìn)一步討論的服務(wù)器計(jì) 算機(jī)102驅(qū)動(dòng)程序棧的組件包括在存儲(chǔ)器208內(nèi)。服務(wù)器計(jì)算機(jī)102的驅(qū)動(dòng)程序棧可被認(rèn)為包括下列組件或?qū)?,其中?yīng)用202 被視為驅(qū)動(dòng)程序棧的最高層次的組件或?qū)?。?yīng)用202包括各種多媒體,成像,數(shù)據(jù) 庫(kù)訪問(wèn),字詞處理和其它類型的應(yīng)用。應(yīng)用202可以是應(yīng)用服務(wù)210的一部分或者 與之相連接。應(yīng)用服務(wù)210包括或者連接到兼容性層212。當(dāng)支持實(shí)現(xiàn)諸如 Windows⑧便攜設(shè)備(WPD)格式之類的格式的特定本地設(shè)備時(shí),可實(shí)現(xiàn)兼容性層 212。應(yīng)用服務(wù)210或兼容性層212與上層過(guò)濾驅(qū)動(dòng)程序或重定向程序214通信。 重定向程序214可以是操作系統(tǒng)(OS)或者內(nèi)核,基于將OS命令反射或重定向 到應(yīng)用服務(wù)210或兼容性層212的組件(即,驅(qū)動(dòng)程序)。而且,在此實(shí)現(xiàn)中重定 向程序214被用于通信到虛擬驅(qū)動(dòng)程序204。創(chuàng)建虛擬驅(qū)動(dòng)程序204以特別支持本地設(shè)備108并與客戶計(jì)算機(jī)104的驅(qū)動(dòng) 程序棧通信。虛擬驅(qū)動(dòng)程序204可包括在主機(jī)過(guò)程216中;然而,在此例中,虛擬 驅(qū)動(dòng)程序204作為服務(wù)器計(jì)算機(jī)102的驅(qū)動(dòng)程序棧的一部分,與主機(jī)過(guò)程216分開(kāi) 并與之通信。主機(jī)過(guò)程216與PNP重定向程序218通信。PNP重定向程序218在最初創(chuàng)建虛擬驅(qū)動(dòng)程序204時(shí)特別提供來(lái)自客戶計(jì)算 機(jī)104的通信。具體地,PNP重定向程序218列舉或標(biāo)識(shí)被連接到客戶計(jì)算機(jī)104 并且要從客戶計(jì)算機(jī)104被重定向的設(shè)備(即,本地設(shè)備108) 。 PNP重定向程序 218可包括或訪問(wèn)重定向庫(kù),它提供服務(wù)器計(jì)算機(jī)102與客戶計(jì)算機(jī)104之間的基 于IRP的通信。在基于IRP的通信中,可使用虛擬通道。PNP重定向程序218可 創(chuàng)建該設(shè)備的一具體PDO表示。具體地,在通信涉及在服務(wù)器計(jì)算機(jī)102與客戶 計(jì)算機(jī)104之間傳遞IRP時(shí)創(chuàng)建該P(yáng)DO。每當(dāng)該設(shè)備與客戶計(jì)算機(jī)104斷開(kāi)連接, PNP重定向程序可銷毀該具體PDO。在應(yīng)用202與本地設(shè)備108之間的通信中,虛擬驅(qū)動(dòng)程序204直接與遠(yuǎn)程服 務(wù)客戶應(yīng)用220通信。遠(yuǎn)程服務(wù)客戶應(yīng)用220可以是遠(yuǎn)程過(guò)程,諸如由客戶計(jì)算機(jī) 如客戶計(jì)算機(jī)104上的Terminal Services 實(shí)現(xiàn)的過(guò)程。遠(yuǎn)程服務(wù)客戶應(yīng)用220主 要可用于提供客戶計(jì)算機(jī)104與服務(wù)器計(jì)算機(jī)102之間的通信。與服務(wù)器計(jì)算機(jī)102相似,客戶計(jì)算機(jī)104包括處理單元或處理器222以及 存儲(chǔ)系統(tǒng)或存儲(chǔ)器224。處理器222被配置為控制或訪問(wèn)客戶計(jì)算機(jī)104的組件, 諸如存儲(chǔ)器224和客戶計(jì)算機(jī)104的驅(qū)動(dòng)程序棧的組件。此例例示存儲(chǔ)器224與客 戶計(jì)算機(jī)104的組件或驅(qū)動(dòng)程序棧分開(kāi);然而可以認(rèn)識(shí)到,在其它實(shí)現(xiàn)中,如下面 進(jìn)一步討論的客戶計(jì)算機(jī)104的驅(qū)動(dòng)程序棧的組件可包括在存儲(chǔ)器224中。遠(yuǎn)程服務(wù)客戶應(yīng)用220可視為客戶計(jì)算機(jī)104的驅(qū)動(dòng)程序棧的最上面的組件 或?qū)?。在?qū)動(dòng)程序棧中,遠(yuǎn)程服務(wù)客戶應(yīng)用222的下面是主機(jī)過(guò)程226。主機(jī)過(guò)程 226可以是駐留在客戶計(jì)算機(jī)104中的應(yīng)用,它創(chuàng)建或提供驅(qū)動(dòng)程序以幫助本地設(shè) 備108。在此例中,特定于本地設(shè)備108的真實(shí)設(shè)備驅(qū)動(dòng)程序228是由主機(jī)過(guò)程226 創(chuàng)建或提供的。在支持PNP設(shè)備的典型驅(qū)動(dòng)程序棧中,本地設(shè)備108排他地依賴于一個(gè)設(shè)備 驅(qū)動(dòng)程序,諸如真實(shí)設(shè)備驅(qū)動(dòng)程序228來(lái)沿驅(qū)動(dòng)程序棧通信或傳遞數(shù)據(jù)。在此實(shí)現(xiàn) 中,真實(shí)設(shè)備驅(qū)動(dòng)程序228還為本地設(shè)備108提供通信;然而,用作真實(shí)設(shè)備驅(qū)動(dòng) 程序228的虛擬驅(qū)動(dòng)程序204為服務(wù)器計(jì)算機(jī)102尤其是應(yīng)用202提供控制或訪問(wèn) 本地設(shè)備108的能力。上層過(guò)濾驅(qū)動(dòng)程序或重定向程序230包括在客戶計(jì)算機(jī)104的驅(qū)動(dòng)程序棧中。 重定向程序230允許通信從虛擬驅(qū)動(dòng)程序204 (通過(guò)遠(yuǎn)程客戶應(yīng)用220)到本地設(shè) 備108??蛻粲?jì)算機(jī)104的驅(qū)動(dòng)程序棧包括與總線驅(qū)動(dòng)程序234通信的OS級(jí)或內(nèi) 核驅(qū)動(dòng)程序232??偩€驅(qū)動(dòng)程序234與主機(jī)控制器驅(qū)動(dòng)程序236通信。本地設(shè)備108 以及其它PNP設(shè)備,通過(guò)連接到主機(jī)控制器238的端口連接到客戶計(jì)算機(jī)104。 主機(jī)控制器238進(jìn)而通過(guò)客戶計(jì)算機(jī)104的驅(qū)動(dòng)程序棧經(jīng)由主機(jī)控制器驅(qū)動(dòng)程序 236進(jìn)行通信。只要有新設(shè)備諸如本地設(shè)備108被插入或連接至客戶計(jì)算機(jī)104,就安裝諸如 真實(shí)設(shè)備驅(qū)動(dòng)程序228的設(shè)備驅(qū)動(dòng)程序。真實(shí)設(shè)備驅(qū)動(dòng)程序228綁定于新發(fā)現(xiàn)的設(shè) 備或本地設(shè)備108。在驅(qū)動(dòng)程序棧中的應(yīng)用現(xiàn)在可訪問(wèn)或使用該設(shè)備(即,本地設(shè) 備108)。這樣的應(yīng)用可包括主機(jī)過(guò)程226。當(dāng)創(chuàng)建真實(shí)設(shè)備驅(qū)動(dòng)程序228時(shí),也 創(chuàng)建虛擬驅(qū)動(dòng)程序204。虛擬驅(qū)動(dòng)程序204的創(chuàng)建使應(yīng)用202能夠變得知曉本地設(shè) 備108。應(yīng)用202與真實(shí)設(shè)備驅(qū)動(dòng)程序202之間從服務(wù)器計(jì)算機(jī)102到客戶機(jī)104的 通信被重定向,使得虛擬驅(qū)動(dòng)程序204代替真實(shí)設(shè)備驅(qū)動(dòng)程序228動(dòng)作。 一旦建立 虛擬驅(qū)動(dòng)程序204與應(yīng)用202之間的關(guān)系,則虛擬驅(qū)動(dòng)程序204與應(yīng)用202之間的通信被轉(zhuǎn)發(fā)給真實(shí)設(shè)備驅(qū)動(dòng)程序228。被轉(zhuǎn)發(fā)給真實(shí)設(shè)備驅(qū)動(dòng)程序228的通信使本 地設(shè)備108能夠以預(yù)期的方式動(dòng)作。換言之,當(dāng)創(chuàng)建客戶計(jì)算機(jī)104的設(shè)備棧時(shí), 可預(yù)期某些命令或通信經(jīng)歷真實(shí)設(shè)備驅(qū)動(dòng)程序228,諸如送往主機(jī)過(guò)程226的命令或通信。當(dāng)本地設(shè)備108被重定向到服務(wù)器計(jì)算機(jī)102特別是到應(yīng)用202時(shí),可發(fā)生 以下事件序列。本地設(shè)備108被插在客戶計(jì)算機(jī)104上;加載設(shè)備驅(qū)動(dòng)程序(即內(nèi) 核驅(qū)動(dòng)程序232,重定向程序230以及真實(shí)設(shè)備驅(qū)動(dòng)程序228);向應(yīng)用202發(fā)送 通知??蛻粲?jì)算機(jī)104識(shí)別本地設(shè)備108并將信息發(fā)送到PNP重定向程序218, 其中該信息用于創(chuàng)建虛擬設(shè)備驅(qū)動(dòng)程序204。創(chuàng)建虛擬驅(qū)動(dòng)程序204并與遠(yuǎn)程服務(wù) 客戶應(yīng)用220建立通信鏈路。通知應(yīng)用202新發(fā)現(xiàn)的本地設(shè)備108以及被創(chuàng)建與安 裝的真實(shí)設(shè)備驅(qū)動(dòng)程序228。該應(yīng)用220隨后發(fā)送I/O到虛擬驅(qū)動(dòng)程序204,后者將它轉(zhuǎn)發(fā)給遠(yuǎn)程服務(wù)客戶應(yīng)用,遠(yuǎn)程服務(wù)客戶應(yīng)用再將它轉(zhuǎn)發(fā)給真實(shí)設(shè)備驅(qū)動(dòng)程序 228。如果客戶硬件(例如,設(shè)備108)被拔出或者客戶計(jì)算機(jī)104與服務(wù)器計(jì)算 機(jī)102之間的連接被中斷,則從服務(wù)器卸載虛擬驅(qū)動(dòng)程序204并且所有通信停止。圖3示出提供在服務(wù)器計(jì)算機(jī)上創(chuàng)建虛擬驅(qū)動(dòng)程序的過(guò)程300。過(guò)程300可由 客戶計(jì)算機(jī)與服務(wù)器計(jì)算機(jī)作為協(xié)議實(shí)現(xiàn)。過(guò)程300例示為邏輯流程圖中的框集 合,這些框表示可用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)的一系列操作。在軟件 的上下文中,這些框表示計(jì)算機(jī)指令,當(dāng)由一個(gè)或多個(gè)處理器執(zhí)行時(shí),完成所述的 操作。盡管描述為流程圖,但可以預(yù)料,某些框可同時(shí)或以不同順序發(fā)生。過(guò)程 300例如可由圖1的系統(tǒng)100和/或圖2所述的計(jì)算機(jī)102和104來(lái)實(shí)現(xiàn),盡管過(guò)程 300可由其它體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)。在框302,發(fā)現(xiàn)新的硬件設(shè)備302。硬件設(shè)備可以是連接到客戶計(jì)算機(jī)的即插 即用(PNP)設(shè)備,諸如連接到客戶計(jì)算機(jī)104的本地設(shè)備108。可由駐留在客戶 計(jì)算機(jī)104上的諸如主機(jī)過(guò)程226之類的應(yīng)用來(lái)發(fā)現(xiàn)或標(biāo)識(shí)具體設(shè)備。而且,本地 設(shè)備108的發(fā)現(xiàn)可以是PNP過(guò)程的一部分。在框304,客戶計(jì)算機(jī)104加載或安裝必需的驅(qū)動(dòng)程序或驅(qū)動(dòng)程序棧以支持檢 測(cè)到的設(shè)備。安裝可由主機(jī)過(guò)程226或駐留在客戶計(jì)算機(jī)104上的另一應(yīng)用來(lái)完成。 安裝還可以是在設(shè)備連接到客戶計(jì)算機(jī)104時(shí)的典型PNP設(shè)備操作的一部分。驅(qū) 動(dòng)程序可包括設(shè)備驅(qū)動(dòng)程序(例如,真實(shí)設(shè)備驅(qū)動(dòng)程序228);上層過(guò)濾驅(qū)動(dòng)程序 (例如,重定向程序230);內(nèi)核驅(qū)動(dòng)程序232);以及總線驅(qū)動(dòng)程序(例如,總 線驅(qū)動(dòng)程序232)。在框306,標(biāo)識(shí)與驅(qū)動(dòng)程序有關(guān)的信息。標(biāo)識(shí)可由提供服務(wù)器計(jì)算機(jī)與客戶計(jì)算機(jī)之間通信的應(yīng)用來(lái)完成。遠(yuǎn)程服務(wù)客戶應(yīng)用220是這樣的通信應(yīng)用的一個(gè)示 例。通信可使用諸如經(jīng)RDP通信的I/0請(qǐng)求分組(IRP)之類的分組,尤其是稱為 1/0控制(IOCTL)代碼的一組特定的IRP。設(shè)備也可標(biāo)識(shí)為IOCTL代碼中的物理 設(shè)備對(duì)象(PDO)。在框308,有關(guān)設(shè)備的信息被通信到服務(wù)器計(jì)算機(jī)102。信息可由提供服務(wù)器 計(jì)算機(jī)102與客戶計(jì)算機(jī)104之間通信的應(yīng)用(例如,遠(yuǎn)程服務(wù)客戶應(yīng)用220)來(lái) 傳遞。通信的信息尤其用于在服務(wù)器計(jì)算機(jī)102上創(chuàng)建虛擬驅(qū)動(dòng)程序(例如,虛擬 驅(qū)動(dòng)程序204),其中虛擬驅(qū)動(dòng)程序是專用于所發(fā)現(xiàn)設(shè)備(例如,本地設(shè)備108) 的。虛擬驅(qū)動(dòng)程序可由諸如應(yīng)用202之類的應(yīng)用或諸如應(yīng)用服務(wù)210之類的服務(wù)來(lái) 創(chuàng)建。圖4示出提供將客戶計(jì)算機(jī)設(shè)備重定向到服務(wù)器計(jì)算機(jī)的過(guò)程400。過(guò)程400 可由客戶計(jì)算機(jī)與服務(wù)器計(jì)算機(jī)作為協(xié)議實(shí)現(xiàn)。過(guò)程400例示為邏輯流程圖中的框 集合,這些框代表可用硬件、軟件、固件或它們的組合來(lái)實(shí)現(xiàn)的一系列操作。在軟 件的上下文中,這些框表示計(jì)算機(jī)指令,當(dāng)由一個(gè)或多個(gè)處理器執(zhí)行時(shí),完成所述 的操作。盡管描述為流程圖,但可以預(yù)期,某些框可同時(shí)或以不同順序發(fā)生。過(guò)程 400例如可由圖1的系統(tǒng)100和/或圖2所述的計(jì)算機(jī)102和104來(lái)實(shí)現(xiàn),盡管過(guò)程 400可由其它體系結(jié)構(gòu)來(lái)實(shí)現(xiàn)。在框402,在服務(wù)器計(jì)算機(jī)102上創(chuàng)建虛擬驅(qū)動(dòng)程序(例如,虛擬驅(qū)動(dòng)程序 204)。虛擬驅(qū)動(dòng)程序204是基于從客戶計(jì)算機(jī)(例如,客戶計(jì)算機(jī)104)接收的、 描述所連接設(shè)備(例如,本地設(shè)備108)的信息而由服務(wù)器計(jì)算機(jī)102所創(chuàng)建。虛 擬驅(qū)動(dòng)程序204由服務(wù)器計(jì)算機(jī)上的應(yīng)用(例如,應(yīng)用202)識(shí)別,并向該應(yīng)用指 示附連了新的硬件或新的設(shè)備并使之可用。在框404,在服務(wù)器計(jì)算機(jī)102與客戶計(jì)算機(jī)104之間建立通信。通信可通過(guò) 通信鏈路諸如虛擬通道來(lái)進(jìn)行。具體地,從服務(wù)器計(jì)算機(jī)102到客戶計(jì)算機(jī)104 的通信可利用駐留在客戶計(jì)算機(jī)上的應(yīng)用,其中應(yīng)用與虛擬驅(qū)動(dòng)程序通信I/O命 令。這樣一個(gè)應(yīng)用的示例是遠(yuǎn)程服務(wù)客戶應(yīng)用220。在框406,通過(guò)識(shí)別新創(chuàng)建的設(shè)備驅(qū)動(dòng)程序(例如,真實(shí)設(shè)備驅(qū)動(dòng)程序228 和虛擬設(shè)備驅(qū)動(dòng)程序204),向應(yīng)用202和遠(yuǎn)程服務(wù)客戶應(yīng)用220通知所連接設(shè)備 1008的可用性。在框408,應(yīng)用202通過(guò)虛擬設(shè)備驅(qū)動(dòng)程序204通信I/O命令,后者將命令傳遞給諸如遠(yuǎn)程服務(wù)客戶應(yīng)用220之類的應(yīng)用。命令被傳遞到真實(shí)設(shè)備驅(qū)動(dòng)程序228 上,后者使本地設(shè)備108能夠如期望地通過(guò)客戶計(jì)算機(jī)104的本地驅(qū)動(dòng)程序棧來(lái)通信??偨Y(jié)上述方法和系統(tǒng)描述了通過(guò)使用虛擬設(shè)備驅(qū)動(dòng)程序在服務(wù)器計(jì)算機(jī)上對(duì)遠(yuǎn)程 客戶計(jì)算機(jī)設(shè)備的支持。盡管本發(fā)明已經(jīng)用專用于結(jié)構(gòu)特征和/或方法動(dòng)作的語(yǔ)言來(lái)描述,但將會(huì)理解在所附權(quán)利要求書(shū)中定義的本發(fā)明不必受限于所述的這些特定 特征或動(dòng)作。相反,這些特定特征和動(dòng)作是作為實(shí)現(xiàn)要求保護(hù)的本發(fā)明的示例性形 式而被揭示的。
權(quán)利要求
1.一種在服務(wù)器計(jì)算機(jī)上創(chuàng)建虛擬驅(qū)動(dòng)程序的方法,其中所述虛擬驅(qū)動(dòng)程序?qū)S糜谶B接到與所述服務(wù)器計(jì)算機(jī)進(jìn)行通信的客戶計(jì)算機(jī)的設(shè)備,所述方法包括當(dāng)所述設(shè)備連接到所述客戶計(jì)算機(jī)時(shí),發(fā)現(xiàn)所述設(shè)備;安裝專用于所述設(shè)備的設(shè)備驅(qū)動(dòng)程序;標(biāo)識(shí)與所述設(shè)備驅(qū)動(dòng)程序和所述設(shè)備有關(guān)的信息;以及將所述信息通信給所述服務(wù)器計(jì)算機(jī),以創(chuàng)建所述虛擬驅(qū)動(dòng)程序。
2.如權(quán)利要求1所述的方法,其特征在于,所述發(fā)現(xiàn)是由駐留在所述客 戶計(jì)算機(jī)上的遠(yuǎn)程訪問(wèn)應(yīng)用執(zhí)行的。
3. 如權(quán)利要求1所述的方法,其特征在于,所述安裝所述設(shè)備驅(qū)動(dòng)程序 是當(dāng)所述設(shè)備被連接到所述客戶計(jì)算機(jī)時(shí)即插即用(PNP)設(shè)備操作的一部分。
4. 如權(quán)利要求1所述的方法,其特征在于,所述安裝所述設(shè)備驅(qū)動(dòng)程序 還包括安裝支持所述設(shè)備的其它驅(qū)動(dòng)程序。
5. 如權(quán)利要求1所述的方法,其特征在于,所述標(biāo)識(shí)信息是由駐留在所 述客戶計(jì)算機(jī)上的遠(yuǎn)程訪問(wèn)應(yīng)用執(zhí)行的。
6. 如權(quán)利要求1所述的方法,其特征在于,所述標(biāo)識(shí)利用請(qǐng)求分組并且 所述設(shè)備是由特定的物理設(shè)備對(duì)象來(lái)標(biāo)識(shí)的。
7. 如權(quán)利要求1所述的方法,其特征在于,所述通信所述信息使用所述 服務(wù)器計(jì)算機(jī)與所述客戶計(jì)算機(jī)之間的專用虛擬通道。
8. —種將對(duì)客戶計(jì)算機(jī)上的設(shè)備的控制重定向到服務(wù)器計(jì)算機(jī)的方法, 包括在所述服務(wù)器計(jì)算機(jī)上創(chuàng)建虛擬驅(qū)動(dòng)程序,其中所述虛擬驅(qū)動(dòng)程序?qū)S糜?所述設(shè)備;通過(guò)所述虛擬驅(qū)動(dòng)程序,建立所述客戶計(jì)算機(jī)與所述服務(wù)器計(jì)算機(jī)之間的 通信;通過(guò)所述客戶計(jì)算機(jī)與所述服務(wù)器計(jì)算機(jī)之間的所述通信通知所述設(shè)備 的可用性;以及當(dāng)確定所述設(shè)備的可用性時(shí),將命令從所述服務(wù)器計(jì)算機(jī)通信到所述設(shè)備。
9. 如權(quán)利要求8所述的方法,其特征在于,所述創(chuàng)建所述虛擬驅(qū)動(dòng)程序 是以由所述服務(wù)器計(jì)算機(jī)從所述客戶計(jì)算機(jī)收到的描述所述設(shè)備的信息為基 礎(chǔ)的。
10. 如權(quán)利要求8所述的方法,其特征在于,所述建立通信是通過(guò)專用虛擬通道進(jìn)行的。
11. 如權(quán)利要求8所述的方法,其特征在于,所述建立是通過(guò)駐留在所述客戶計(jì)算機(jī)上的遠(yuǎn)程訪問(wèn)應(yīng)用進(jìn)行的。
12. 如權(quán)利要求8所述的方法,其特征在于,所述通知所述設(shè)備的可用性 被提供給駐留在所述客戶計(jì)算機(jī)上的遠(yuǎn)程訪問(wèn)應(yīng)用以及駐留在所述服務(wù)器計(jì) 算機(jī)上的應(yīng)用。
13. 如權(quán)利要求8所述的方法,其特征在于,所述通信命令包括將所述命 令傳遞到駐留在所述客戶計(jì)算機(jī)上的真實(shí)設(shè)備驅(qū)動(dòng)程序。
14. 一種遠(yuǎn)程訪問(wèn)系統(tǒng)包括 服務(wù)器計(jì)算機(jī);由所述服務(wù)器計(jì)算機(jī)支持的客戶計(jì)算機(jī); 連接到所述客戶計(jì)算機(jī)的設(shè)備;專用于所述設(shè)備且安裝在所述客戶計(jì)算機(jī)中的設(shè)備驅(qū)動(dòng)程序;以及 基于所述設(shè)備在所述服務(wù)器計(jì)算機(jī)中創(chuàng)建的虛擬驅(qū)動(dòng)程序,所述虛擬驅(qū)動(dòng) 程序用于所述設(shè)備驅(qū)動(dòng)程序與所述服務(wù)器計(jì)算機(jī)中的應(yīng)用進(jìn)行通信,所述應(yīng)用 提供命令給所述虛擬驅(qū)動(dòng)程序和設(shè)備驅(qū)動(dòng)程序以控制所述設(shè)備。
15. 如權(quán)利要求14所述的系統(tǒng),其特征在于,所述服務(wù)器計(jì)算機(jī)包括標(biāo) 識(shí)所述設(shè)備的重定向程序。
16. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述重定向程序包括提供 所述服務(wù)器計(jì)算機(jī)與客戶計(jì)算機(jī)之間的通信的重定向庫(kù)。
17. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述客戶計(jì)算機(jī)包括提供 所述服務(wù)器計(jì)算機(jī)與客戶計(jì)算機(jī)之間的通信的遠(yuǎn)程服務(wù)應(yīng)用。
18. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述設(shè)備是即插即用(PNP) 設(shè)備。
19. 如權(quán)利要求15所述的系統(tǒng),其特征在于,所述設(shè)備驅(qū)動(dòng)程序在所述 設(shè)備連接到所述客戶計(jì)算機(jī)時(shí)與其它驅(qū)動(dòng)程序一起安裝。
20.如權(quán)利要求20所述的系統(tǒng),其特征在于,來(lái)自所述服務(wù)器計(jì)算機(jī)的 所述命令是通過(guò)安裝在所述客戶計(jì)算機(jī)中的所述驅(qū)動(dòng)程序棧而被通信的。
全文摘要
遠(yuǎn)程訪問(wèn)系統(tǒng)將服務(wù)器計(jì)算機(jī)與一個(gè)或多個(gè)客戶計(jì)算機(jī)連接,其中設(shè)備在本地連接在客戶計(jì)算機(jī)上。這些設(shè)備由客戶計(jì)算機(jī)識(shí)別并且為每一被連接且被識(shí)別的設(shè)備提供設(shè)備驅(qū)動(dòng)程序。根據(jù)專用于該設(shè)備的信息在服務(wù)器計(jì)算機(jī)上創(chuàng)建虛擬驅(qū)動(dòng)程序,使得該虛擬驅(qū)動(dòng)程序如同真正的驅(qū)動(dòng)程序一樣對(duì)服務(wù)器計(jì)算機(jī)上的應(yīng)用起作用。通過(guò)虛擬驅(qū)動(dòng)程序,該應(yīng)用能夠識(shí)別并提供命令給所連接的設(shè)備。
文檔編號(hào)G06F15/16GK101253489SQ200680031439
公開(kāi)日2008年8月27日 申請(qǐng)日期2006年8月15日 優(yōu)先權(quán)日2005年9月9日
發(fā)明者J·奇克, M·V·帕特瓦德汗, N·L·波特, V·K·斯托亞諾夫, Z·卡什夫 申請(qǐng)人:微軟公司