專(zhuān)利名稱(chēng):一種虛擬桌面外部設(shè)備支持系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及虛擬桌面外部設(shè)備支持的技術(shù)領(lǐng)域,更具體地說(shuō),就是在虛擬桌面平臺(tái)下提供一種訪問(wèn)桌面客戶(hù)端外部設(shè)備的系統(tǒng)。
背景技術(shù):
當(dāng)前虛擬桌面平臺(tái)受到人們的追捧,相應(yīng)的虛擬桌面解決方案也應(yīng)運(yùn)而生,例如虛擬桌面技術(shù)解決了應(yīng)用程序遠(yuǎn)程虛擬顯示,用戶(hù)本地環(huán)境能快速構(gòu)建,用戶(hù)環(huán)境的遷移等等問(wèn)題的。而計(jì)算機(jī)的外部設(shè)備具有高速,攜帶方便,簡(jiǎn)單易用并支持即插即用等特性, 因此在計(jì)算機(jī)界內(nèi)得到了廣泛的應(yīng)用。比如目前市場(chǎng)上出現(xiàn)的USB充電器、USB移動(dòng)光驅(qū)、 USB網(wǎng)卡、USB音響等產(chǎn)品都受到廣大計(jì)算機(jī)用戶(hù)的歡迎。然而,目前這些USB設(shè)備僅僅只能在單機(jī)的個(gè)人計(jì)算機(jī)上得到應(yīng)用,并沒(méi)有在桌面虛擬化系統(tǒng)得到廣泛的應(yīng)用,也就是說(shuō)將一個(gè)USB設(shè)備,例如USB攝像頭接入本地主機(jī),該設(shè)備只能提供本地主機(jī)上應(yīng)用程序使用,虛擬桌面系統(tǒng)無(wú)法共享該USB上攝像頭。而現(xiàn)有的操作系統(tǒng)的文件共享機(jī)制并不能完全滿(mǎn)足這個(gè)需求。在這一背景下,虛擬桌面中外部設(shè)備支持機(jī)制的研究課題備受關(guān)注。當(dāng)前,常規(guī)設(shè)備共享模型對(duì)新出現(xiàn)的外圍設(shè)備支持不是非常好。第一,只有應(yīng)用層面的操作是共享的,所以更細(xì)粒度和特定設(shè)備操作不被支持的,這就使得它不能像使用直接連接的設(shè)備一樣去使用共享的遠(yuǎn)程設(shè)備。第二,在原有功能上,遠(yuǎn)程設(shè)備和本地連接的設(shè)備是相同的,然而,用于控制這兩種裝置接口往往不同。對(duì)于本地連接的設(shè)備大多數(shù)控制命令是在設(shè)備驅(qū)動(dòng)程序中實(shí)現(xiàn)的。而共享機(jī)制訪問(wèn)遠(yuǎn)程設(shè)備通常在操作系統(tǒng)的上層實(shí)施,如用戶(hù)態(tài),應(yīng)用程序或庫(kù)。這兩個(gè)接口之間的差距一般通過(guò)修改現(xiàn)有的應(yīng)用程序來(lái)支持。例如,VNC提供的共享機(jī)制是通過(guò)發(fā)送連續(xù)的屏幕圖像數(shù)據(jù)來(lái)實(shí)現(xiàn)和遠(yuǎn)程計(jì)算機(jī)之間的幀緩存共享。但是一個(gè)VNC客戶(hù)端運(yùn)行的是一個(gè)用戶(hù)態(tài)的應(yīng)用程序,作為本地物理幀緩沖,它不提供相同的訪問(wèn)接口。第三,由于共享設(shè)備操作系統(tǒng)之間的復(fù)雜性,有時(shí)實(shí)現(xiàn)高度的互操作性對(duì)一個(gè)設(shè)備共享系統(tǒng)來(lái)說(shuō)是比較困難的。有些共享設(shè)備應(yīng)用程序(例如僅僅通過(guò)延長(zhǎng)現(xiàn)有的抽象層轉(zhuǎn)發(fā)設(shè)備請(qǐng)求)通常只支持相同的操作系統(tǒng),不能與沒(méi)有這樣一個(gè)抽象層的操作系統(tǒng)互操作。此外,互操作性問(wèn)題往往會(huì)與上述第一個(gè)問(wèn)題產(chǎn)生沖突,為彌合不同的操作系統(tǒng)抽象層之間的沖突,通常需要禁用共享設(shè)備的一些特定的功能。而本發(fā)明中描述的虛擬桌面環(huán)境中提供外部設(shè)備支持的方法解決了上述所有的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供的一種虛擬桌面外部設(shè)備支持系統(tǒng),該系統(tǒng)具有網(wǎng)絡(luò)透明性和可擴(kuò)展性。本發(fā)明提供的一種虛擬桌面外部設(shè)備支持系統(tǒng),其特征在于,該系統(tǒng)包括位于桌面客戶(hù)端的過(guò)濾驅(qū)動(dòng)模塊和客戶(hù)端設(shè)備管理模塊,以及位于虛擬服務(wù)端的服務(wù)端設(shè)備管理模塊和虛擬總線接口驅(qū)動(dòng)模塊;客戶(hù)端設(shè)備管理模塊和服務(wù)端設(shè)備管理模塊用于實(shí)現(xiàn)虛擬USB設(shè)備與外部USB設(shè)備的對(duì)應(yīng)關(guān)系;客戶(hù)端設(shè)備管理模塊用于將桌面客戶(hù)端的USB設(shè)備共享出來(lái)提供給虛擬服務(wù)端使用,將USB設(shè)備從操作系統(tǒng)的驅(qū)動(dòng)模塊中卸載,然后綁定到系統(tǒng)的過(guò)濾驅(qū)動(dòng)模塊,完成對(duì)USB設(shè)備的綁定并進(jìn)行實(shí)時(shí)監(jiān)控USB設(shè)備的狀態(tài)轉(zhuǎn)化,同時(shí)負(fù)責(zé)與服務(wù)端設(shè)備管理模塊進(jìn)行異步通信,交換外部USB設(shè)備的狀態(tài)數(shù)據(jù)包,以建立真實(shí)設(shè)備與虛擬設(shè)備的連接關(guān)系;服務(wù)端設(shè)備管理模塊負(fù)責(zé)從虛擬總線接口驅(qū)動(dòng)模塊中獲取虛擬USB設(shè)備的狀態(tài),實(shí)時(shí)監(jiān)控虛擬服務(wù)端中的USB設(shè)備的狀態(tài)轉(zhuǎn)化,負(fù)責(zé)收發(fā)虛擬USB設(shè)備的狀態(tài)數(shù)據(jù)包,與桌面客戶(hù)端中的客戶(hù)端設(shè)備管理模塊進(jìn)行通信,保持虛擬設(shè)備與桌面客戶(hù)端的真實(shí)USB狀態(tài)的一致性,建立真實(shí)設(shè)備與虛擬設(shè)備的連接關(guān)系;過(guò)濾驅(qū)動(dòng)模塊充當(dāng)USB設(shè)備的客戶(hù)端驅(qū)動(dòng)程序,負(fù)責(zé)監(jiān)控客戶(hù)端外部USB設(shè)備的操作動(dòng)作,封裝請(qǐng)求命令發(fā)送給服務(wù)端的虛擬總線接口驅(qū)動(dòng)模塊,接收并解析從服務(wù)端虛擬總線接口驅(qū)動(dòng)模塊發(fā)送的系統(tǒng)請(qǐng)求包、再重裝成為外設(shè)請(qǐng)求命令發(fā)送給外部USB設(shè)備; 實(shí)現(xiàn)將本地的USB設(shè)備無(wú)縫的映射到服務(wù)端;虛擬總線接口驅(qū)動(dòng)模塊負(fù)責(zé)建立對(duì)應(yīng)外部USB設(shè)備的虛擬USB設(shè)備;把服務(wù)端操作系統(tǒng)應(yīng)用層對(duì)虛擬USB設(shè)備的I/O請(qǐng)求封裝成系統(tǒng)請(qǐng)求,通過(guò)網(wǎng)絡(luò)發(fā)送給過(guò)濾驅(qū)動(dòng)模塊; 解析接收到處理數(shù)據(jù),經(jīng)過(guò)拆包、解析、提取后將真實(shí)的數(shù)據(jù)傳遞到操作系統(tǒng)應(yīng)用層。本發(fā)明的外部設(shè)備支持系統(tǒng)提供了先進(jìn)的設(shè)備共享架構(gòu),支持復(fù)雜的桌面電腦客戶(hù)端外設(shè)接口。該設(shè)備共享架構(gòu)符合一系列的功能要求,包括網(wǎng)絡(luò)透明性,互操作性和通用性。它利用低級(jí)別的外圍設(shè)備控制協(xié)議接口,允許虛擬環(huán)境下兩種平臺(tái)應(yīng)用程序模板中應(yīng)用程序不做任何修就可以使用遠(yuǎn)程桌面客戶(hù)端設(shè)備。本發(fā)明在驅(qū)動(dòng)層實(shí)現(xiàn)了一個(gè)具有網(wǎng)絡(luò)透明性、完整功能和可互操作的虛擬桌面外設(shè)支持之間。
圖1為虛擬桌面外部設(shè)備支持系統(tǒng)的一種具體實(shí)現(xiàn)方式的結(jié)構(gòu)示意圖;圖2為詳細(xì)模塊設(shè)計(jì)圖;圖3為USB設(shè)備數(shù)據(jù)的流程圖;圖4為桌面客戶(hù)端工作機(jī)制流程圖;圖5為虛擬服務(wù)端工作機(jī)制流程圖。
具體實(shí)施例方式下面結(jié)合附圖并以USB外部設(shè)備為例對(duì)本發(fā)明方法作進(jìn)一步詳細(xì)的說(shuō)明。如圖1所示,本發(fā)明系統(tǒng)包括位于桌面客戶(hù)端的過(guò)濾驅(qū)動(dòng)模塊2和客戶(hù)端設(shè)備管理模塊1,以及位于虛擬服務(wù)端的服務(wù)端設(shè)備管理模塊3和虛擬總線接口驅(qū)動(dòng)模塊4??蛻?hù)端設(shè)備管理模塊1用于將桌面客戶(hù)端的USB設(shè)備共享出來(lái)提供給虛擬服務(wù)端使用,將USB設(shè)備從操作系統(tǒng)的驅(qū)動(dòng)模塊中卸載,即把USB設(shè)備接口編號(hào)寫(xiě)入原驅(qū)動(dòng)下的解綁定文件,然后綁定到系統(tǒng)的過(guò)濾驅(qū)動(dòng)模塊2,完成對(duì)USB設(shè)備的綁定并進(jìn)行實(shí)時(shí)監(jiān)控USB 設(shè)備的狀態(tài)轉(zhuǎn)化,同時(shí)負(fù)責(zé)與服務(wù)端設(shè)備管理模塊3進(jìn)行異步通信,交換外部USB設(shè)備5的狀態(tài)數(shù)據(jù)包,以建立真實(shí)設(shè)備與虛擬設(shè)備的連接關(guān)系。服務(wù)端設(shè)備管理模塊3負(fù)責(zé)從虛擬總線接口驅(qū)動(dòng)模塊4中的服務(wù)端USB狀態(tài)監(jiān)控模塊41中獲取虛擬USB設(shè)備6的狀態(tài),實(shí)時(shí)監(jiān)控虛擬服務(wù)端中的USB設(shè)備的狀態(tài)轉(zhuǎn)化,負(fù)責(zé)收發(fā)虛擬USB設(shè)備6的狀態(tài)數(shù)據(jù)包,與桌面客戶(hù)端中的客戶(hù)端設(shè)備管理模塊1進(jìn)行通信, 保持虛擬設(shè)備與桌面客戶(hù)端的真實(shí)USB狀態(tài)的一致性,建立真實(shí)設(shè)備與虛擬設(shè)備的連接關(guān)系。客戶(hù)端設(shè)備管理模塊1和服務(wù)端設(shè)備管理模塊3這兩個(gè)模塊的重要作用是實(shí)現(xiàn)虛擬USB設(shè)備6與外部USB設(shè)備5的對(duì)應(yīng)關(guān)系。建立設(shè)備對(duì)應(yīng)關(guān)系的流程如下客戶(hù)端設(shè)備管理模塊1首先把設(shè)備的狀態(tài)設(shè)置為可供使用,服務(wù)端設(shè)備管理模塊3通過(guò)向客戶(hù)端設(shè)備管理模塊1發(fā)送設(shè)備查詢(xún)數(shù)據(jù)包,客戶(hù)端設(shè)備管理模塊1向服務(wù)端設(shè)備管理模塊3返回?cái)?shù)據(jù)包,服務(wù)端設(shè)備管理模塊3獲知可以使用的外設(shè)。若虛擬服務(wù)端向操作系統(tǒng)發(fā)出插入該可使用的外設(shè)的命令,服務(wù)端設(shè)備管理模塊3將向客戶(hù)端設(shè)備管理模塊1發(fā)送請(qǐng)求相關(guān)USB 設(shè)備的基本信息,客戶(hù)端設(shè)備管理模塊1將按照系統(tǒng)請(qǐng)求的要求格式返回建立虛擬設(shè)備所需的信息,服務(wù)端設(shè)備管理模塊3收到返回信息后,解析數(shù)據(jù)包,轉(zhuǎn)發(fā)虛擬總線接口驅(qū)動(dòng)模塊4中的客戶(hù)端USB狀態(tài)監(jiān)控模塊21,提示虛擬USB已經(jīng)被綁定,可以使用。過(guò)濾驅(qū)動(dòng)模塊2充當(dāng)USB設(shè)備的客戶(hù)端驅(qū)動(dòng)程序,負(fù)責(zé)監(jiān)控客戶(hù)端外部USB設(shè)備5 的操作動(dòng)作,封裝請(qǐng)求命令發(fā)送給服務(wù)端的虛擬總線接口驅(qū)動(dòng)模塊4,接收并解析從服務(wù)端虛擬總線接口驅(qū)動(dòng)模塊4發(fā)送的系統(tǒng)請(qǐng)求包、再重裝成為外設(shè)請(qǐng)求命令發(fā)送給外部USB設(shè)備5。實(shí)現(xiàn)了把本地的USB設(shè)備無(wú)縫的映射到服務(wù)端。虛擬總線接口驅(qū)動(dòng)模塊4負(fù)責(zé)建立對(duì)應(yīng)外部USB設(shè)備5的虛擬USB設(shè)備6 ;把服務(wù)端操作系統(tǒng)應(yīng)用層對(duì)虛擬USB設(shè)備6的I/O請(qǐng)求封裝成系統(tǒng)請(qǐng)求,通過(guò)網(wǎng)絡(luò)發(fā)送給過(guò)濾驅(qū)動(dòng)模塊2 ;解析接收到處理數(shù)據(jù),經(jīng)過(guò)拆包、解析、提取后將真實(shí)的數(shù)據(jù)傳遞到操作系統(tǒng)
應(yīng)用層。下面舉例說(shuō)明過(guò)濾驅(qū)動(dòng)模塊2和虛擬總線接口驅(qū)動(dòng)模塊4的具體實(shí)現(xiàn)方式。從圖1可以看出,過(guò)濾驅(qū)動(dòng)模塊2包括客戶(hù)端USB狀態(tài)監(jiān)控模塊21、客戶(hù)端數(shù)據(jù)包處理模塊22、客戶(hù)端接收模塊23、客戶(hù)端發(fā)送模塊M和客戶(hù)端讀寫(xiě)線程管理模塊25??蛻?hù)端USB狀態(tài)監(jiān)控模塊21用于實(shí)時(shí)監(jiān)控外部USB設(shè)備5的狀態(tài),實(shí)現(xiàn)對(duì)設(shè)備熱插拔的需求;綁定客戶(hù)端USB設(shè)備,即往綁定文件中寫(xiě)入該USB設(shè)備的接口編號(hào);與客戶(hù)端設(shè)備管理模塊1進(jìn)行通信,接收從客戶(hù)端管理模塊發(fā)送的查詢(xún)指令,解析命令,并按查詢(xún)要求返回結(jié)果??蛻?hù)端接收模塊23用于接收從虛擬總線接口驅(qū)動(dòng)模塊4中的服務(wù)端發(fā)送模塊42發(fā)送的數(shù)據(jù)包,并將接收的數(shù)據(jù)包傳遞給客戶(hù)端數(shù)據(jù)包處理模塊22 ;數(shù)據(jù)包中包含的是對(duì)USB設(shè)備訪問(wèn)的控制信息和數(shù)據(jù)信息??蛻?hù)端發(fā)送模塊M用于發(fā)送從客戶(hù)端數(shù)據(jù)包處理模塊22傳遞來(lái)的數(shù)據(jù)包,并將其發(fā)送給虛擬總線接口驅(qū)動(dòng)模塊4;數(shù)據(jù)包中包含的是對(duì)USB設(shè)備訪問(wèn)的控制信息和數(shù)據(jù) fn息ο客戶(hù)端數(shù)據(jù)包處理模塊22用于接收來(lái)自于客戶(hù)端接收模塊23的USB請(qǐng)求數(shù)據(jù)包 (IPURB),經(jīng)過(guò)拆包、解析、提取真實(shí)請(qǐng)求命令包結(jié)構(gòu)體傳送給客戶(hù)端讀寫(xiě)線程管理模塊25 ; 接收從客戶(hù)端讀寫(xiě)線程管理模塊25返回的數(shù)據(jù)包,經(jīng)過(guò)封裝成USB數(shù)據(jù)包(IPURB),傳遞給客戶(hù)端發(fā)送模塊M??蛻?hù)端讀寫(xiě)線程管理模塊25用于接收從客戶(hù)端數(shù)據(jù)包處理模塊22傳遞的對(duì)外部 USB設(shè)備5進(jìn)行訪問(wèn)的請(qǐng)求,根據(jù)請(qǐng)求量動(dòng)態(tài)的創(chuàng)建或殺死讀寫(xiě)線程,實(shí)現(xiàn)對(duì)真實(shí)的USB設(shè)備進(jìn)行讀寫(xiě)控制;向客戶(hù)端數(shù)據(jù)包處理模塊22傳遞讀寫(xiě)外部USB設(shè)備5所得到的數(shù)據(jù)。
從圖1可以看出,虛擬總線接口驅(qū)動(dòng)模塊4包括服務(wù)端USB狀態(tài)監(jiān)控模塊41、服務(wù)端接收模塊43、服務(wù)端發(fā)送模塊42、服務(wù)端數(shù)據(jù)包處理模塊44、服務(wù)端讀寫(xiě)線程管理模塊 46和串行化模塊45。服務(wù)端USB狀態(tài)監(jiān)控模塊41負(fù)責(zé)實(shí)時(shí)監(jiān)控虛擬USB設(shè)備6的狀態(tài),在虛擬服務(wù)端實(shí)現(xiàn)對(duì)設(shè)備的插拔;與服務(wù)端設(shè)備管理模塊3進(jìn)行通信,接收從操作系統(tǒng)應(yīng)用層發(fā)送的查詢(xún)命令,并傳遞給服務(wù)端管理模塊。接收從服務(wù)端設(shè)備管理模塊3返回的查詢(xún)結(jié)果,并返回給操作系統(tǒng)應(yīng)用層。服務(wù)端接收模塊43用于接收從桌面客戶(hù)端過(guò)濾驅(qū)動(dòng)模塊2中的客戶(hù)端發(fā)送模塊 24發(fā)送的數(shù)據(jù)包,并將接收的數(shù)據(jù)包傳遞給服務(wù)端數(shù)據(jù)包處理模塊44 ;數(shù)據(jù)包中包含的是對(duì)USB設(shè)備訪問(wèn)的控制信息和數(shù)據(jù)信息。服務(wù)端發(fā)送模塊42負(fù)責(zé)發(fā)送從服務(wù)端數(shù)據(jù)包處理模塊44傳遞來(lái)的數(shù)據(jù)包,并將其發(fā)送給客戶(hù)端接收模塊23 ;數(shù)據(jù)包中包含的是對(duì)USB設(shè)備訪問(wèn)的控制信息和數(shù)據(jù)信息。服務(wù)端數(shù)據(jù)包處理模塊44用于接收來(lái)自服務(wù)端接收模塊43的數(shù)據(jù)包,經(jīng)過(guò)拆包、 解析、提取數(shù)據(jù)包傳遞給服務(wù)端讀寫(xiě)線程管理模塊46 ;接收從服務(wù)端讀寫(xiě)線程管理模塊46 返回的數(shù)據(jù)包,經(jīng)過(guò)封裝成USB請(qǐng)求數(shù)據(jù)包(IPURB),傳遞給服務(wù)端發(fā)送模塊42。服務(wù)端讀寫(xiě)線程管理模塊46用于接收從服務(wù)端數(shù)據(jù)包處理模塊44傳遞的對(duì)USB 設(shè)備進(jìn)行訪問(wèn)的數(shù)據(jù)包,根據(jù)請(qǐng)求量動(dòng)態(tài)的創(chuàng)建或殺死線程,向操作系統(tǒng)應(yīng)用層傳遞被請(qǐng)求的數(shù)據(jù)。串行化模塊45用于接收來(lái)自操作系統(tǒng)應(yīng)用層對(duì)虛擬USB設(shè)備6的讀寫(xiě)請(qǐng)求包,并將請(qǐng)求包進(jìn)行串行化,以對(duì)讀寫(xiě)請(qǐng)求進(jìn)行排序,對(duì)數(shù)據(jù)包進(jìn)行合并操作以加快讀寫(xiě)速度,保證各種傳輸速度方式下的串行化傳輸。虛擬總線接口驅(qū)動(dòng)模塊4的作用是建立對(duì)應(yīng)的虛擬USB設(shè)備6,并進(jìn)行相關(guān)數(shù)據(jù)的處理。虛擬總線接口驅(qū)動(dòng)模塊4中的服務(wù)端USB狀態(tài)監(jiān)控模塊41接收到從服務(wù)端設(shè)備管理模塊3中傳遞來(lái)的真實(shí)USB相關(guān)信息后,告知操作系統(tǒng)即插即用管理器虛擬設(shè)備插入事件,操作系統(tǒng)中的即插即用管理器根據(jù)虛擬設(shè)備的相關(guān)信息為虛擬設(shè)備建立功能設(shè)備對(duì)象,然后即插即用管理器與功能設(shè)備對(duì)象相互配合完成加載虛擬設(shè)備的相關(guān)設(shè)備驅(qū)動(dòng)。在加載設(shè)備驅(qū)動(dòng)過(guò)程的同時(shí),操作系統(tǒng)中的即插即用管理器給服務(wù)端USB狀態(tài)監(jiān)控模塊41發(fā)送各種查詢(xún)命令,來(lái)完成虛擬設(shè)備的建立。當(dāng)虛擬設(shè)備的驅(qū)動(dòng)對(duì)象棧建立成功后,虛擬設(shè)備就會(huì)在虛擬服務(wù)端中顯示。虛擬服務(wù)端虛擬總線接口驅(qū)動(dòng)模塊4完成系統(tǒng)數(shù)據(jù)的收發(fā),是虛擬設(shè)備和外設(shè)通信通道。它收發(fā)信息的流程圖如圖2所示解析命令,判斷是接收數(shù)據(jù)還是發(fā)送數(shù)據(jù),如果是接收數(shù)據(jù)就要判斷是否異步,相關(guān)判斷后啟動(dòng)相關(guān)線程進(jìn)程處理。虛擬設(shè)備建立后,當(dāng)虛擬桌面用戶(hù)對(duì)虛擬USB設(shè)備6有I/O請(qǐng)求時(shí),程序會(huì)對(duì)設(shè)備發(fā)出I/O請(qǐng)求包,虛擬總線接口驅(qū)動(dòng)模塊4收到應(yīng)用層的請(qǐng)求包后對(duì)并發(fā)的I/O請(qǐng)求包進(jìn)行串行化;串行化完成后,加入待處理的設(shè)備請(qǐng)求隊(duì)列中,進(jìn)行排隊(duì),串行化后的I/O請(qǐng)求包轉(zhuǎn)化為系統(tǒng)請(qǐng)求包后傳遞給服務(wù)端數(shù)據(jù)包處理模塊44,經(jīng)過(guò)對(duì)請(qǐng)求包的封裝后,傳遞給服務(wù)端發(fā)送模塊42,并發(fā)送給客戶(hù)端接收模塊23,等待桌面客戶(hù)端完成用戶(hù)對(duì)外部USB設(shè)備5的I/O請(qǐng)求的操作。桌面客戶(hù)端的過(guò)濾驅(qū)動(dòng)模塊2中客戶(hù)端接收模塊23接收到請(qǐng)求數(shù)據(jù)包后,傳遞給客戶(hù)端數(shù)據(jù)包處理模塊22,對(duì)該請(qǐng)求進(jìn)行處理,經(jīng)過(guò)拆包、解析、提取對(duì)設(shè)備的命令請(qǐng)求數(shù)據(jù)并傳遞給客戶(hù)端讀寫(xiě)線程管理模塊25??蛻?hù)端讀寫(xiě)線程管理模塊25啟動(dòng)讀寫(xiě)線程,向操作系統(tǒng)請(qǐng)求I/O操作。USB設(shè)備完成I/O操作后,操作系統(tǒng)向過(guò)濾驅(qū)動(dòng)模塊2中的客戶(hù)端讀寫(xiě)線程管理模塊25返回?cái)?shù)據(jù)結(jié)果,傳遞給客戶(hù)端數(shù)據(jù)包處理模塊22并封裝成網(wǎng)絡(luò)數(shù)據(jù)包返回用戶(hù)空間的客戶(hù)端發(fā)送模塊M,最后發(fā)送到虛擬服務(wù)端的虛擬總線接口驅(qū)動(dòng)中的服務(wù)端接收模塊43。服務(wù)端接受模塊傳遞數(shù)據(jù)包至服務(wù)端數(shù)據(jù)包處理模塊 44,經(jīng)過(guò)拆包、解析、提取數(shù)據(jù),傳遞給服務(wù)端讀寫(xiě)線程管理模塊46,啟動(dòng)讀寫(xiě)線程會(huì)根據(jù)實(shí)例編號(hào)找到相應(yīng)的物理設(shè)備對(duì)象,并把相關(guān)的數(shù)據(jù)發(fā)送到操作系統(tǒng)層等待完成I/O請(qǐng)求。整個(gè)系統(tǒng)工作流程如圖3、4所示1、桌面客戶(hù)端加載過(guò)濾驅(qū)動(dòng),并建立網(wǎng)絡(luò)連接套接字;虛擬服務(wù)端加載虛擬外設(shè)驅(qū)動(dòng),并等待用戶(hù)的操作命令。2、在桌面客戶(hù)端用戶(hù)進(jìn)行設(shè)備查詢(xún)操作,在界面的工作區(qū)將列舉出出客戶(hù)端的所有USB設(shè)備。3、根據(jù)設(shè)備列表,按需選擇特定設(shè)備進(jìn)行綁定操作,這時(shí),虛擬桌面系統(tǒng)清楚地看到綁定后真實(shí)設(shè)備,并進(jìn)一步等待接收虛擬服務(wù)端的命令。4、虛擬服務(wù)端用戶(hù)輸入操作命令,查詢(xún)可共享的設(shè)備列表,這時(shí)虛擬服務(wù)端給桌面客戶(hù)端發(fā)送一個(gè)網(wǎng)絡(luò)連接請(qǐng)求,經(jīng)過(guò)桌面客戶(hù)端認(rèn)證后,兩端建立網(wǎng)絡(luò)套接字連接。5、建立好連接后,虛擬服務(wù)端給桌面客戶(hù)端發(fā)送查詢(xún)?cè)O(shè)備列表請(qǐng)求。在桌面客戶(hù)端對(duì)接受到的命令進(jìn)行解析,并做相應(yīng)的處理后,給虛擬服務(wù)端返回設(shè)備列表結(jié)果。6、在虛擬服務(wù)端把返回設(shè)備列表結(jié)果進(jìn)行可視化顯示到界面,當(dāng)用戶(hù)輸入操作命令要求進(jìn)行共享,則給桌面客戶(hù)端發(fā)送共享設(shè)備的命令。而桌面客戶(hù)端接受到命令后,將往虛擬服務(wù)端返回共享設(shè)備的信息,如設(shè)備的總線編號(hào),配置值和接口值。7、虛擬服務(wù)端根據(jù)返回設(shè)備信息,由管理設(shè)備程序給本端的虛擬外設(shè)總線接口驅(qū)動(dòng)發(fā)送相關(guān)信息,再由虛擬外設(shè)總線接口驅(qū)動(dòng)配合操作系統(tǒng)的USB內(nèi)核層來(lái)完成虛擬設(shè)備的創(chuàng)立。本發(fā)明不僅局限于上述具體實(shí)施方式
,本領(lǐng)域一般技術(shù)人員根據(jù)本發(fā)明公開(kāi)的內(nèi)容,可以采用其它多種具體實(shí)施方式
實(shí)施本發(fā)明,因此,凡是采用本發(fā)明的設(shè)計(jì)結(jié)構(gòu)和思路,做一些簡(jiǎn)單的變化或更改的設(shè)計(jì),都落入本發(fā)明保護(hù)的范圍。
權(quán)利要求
1.一種虛擬桌面外部設(shè)備支持系統(tǒng),其特征在于,該系統(tǒng)包括位于桌面客戶(hù)端的過(guò)濾驅(qū)動(dòng)模塊( 和客戶(hù)端設(shè)備管理模塊(1),以及位于虛擬服務(wù)端的服務(wù)端設(shè)備管理模塊(3) 和虛擬總線接口驅(qū)動(dòng)模塊;客戶(hù)端設(shè)備管理模塊(1)和服務(wù)端設(shè)備管理模塊C3)用于實(shí)現(xiàn)虛擬USB設(shè)備與外部 USB設(shè)備的對(duì)應(yīng)關(guān)系;客戶(hù)端設(shè)備管理模塊(1)用于將桌面客戶(hù)端的USB設(shè)備共享出來(lái)提供給虛擬服務(wù)端使用,將USB設(shè)備從操作系統(tǒng)的驅(qū)動(dòng)模塊中卸載,然后綁定到系統(tǒng)的過(guò)濾驅(qū)動(dòng)模塊( ,完成對(duì)USB設(shè)備的綁定并進(jìn)行實(shí)時(shí)監(jiān)控USB設(shè)備的狀態(tài)轉(zhuǎn)化,同時(shí)負(fù)責(zé)與服務(wù)端設(shè)備管理模塊C3)進(jìn)行異步通信,交換外部USB設(shè)備的狀態(tài)數(shù)據(jù)包,以建立真實(shí)設(shè)備與虛擬設(shè)備的連接關(guān)系;服務(wù)端設(shè)備管理模塊C3)負(fù)責(zé)從虛擬總線接口驅(qū)動(dòng)模塊中獲取虛擬USB設(shè)備的狀態(tài),實(shí)時(shí)監(jiān)控虛擬服務(wù)端中的USB設(shè)備的狀態(tài)轉(zhuǎn)化,負(fù)責(zé)收發(fā)虛擬USB設(shè)備的狀態(tài)數(shù)據(jù)包,與桌面客戶(hù)端中的客戶(hù)端設(shè)備管理模塊(1)進(jìn)行通信,保持虛擬設(shè)備與桌面客戶(hù)端的真實(shí)USB狀態(tài)的一致性,建立真實(shí)設(shè)備與虛擬設(shè)備的連接關(guān)系;過(guò)濾驅(qū)動(dòng)模塊( 充當(dāng)USB設(shè)備的客戶(hù)端驅(qū)動(dòng)程序,負(fù)責(zé)監(jiān)控客戶(hù)端外部USB設(shè)備的操作動(dòng)作,封裝請(qǐng)求命令發(fā)送給服務(wù)端的虛擬總線接口驅(qū)動(dòng)模塊,接收并解析從服務(wù)端虛擬總線接口驅(qū)動(dòng)模塊(4)發(fā)送的系統(tǒng)請(qǐng)求包、再重裝成為外設(shè)請(qǐng)求命令發(fā)送給外部USB 設(shè)備;實(shí)現(xiàn)將本地的USB設(shè)備無(wú)縫的映射到服務(wù)端;虛擬總線接口驅(qū)動(dòng)模塊(4)負(fù)責(zé)建立對(duì)應(yīng)外部USB設(shè)備的虛擬USB設(shè)備;把服務(wù)端操作系統(tǒng)應(yīng)用層對(duì)虛擬USB設(shè)備的I/O請(qǐng)求封裝成系統(tǒng)請(qǐng)求,通過(guò)網(wǎng)絡(luò)發(fā)送給過(guò)濾驅(qū)動(dòng)模塊 (2);解析接收到處理數(shù)據(jù),經(jīng)過(guò)拆包、解析、提取后將真實(shí)的數(shù)據(jù)傳遞到操作系統(tǒng)應(yīng)用層。
2.根據(jù)權(quán)利要求1所述的虛擬桌面外部設(shè)備支持系統(tǒng),其特征在于,過(guò)濾驅(qū)動(dòng)模塊( 包括客戶(hù)端USB狀態(tài)監(jiān)控模塊(21)、客戶(hù)端數(shù)據(jù)包處理模塊(22)、 客戶(hù)端接收模塊(23)、客戶(hù)端發(fā)送模塊04)和客戶(hù)端讀寫(xiě)線程管理模塊05);客戶(hù)端USB狀態(tài)監(jiān)控模塊用于實(shí)時(shí)監(jiān)控外部USB設(shè)備的狀態(tài),實(shí)現(xiàn)對(duì)設(shè)備熱插拔的需求;與客戶(hù)端設(shè)備管理模塊(1)進(jìn)行通信,接收從客戶(hù)端管理模塊發(fā)送的查詢(xún)指令,解析命令,并按查詢(xún)要求返回結(jié)果;客戶(hù)端接收模塊03)用于接收從虛擬總線接口驅(qū)動(dòng)模塊(4)發(fā)送的數(shù)據(jù)包,并將接收的數(shù)據(jù)包傳遞給客戶(hù)端數(shù)據(jù)包處理模塊02);客戶(hù)端發(fā)送模塊04)用于發(fā)送從客戶(hù)端數(shù)據(jù)包處理模塊0 傳遞來(lái)的數(shù)據(jù)包,并將其發(fā)送給虛擬總線接口驅(qū)動(dòng)模塊(4);客戶(hù)端數(shù)據(jù)包處理模塊0 用于接收來(lái)自于客戶(hù)端接收模塊的USB請(qǐng)求數(shù)據(jù)包,經(jīng)過(guò)拆包、解析、提取真實(shí)請(qǐng)求命令包結(jié)構(gòu)體傳送給客戶(hù)端讀寫(xiě)線程管理模塊05);接收從客戶(hù)端讀寫(xiě)線程管理模塊0 返回的數(shù)據(jù)包,經(jīng)過(guò)封裝成USB數(shù)據(jù)包,傳遞給客戶(hù)端發(fā)送模塊(24);客戶(hù)端讀寫(xiě)線程管理模塊0 用于接收從客戶(hù)端數(shù)據(jù)包處理模塊0 傳遞的對(duì)外部 USB設(shè)備進(jìn)行訪問(wèn)的請(qǐng)求,根據(jù)請(qǐng)求量動(dòng)態(tài)的創(chuàng)建或殺死讀寫(xiě)線程,實(shí)現(xiàn)對(duì)真實(shí)的USB設(shè)備進(jìn)行讀寫(xiě)控制;向客戶(hù)端數(shù)據(jù)包處理模塊0 傳遞讀寫(xiě)外部USB設(shè)備所得到的數(shù)據(jù)。
3.根據(jù)權(quán)利要求1或2所述的虛擬桌面外部設(shè)備支持系統(tǒng),其特征在于,虛擬總線接口驅(qū)動(dòng)模塊(4)包括服務(wù)端USB狀態(tài)監(jiān)控模塊(41)、服務(wù)端接收模塊 (43)、服務(wù)端發(fā)送模塊(42)、服務(wù)端數(shù)據(jù)包處理模塊(44)、服務(wù)端讀寫(xiě)線程管理模塊06)和串行化模塊(45);服務(wù)端USB狀態(tài)監(jiān)控模塊負(fù)責(zé)實(shí)時(shí)監(jiān)控虛擬USB設(shè)備的狀態(tài),在虛擬服務(wù)端實(shí)現(xiàn)對(duì)設(shè)備的插拔;與服務(wù)端設(shè)備管理模塊C3)進(jìn)行通信,接收從操作系統(tǒng)應(yīng)用層發(fā)送的查詢(xún)命令,并傳遞給服務(wù)端管理模塊;接收從服務(wù)端設(shè)備管理模塊C3)返回的查詢(xún)結(jié)果,并返回給操作系統(tǒng)應(yīng)用層;服務(wù)端接收模塊^幻用于接收從桌面客戶(hù)端過(guò)濾驅(qū)動(dòng)模塊O)中的客戶(hù)端發(fā)送模塊 (24)發(fā)送的數(shù)據(jù)包,并將接收的數(shù)據(jù)包傳遞給服務(wù)端數(shù)據(jù)包處理模塊G4);服務(wù)端發(fā)送模塊0 負(fù)責(zé)發(fā)送從服務(wù)端數(shù)據(jù)包處理模塊G4)傳遞來(lái)的數(shù)據(jù)包,并將其發(fā)送給客戶(hù)端接收模塊03);服務(wù)端數(shù)據(jù)包處理模塊G4)用于接收來(lái)自服務(wù)端接收模塊的數(shù)據(jù)包,經(jīng)過(guò)拆包、 解析、提取數(shù)據(jù)包傳遞給服務(wù)端讀寫(xiě)線程管理模塊G6);接收從服務(wù)端讀寫(xiě)線程管理模塊 (46)返回的數(shù)據(jù)包,經(jīng)過(guò)封裝成USB請(qǐng)求數(shù)據(jù)包,傳遞給服務(wù)端發(fā)送模塊02);服務(wù)端讀寫(xiě)線程管理模塊(46)用于接收從服務(wù)端數(shù)據(jù)包處理模塊G4)傳遞的對(duì)USB 設(shè)備進(jìn)行訪問(wèn)的數(shù)據(jù)包,根據(jù)請(qǐng)求量動(dòng)態(tài)的創(chuàng)建或殺死線程,向操作系統(tǒng)應(yīng)用層傳遞被請(qǐng)求的數(shù)據(jù);串行化模塊G5)用于接收來(lái)自操作系統(tǒng)應(yīng)用層對(duì)虛擬USB設(shè)備的讀寫(xiě)請(qǐng)求包,并將請(qǐng)求包進(jìn)行串行化,以對(duì)讀寫(xiě)請(qǐng)求進(jìn)行排序,對(duì)數(shù)據(jù)包進(jìn)行合并操作以加快讀寫(xiě)速度,保證各種傳輸速度方式下的串行化傳輸。
全文摘要
本發(fā)明公開(kāi)了一種虛擬桌面外部設(shè)備支持系統(tǒng),包括過(guò)濾驅(qū)動(dòng)模塊、客戶(hù)端設(shè)備管理模塊、服務(wù)端設(shè)備管理模塊和虛擬總線接口驅(qū)動(dòng)模塊;虛擬外設(shè)總線接口驅(qū)動(dòng)負(fù)責(zé)根據(jù)共享的真實(shí)設(shè)備在虛擬環(huán)境下建立虛擬設(shè)備,并把對(duì)虛擬設(shè)備操作的命令封裝成網(wǎng)絡(luò)請(qǐng)求包,通過(guò)傳輸接口轉(zhuǎn)發(fā)給桌面客戶(hù)端。過(guò)濾驅(qū)動(dòng)模塊的功能是獲取虛擬外設(shè)總線接口驅(qū)動(dòng)模塊轉(zhuǎn)發(fā)的數(shù)據(jù),并進(jìn)行命令解析,根據(jù)命令控制本機(jī)物理設(shè)備??蛻?hù)端設(shè)備管理模塊和服務(wù)端設(shè)備管理模塊負(fù)責(zé)建立桌面客戶(hù)端與虛擬服務(wù)端的連接,協(xié)調(diào)虛擬設(shè)備與真實(shí)設(shè)備的數(shù)據(jù)收發(fā),并提供通道進(jìn)行用戶(hù)態(tài)與內(nèi)核的數(shù)據(jù)通信。本發(fā)明將虛擬桌面的虛擬設(shè)備和本地物理設(shè)備接口之間的差異完全隱藏在主機(jī)控制驅(qū)動(dòng)層。
文檔編號(hào)H04L29/06GK102270186SQ20111020486
公開(kāi)日2011年12月7日 申請(qǐng)日期2011年7月21日 優(yōu)先權(quán)日2011年7月21日
發(fā)明者周曄, 廖小飛, 謝曉, 金海 申請(qǐng)人:華中科技大學(xué)