一種外部設備的遠端共享系統(tǒng)的制作方法
【專利摘要】本發(fā)明屬于設備共享的技術領域,具體涉及一種外部設備的遠端共享系統(tǒng);解決的技術問題為:提供一種能在遠端讀取本地外設的外部設備的遠端共享系統(tǒng);采用的技術方案為:一種外部設備的遠端共享系統(tǒng),包括用于插入外部設備的服務端和用于分享外部設備的客戶端,所述服務端包括:過濾驅動:用于實現(xiàn)外部設備與服務端APP之間的數(shù)據(jù)交互;服務端APP:用于實現(xiàn)服務端和客戶端之間的數(shù)據(jù)交互;所述客戶端包括:客戶端APP:與服務端APP通信連接,用于實現(xiàn)服務端和客戶端之間的數(shù)據(jù)交互;虛擬主機控制器:用于實現(xiàn)客戶端APP與客戶端操作系統(tǒng)之間的數(shù)據(jù)交互;本發(fā)明適用于設備共享領域。
【專利說明】
一種外部設備的遠端共享系統(tǒng)
技術領域
[0001]本發(fā)明屬于設備共享的技術領域,具體涉及一種外部設備的遠端共享系統(tǒng)。
【背景技術】
[0002]隨著計算機外設的不斷增加,許多情況下需要通過網(wǎng)絡共享某種USB設備,例如密匙key,證書key等,而且隨著云計算的推廣發(fā)展,迫切需要在遠端的云桌面上操作本地外設(如打印機,攝像頭,U盤),讀取本地外設上的數(shù)據(jù),以供進一步處理。
【發(fā)明內(nèi)容】
[0003]本發(fā)明克服現(xiàn)有技術存在的不足,所要解決的技術問題為:提供一種能在遠端讀取本地外設的外部設備的遠端共享系統(tǒng)。
[0004]為了解決上述技術問題,本發(fā)明采用的技術方案為:一種外部設備的遠端共享系統(tǒng),包括用于插入外部設備的服務端和用于分享外部設備的客戶端,所述服務端包括:過濾驅動:用于實現(xiàn)外部設備與服務端APP(112)之間的數(shù)據(jù)交互;服務端APP:用于實現(xiàn)服務端和客戶端之間的數(shù)據(jù)交互;所述客戶端包括:客戶端APP:與服務端APP通信連接,用于實現(xiàn)服務端和客戶端之間的數(shù)據(jù)交互;虛擬主機控制器:用于實現(xiàn)客戶端APP與客戶端操作系統(tǒng)之間的數(shù)據(jù)交互。
[0005]優(yōu)選地,所述過濾驅動包括:監(jiān)控模塊:用于監(jiān)控外部設備的插拔動作;第一通訊模塊:用于當有外部設備插入時,將插入信號通過所述服務端APP傳遞給所述客戶端APPJi收所述客戶端APP傳送給所述服務端APP的客戶端操作系統(tǒng)決定讀寫信號和讀寫命令,將上述決定讀寫信號和讀寫命令傳送給第一處理模塊,將第一處理模塊返回的外部設備的設備信息和設備數(shù)據(jù)通過所述服務端APP傳遞給所述客戶端APP;第一處理模塊:用于當接收到?jīng)Q定讀寫信號后對外部設備進行攔截、并讀取外部設備的設備信息,當接收到讀寫命令后讀取外部設備的設備數(shù)據(jù),將上述設備信息和設備數(shù)據(jù)回傳給所述第一通訊模塊。
[0006]優(yōu)選地,所述過濾驅動還包括:第一插入模塊:用于將所述過濾驅動插入所述服務端的驅動程序棧中。
[0007]優(yōu)選地,所述虛擬主機控制器包括:第二通訊模塊:用于接收所述客戶端APP傳送來的外部設備插入信號,將該插入信號傳遞給客戶端操作系統(tǒng),將所述客戶端操作系統(tǒng)的決定讀寫信號和讀寫命令發(fā)送給所述客戶端APP,接收所述客戶端APP傳送來的外部設備的設備信息和設備數(shù)據(jù),將上述設備信息和設備數(shù)據(jù)發(fā)送給第二處理模塊;第二處理模塊:用于接收到外部設備的設備信息后,建立與外部設備一一對應的虛擬設備,接收到外部設備的設備數(shù)據(jù)后,將該設備數(shù)據(jù)發(fā)送給客戶端操作系統(tǒng)。
[0008]優(yōu)選地,所述第二處理模塊包括:接收單元:用于接收外部設備的設備信息和設備數(shù)據(jù);設備列表存儲單元:用于存儲設備列表;刷新單元:用于接收到外部設備的設備信息后,刷新所述設備列表,建立與外部設備一一對應的虛擬設備;發(fā)送單元:用于將外部設備的設備數(shù)據(jù)發(fā)送給客戶端操作系統(tǒng)。
[0009]本發(fā)明與現(xiàn)有技術相比具有以下有益效果:本發(fā)明中的系統(tǒng)從功能上可分為兩部分,服務端和客戶端,通過服務端的過濾驅動和客戶端的虛擬主機控制器將服務端的外部設部映射為客戶端的虛擬設備,在客戶端的操作系統(tǒng)就像使用本地設備一樣使用遠程的外部設備。
【附圖說明】
[0010]下面結合附圖對本發(fā)明做進一步詳細的說明;
[0011]圖1為本發(fā)明實施例一提供的一種外部設備的遠端共享系統(tǒng)的結構示意圖;
[0012]圖2為本發(fā)明實施例一提供的一種外部設備的遠端共享方法的流程示意圖;
[0013]圖中:11為服務端,111為過濾驅動,112為服務端APP,1111為監(jiān)控模塊,1112為第一通訊模塊,1113為第一處理模塊,1114為第一插入模塊,121為客戶端APP,122為虛擬主機控制器,1221為第二通訊模塊,1222為第二處理模塊,12221為接收單元,12222為設備列表存儲單元,12223為刷新單元,12224為發(fā)送單元。
【具體實施方式】
[0014]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明的一部分實施例,而不是全部的實施例;基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0015]圖1為本發(fā)明實施例一提供的一種外部設備的遠端共享系統(tǒng)的結構示意圖,入土I所示,一種外部設備的遠端共享系統(tǒng),包括用于插入外部設備的服務端11和用于分享外部設備的客戶端12。
[0016]所述服務端11包括:
[0017]過濾驅動111:用于實現(xiàn)外部設備與服務端APP112之間的數(shù)據(jù)交互。
[0018]服務端APP112:用于實現(xiàn)服務端11和客戶端12之間的數(shù)據(jù)交互。
[0019]所述客戶端12包括:
[0020]客戶端APP121:與服務端APP112通信連接,用于實現(xiàn)服務端11和客戶端12之間的數(shù)據(jù)交互。
[0021]虛擬主機控制器122:用于實現(xiàn)客戶端APP121與客戶端操作系統(tǒng)之間的數(shù)據(jù)交互。
[0022]進一步地,所述過濾驅動111包括:
[0023]監(jiān)控模塊1111:用于監(jiān)控外部設備的插拔動作。
[0024]第一通訊模塊1112:用于當有外部設備插入時,將插入信號通過所述服務端APPl 12傳遞給所述客戶端APP121,接收所述客戶端APP121傳送給所述服務端APPl 12的客戶端操作系統(tǒng)決定讀寫信號和讀寫命令,將上述決定讀寫信號和讀寫命令傳送給第一處理模塊1113,將第一處理模塊1113返回的外部設備的設備信息和設備數(shù)據(jù)通過所述服務端八?卩112傳遞給所述客戶端4??121。
[0025]第一處理模塊1113:用于當接收到?jīng)Q定讀寫信號后對外部設備進行攔截、并讀取外部設備的設備信息,當接收到讀寫命令后讀取外部設備的設備數(shù)據(jù),將上述設備信息和設備數(shù)據(jù)回傳給所述第一通訊模塊1112。
[0026]進一步地,所述過濾驅動111還包括:
[0027]第一插入模塊1114:用于將所述過濾驅動111插入所述服務端11的驅動程序棧中。
[0028]進一步地,所述虛擬主機控制器122包括:
[0029]第二通訊模塊1221:用于接收所述客戶端APP121傳送來的外部設備插入信號,將該插入信號傳遞給客戶端操作系統(tǒng),將所述客戶端操作系統(tǒng)的決定讀寫信號和讀寫命令發(fā)送給所述客戶端APP121,接收所述客戶端APP121傳送來的外部設備的設備信息和設備數(shù)據(jù),將上述設備信息和設備數(shù)據(jù)發(fā)送給第二處理模塊1222。
[0030]第二處理模塊1222:用于接收到外部設備的設備信息后,建立與外部設備一一對應的虛擬設備,接收到外部設備的設備數(shù)據(jù)后,將該設備數(shù)據(jù)發(fā)送給客戶端操作系統(tǒng)。
[0031]進一步地,所述第二處理模塊1222包括:
[0032]接收單元12221:用于接收外部設備的設備信息和設備數(shù)據(jù)。
[0033]設備列表存儲單元12222:用于存儲設備列表。
[0034]刷新單元12223:用于接收到外部設備的設備信息后,刷新所述設備列表,建立與外部設備對應的虛擬設備。
[0035]發(fā)送單元12224:用于將外部設備的設備數(shù)據(jù)發(fā)送給客戶端操作系統(tǒng)。
[0036]圖2為本發(fā)明實施例一提供的一種外部設備的遠端共享方法的流程示意圖,如圖2所示,一種外部設備的遠端共享方法,包括以下步驟:
[0037]S101、過濾驅動111實時監(jiān)控外部設備是否插入服務端11。
[0038]S102、如是,過濾驅動111通知客戶端操作系統(tǒng)。
[0039]S103、客戶端操作系統(tǒng)決定是否讀取外部設備。
[0040]S104、如是,客戶端操作系統(tǒng)將決定信號通知過濾驅動111。
[0041]S105、過濾驅動111攔截外部設備,并讀取外部設備的設備信息。
[0042]S106、過濾驅動111將設備信息發(fā)送給虛擬主機控制器122。
[0043]S107、虛擬主機控制器122建立虛擬設備。
[0044]S108、客戶端操作系統(tǒng)通過虛擬主機控制器122給過濾驅動111發(fā)送讀取外部設備數(shù)據(jù)的命令。
[0045]S109、過濾驅動111讀取外部設備的設備數(shù)據(jù),并回傳給虛擬主機控制器122。
[0046]S110、客戶端操作系統(tǒng)完成外部設備的數(shù)據(jù)讀取。
[0047]進一步地,步驟SlOl之前,還包括步驟:
[0048]在服務端11的驅動程序棧中插入過濾驅動111,在客戶端12的驅動棧中插入虛擬主機控制器122。
[0049 ] 將服務端APP112和客戶端APP121通過網(wǎng)絡進行連接。
[0050]具體地,所述將服務端APP112和客戶端APP121通過網(wǎng)絡進行連接,實質上是一個安全認證的流程,具體為:對服務端11的證書進行檢驗,客戶端12對證書進行認證的一個過程,以使客戶端12可以對服務端11的外部設備進行訪問。
[0051]更具體地,所述安全認證的流程為:服務器提供證書給客戶端12,客戶端12進行安全校驗,確認證書的有效,并從證書中取得公開密鑰,然后生成一對對話用的密鑰,并將其中公開密鑰,用服務器提供的公開密鑰加密后傳給服務器,服務器收到解密后,用于下面對話的加密,這樣每次會話密鑰均不同,安全性較高。然后客戶端12提供用戶名密碼給服務器,對客戶端12的身份進行認證。
[0052]進一步地,步驟S102具體包括:當過濾驅動111監(jiān)控到有外部設備插入服務端11,服務端操作系統(tǒng)先給外部設備安裝過濾驅動111,過濾驅動111將插入信號通過服務端八?卩112傳遞給客戶端4??121,客戶端4??121傳遞給虛擬主機控制器122,虛擬主機控制器122最后傳遞給客戶端操作系統(tǒng)。
[0053]進一步地,步驟S104具體包括:客戶端操作系統(tǒng)決定讀取外部設備后,將決定讀寫信號發(fā)送給虛擬主機控制器122,虛擬主機控制器122發(fā)送給客戶端APP121,客戶端APP121發(fā)送給服務端APP112,服務端APP112發(fā)送給過濾驅動111。
[0054]進一步地,步驟S106具體包括:過濾驅動111讀取外部設備的設備信息后,將該設備信息發(fā)送給服務端APP112,服務端APP112發(fā)送給客戶端APP121,客戶端APP121發(fā)送給虛擬主機控制器122。
[0055]進一步地,步驟S107具體包括:虛擬主機控制器122接收到外部設備的設備信息后,刷新所述設備列表,建立與外部設備一一對應的虛擬設備,客戶端操作系統(tǒng)給該虛擬設備安裝一個驅動。
[0056]進一步地,步驟S108具體包括:客戶端操作系統(tǒng)將讀取外部設備數(shù)據(jù)的命令發(fā)送給虛擬主機控制器122,虛擬主機控制器122—邊將讀寫命令掛起來,一邊將讀寫命令通過客戶端APPl 21傳遞給服務端APPl 12,服務端APP112又傳遞給過濾驅動111。
[0057]具體地,本步驟中的讀寫命令可為Irp請求,虛擬主機控制器122接到IRP請求后先掛起IRP請求,取得IRP請求的類型和數(shù)據(jù)后,轉化為能通過網(wǎng)絡傳輸?shù)膇usb協(xié)議發(fā)送給服務端11。
[0058]進一步地,步驟S109具體包括:過濾驅動111收到讀寫命令后,讀取外部設備的設備數(shù)據(jù),依次通過服務端APP112、客戶端APP121并,回傳給虛擬主機控制器122,虛擬主機控制器122收到設備數(shù)據(jù)后完成IRP請求,將完成后的IRP請求回傳給客戶端操作系統(tǒng)。
[0059]本實施例中的外部設備可為USB設備。
[0060]本實施例通過擴展可以用于多種總線設備的網(wǎng)絡共享,例如串口(RS232總線)、并口、SCSI總線設備等。
[0061]本實施例中,要實現(xiàn)將遠端外部設備映射到本地,就要將操作系統(tǒng)的URB(即USB請求塊)傳送到網(wǎng)絡上,本系統(tǒng)先將URB包轉化為iusb協(xié)議包,以隔離不同平臺實現(xiàn),經(jīng)過SSL協(xié)議加密,以保證數(shù)據(jù)的安全性,然后封裝為IP包,通過網(wǎng)絡發(fā)送給客戶端,客戶端收到數(shù)據(jù)后,經(jīng)過解密,得到iusb數(shù)據(jù)包,再傳給具體外部設備。iusb協(xié)議是usb協(xié)議的擴展,用于網(wǎng)絡傳送usb協(xié)議數(shù)據(jù),可以有效地隔離操作系統(tǒng)平臺的不同實現(xiàn),實現(xiàn)不同平臺(如Iinux和windows)、32位和64位系統(tǒng)之間的usb設備共享。
[0062]本實施例中,服務端11和客戶端12之間的通信是通過TCP連接來保證數(shù)據(jù)的完整性,同時iusb協(xié)議本身提供一些頭尾MagicNumber驗證,windows平臺的服務端11通過在驅動棧中插入過濾驅動,Iinux平臺的服務端11通過增加一個設備驅動,將自己的usb設備映射到客戶端12,而客戶端12則增加一個虛擬的主機控制器(VHCI)驅動,來完成虛擬設備,USB命令包的發(fā)送和反饋處理,其他無需改動。
[0063]當應用程序對設備要進行I/O訪問時,USB設備驅動將I/O請求轉換為一系列USB命令,然后將以URB的形式提交給USB⑶RE。對一種USB傳輸類型,USB只使用一個USB地址、一個端點地址來和設備通信。USB設備驅動不和硬件寄存器打交道,不會和USB主機控制器之際交互。USB⑶RE提供了一層對底層硬件的抽象,不管主機控制器是EHCI還是UHCI,USBCORE為其上層USB設備驅動提供' 統(tǒng)一的接口 URB,它是USB命令進行封裝的數(shù)據(jù)結構。URB的生命周期如下:1、由USB設備驅動創(chuàng)建;2、分配給指定USB地址的指定端點;3、由設備驅動提交給USB core ; 4、提交給USB主機控制器;5、經(jīng)主機控制器處理,傳遞給USB物理設備;6、URB處理完成后,USB主機控制器會通知USB設備驅動,此時URB結構中的compl ete回調函數(shù)被調用。USB主機控制器接受URB請求包再分割成更小、被稱為TD的數(shù)據(jù)包,TD對應于USBmicroframe。具體的I/O操作由主機控制器完成。
[0064]在客戶端不改動USB上層的設備驅動,在驅動底層增加一個虛擬的USB主機控制器(virtual USB host controller),該虛擬的主機控制器對應一個虛擬的主機控制器接口(VHCI ),該VHCI沒有H⑶物理硬件,只負責發(fā)送和監(jiān)聽網(wǎng)絡上傳送的IP包,這些IP包封裝有加密后iusb請求,通過IP封裝和解析,遠端USB請求包被映射到VHCI上來,在客戶的應用層看到的就是遠端USB設備似乎就插在本地的主機控制器上,只不過這個主機控制器是客戶虛擬出來的。VHCI的作用和物理上的主機控制器地位一樣,處于驅動的最底層,負責與設備直接通信,比如USB枚舉過程的設備請求命令(GET_DESCRIPTOR等)都是主機控制器之間送出去的。同樣VHCI也要完成這些工作,只不過這些命令是通過網(wǎng)絡發(fā)送出去的,除了發(fā)送VHCI還應該接受命令的返回結果,以及遠端設備插入時的網(wǎng)絡連接命令。
[0065]本實施例中,客戶端12連接上服務端11后,查詢服務端11的可共享USB列表,供用戶選擇,同時接收服務端11的usb設備插拔事件,隨時更新usb設備列表。一旦客戶重定向某usb設備,建立新的連接,然后在新TCP連接中通知服務端11重定向usb設備,此新的TCP連接專為該USB設備服務。同時根據(jù)服務端11返回的usb設備信息,在客戶端12通知USBBus驅動虛擬出相應USB設備,系統(tǒng)負責為該虛擬設備安裝驅動,此時用戶可以使用該設備了,用戶對該設備的所以操作都轉化為IRP請求,被USBBus驅動攔截,通過ReadFi Ie讀USBBus設備,從IRP中取得URB數(shù)據(jù),然后發(fā)給服務端11,等待服務端11返回處理結果,并同通過WriteFile寫入USBBus設備,USBBus驅動將得到的數(shù)據(jù)填入IRP,并完成IRP,這樣用戶就能夠像使用本地的usb設備一樣,使用服務端的共享USB設備了。
[0066]最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的范圍。
【主權項】
1.一種外部設備的遠端共享系統(tǒng),包括用于插入外部設備的服務端(11)和用于分享外部設備的客戶端(12),其特征在于: 所述服務端(11)包括: 過濾驅動(111):用于實現(xiàn)外部設備與服務端APP( 112)之間的數(shù)據(jù)交互; 服務端APP(112):用于實現(xiàn)服務端(11)和客戶端(12)之間的數(shù)據(jù)交互; 所述客戶端(12)包括: 客戶端APP(121):與服務端APP(112)通信連接,用于實現(xiàn)服務端(11)和客戶端(12)之間的數(shù)據(jù)交互; 虛擬主機控制器(122):用于實現(xiàn)客戶端APP(121)與客戶端操作系統(tǒng)之間的數(shù)據(jù)交互。2.根據(jù)權利要求1所述的一種外部設備的遠端共享系統(tǒng),其特征在于:所述過濾驅動(111)包括: 監(jiān)控模塊(1111):用于監(jiān)控外部設備的插拔動作; 第一通訊模塊(1112):用于當有外部設備插入時,將插入信號通過所述服務端APP(112)傳遞給所述客戶端APP(121),接收所述客戶端APP (121)傳送給所述服務端APP (112)的客戶端操作系統(tǒng)決定讀寫信號和讀寫命令,將上述決定讀寫信號和讀寫命令傳送給第一處理模塊(1113),將第一處理模塊(1113)返回的外部設備的設備信息和設備數(shù)據(jù)通過所述服務端APP (112)傳遞給所述客戶端APP (121); 第一處理模塊(1113):用于當接收到?jīng)Q定讀寫信號后對外部設備進行攔截、并讀取外部設備的設備信息,當接收到讀寫命令后讀取外部設備的設備數(shù)據(jù),將上述設備信息和設備數(shù)據(jù)回傳給所述第一通訊模塊(1112)。3.根據(jù)權利要求2所述的一種外部設備的遠端共享系統(tǒng),其特征在于:所述過濾驅動(111)還包括: 第一插入模塊(1114):用于將所述過濾驅動(111)插入所述服務端(11)的驅動程序棧中。4.根據(jù)權利要求2所述的一種外部設備的遠端共享系統(tǒng),其特征在于:所述虛擬主機控制器(122)包括: 第二通訊模塊(1221):用于接收所述客戶端APP(121)傳送來的外部設備插入信號,將該插入信號傳遞給客戶端操作系統(tǒng),將所述客戶端操作系統(tǒng)的決定讀寫信號和讀寫命令發(fā)送給所述客戶端APP(121),接收所述客戶端APP(121)傳送來的外部設備的設備信息和設備數(shù)據(jù),將上述設備信息和設備數(shù)據(jù)發(fā)送給第二處理模塊(1222); 第二處理模塊(1222):用于接收到外部設備的設備信息后,建立與外部設備一一對應的虛擬設備,接收到外部設備的設備數(shù)據(jù)后,將該設備數(shù)據(jù)發(fā)送給客戶端操作系統(tǒng)。5.根據(jù)權利要求4所述的一種外部設備的遠端共享系統(tǒng),其特征在于:所述第二處理模塊(1222)包括: 接收單元(12221):用于接收外部設備的設備信息和設備數(shù)據(jù); 設備列表存儲單元(12222):用于存儲設備列表; 刷新單元(12223):用于接收到外部設備的設備信息后,刷新所述設備列表,建立與外部設備 對應的虛擬設備; 發(fā)送單元(12224):用于將外部設備的設備數(shù)據(jù)發(fā)送給客戶端操作系統(tǒng)。
【文檔編號】G06F9/455GK105872096SQ201610388832
【公開日】2016年8月17日
【申請日】2016年6月2日
【發(fā)明人】葛春, 單康杰, 蔣偉, 楊承萱
【申請人】江蘇辰云信息科技有限公司