br>[0073]步驟S610,終端的USB驅動的USB設備類驅動層對該第一網絡包進行解封裝得到第一 URB ;
[0074]步驟S612,終端的USB驅動的USB設備類驅動層將第一 URB發(fā)送給終端的USB驅動的USB核心驅動層;
[0075]步驟S614,終端的USB驅動的USB核心驅動層將第一 URB發(fā)送給終端的USB驅動的USB主控驅動層;
[0076]步驟S616,終端的USB驅動的USB主控驅動層與USB設備進行交互,獲取攜帶有數(shù)據(jù)的第二 URB ;
[0077]步驟S618,終端的USB驅動的USB主控驅動層將攜帶有數(shù)據(jù)的第二 URB發(fā)送給終端的USB驅動的USB核心驅動層;
[0078]步驟S620,終端的USB驅動的USB核心驅動層將攜帶有數(shù)據(jù)的第二 URB發(fā)送給終端的USB驅動的USB設備類驅動層;
[0079]步驟S622,終端的USB驅動的USB設備類驅動層對該第二 URB進行封裝,生成第二網絡包;
[0080]步驟S624,終端的USB驅動的USB設備類驅動層將該第二網絡包發(fā)送給虛擬機的USB驅動的USB主控層;
[0081]步驟S626,虛擬機的USB驅動的USB主控層對該第二網絡包進行解封裝得到攜帶有數(shù)據(jù)的第二 URB ;
[0082]步驟S628,虛擬機的USB驅動的USB主控驅動層將攜帶有數(shù)據(jù)的第二 URB發(fā)送給虛擬機的USB驅動的USB核心驅動層;
[0083]步驟S630,虛擬機的USB驅動的USB核心驅動層將攜帶有數(shù)據(jù)的第二 URB發(fā)送給虛擬機的USB驅動的USB設備類驅動層;
[0084]步驟S632,虛擬機的USB驅動的USB設備類驅動層將攜帶有數(shù)據(jù)的第二 URB發(fā)送給應用程序;
[0085]步驟S634,應用程序得到請求的數(shù)據(jù),該交互過程完成。
[0086]使用本發(fā)明提供的USB設備映射、交互方法,當虛擬機用戶需要使用終端側的USB設備中的數(shù)據(jù)時,其業(yè)務流程可以具體包括:
[0087]步驟1:USB設備插入終端本地,本地U 口檢測程序就會檢測到USB插入事件,并讀取其VID、PID、CLASS等相關信息,將這些信息與本地配置文件進行比較,判斷該USB設備需不要進行映射。如果需要映射,就通過綁定應用程序綁定該USB設備,即:將為該USB設備加載的驅動的USB設備類驅動替換為USB設備映射驅動:stub驅動。
[0088]步驟2:U 口檢測程序將USB設備的端口信息通過虛擬機通信發(fā)送給虛擬機內USB映射管理程序。
[0089]步驟3:虛擬機內的USB映射管理程序收到本地綁定程序發(fā)過來的USB端口號之后,利用從虛擬機通道得來的本地IP地址和約定好的端口和本地等待映射輸出程序建立socket網絡通信。并將該USB端口號和獲取設備信息命令發(fā)給本地等待映射輸出程序。本地等待映射輸出程序收到該命令之后將對應USB端口的USB設備的設備信息發(fā)給虛擬機。虛擬機USB映射管理程序替換虛擬機內USB設備主控驅動替換為USB設備映射驅動:vhci驅動。
[0090]步驟4:虛擬機向終端本地以網絡包形式發(fā)送URB,URB通過兩層驅動到達了 vhci驅動,vhci驅動把URB包封裝成網絡包發(fā)給本地的stub驅動
[0091]步驟5:本地stub驅動得到網絡包封裝的URB之后,進行解封裝,把網絡包變回URB,并發(fā)給底層USB主控驅動。USB主控驅動和USB設備進行數(shù)據(jù)交互,并返回攜帶數(shù)據(jù)的URB給stub驅動。
[0092]步驟6:stub驅動將攜帶數(shù)據(jù)的URB封裝成網絡包發(fā)給虛擬機vhci驅動,vhci驅動進行解封裝之后發(fā)給上層驅動和應用程序。
[0093]本發(fā)明還提供了一種USB設備映射裝置,用于包括USB設備、云終端和云服務器的云系統(tǒng)中的云終端,所述USB設備與所述云終端連接,所述云服務器中包括至少一個虛擬機,所述映射裝置包括:第一獲取模塊,用于獲取所述USB設備的設備信息;第一加載模塊,用于根據(jù)所述設備信息,在云終端側為所述USB設備加載第一 USB驅動;第一發(fā)送模塊,用于通過虛擬專用通道,向與所述云終端對應的虛擬機發(fā)送鏈路創(chuàng)建請求,以使得所述虛擬機根據(jù)所述云終端的IP地址及預設的通信端口號創(chuàng)建與所述云終端的通信鏈路,所述鏈路創(chuàng)建請求中攜帶有與所述USB設備對應的USB端口號;第一接收模塊,用于接收所述虛擬機通過所述通信鏈路發(fā)送的攜帶有所述USB端口號的設備信息獲取請求;第二發(fā)送模塊,用于根據(jù)所述設備信息獲取請求,通過所述通信鏈路將與所述USB端口號對應的USB設備的設備信息發(fā)送給所述虛擬機,以使得所述虛擬機根據(jù)所述設備信息在虛擬機側為所述USB設備加載第二 USB驅動,所述第二 USB驅動通過所述通信鏈路與所述第一 USB驅動通信以訪問所述USB設備。
[0094]上述的USB設備映射裝置,其中,所述根據(jù)所述設備信息,在云終端側為所述USB設備加載第一 USB驅動之前,還包括:判定模塊,用于根據(jù)所述設備信息及預設的配置文件,判斷是否需要對所述USB設備進行映射;當所述判斷模塊判定需要對所述USB設備進行映射時,進入第一加載模塊。
[0095]上述的USB設備映射裝置,其中,所述第一 USB驅動及所述第二 USB驅動均包括:USB設備類驅動層、USB核心驅動層及USB主控驅動層;所述第二 USB驅動的USB主控驅動層通過所述通信鏈路與所述第一 USB驅動的USB設備類驅動層通信以訪問所述USB設備。
[0096]本發(fā)明還提供了一種USB設備交互裝置,用于包括USB設備、云終端和云服務器的云系統(tǒng)中的云終端,所述云服務器中包括至少一個虛擬機,所述USB設備與所述云終端連接,并通過如上所述的映射方法映射至與所述云終端對應的虛擬機,所述交互裝置包括:第二接收模塊,用于接收所述虛擬機發(fā)送的封裝有第一USB請求塊URB的第一網絡包;第一解析模塊,用于對所述第一網絡包進行解析,得到所述第一 URB ;第二獲取模塊,用于從所述USB設備中獲取攜帶有與所述第一 URB對應的數(shù)據(jù)的第二 URB ;第一封裝模塊,用于將所述第二 URB封裝為第二網絡包;第三發(fā)送模塊,用于將所述第二網絡包發(fā)送給所述虛擬機。
[0097]本發(fā)明還提供了一種云終端,包括如上所述的裝置。
[0098]本發(fā)明還提供了一種USB設備映射裝置,用于包括USB設備、云終端和云服務器的云系統(tǒng)中的云服務器,所述USB設備與所述云終端連接,所述云服務器中包括至少一個虛擬機,所述映射裝置包括:第三接收模塊,用于通過虛擬專用通道,接收所述云終端發(fā)送的鏈路創(chuàng)建請求,所述鏈路創(chuàng)建請求中攜帶有與所述USB設備對應的USB端口號;創(chuàng)建模塊,用于根據(jù)所述云終端的IP地址及預設的通信端口號創(chuàng)建與所述云終端的通信鏈路;第四發(fā)送模塊,用于通過所述通信鏈路向所述云終端發(fā)送設備信息獲取請求,所述設備信息獲取請求中攜帶有所述USB端口號,以獲取與所述USB端口號對應的USB設備的設備信息;第四接收模塊,用于通過所述通信鏈路接收所述云終端發(fā)送的所述USB設備的設備信息;第二加載模塊,用于根據(jù)所述設備信息為所述USB設備在虛擬機側加載第二 USB驅動,所述第二USB驅動通過所述通信鏈路與所述云終端在云終端側為所述USB設備加載的第一 USB驅動通信以訪問所述USB設備。
[0099]上述的USB設備映射裝置,其中,所述第一 USB驅動及所述第二 USB驅動均包括:USB設備類驅動層、USB核心驅動層及USB主控驅動層;所述第二 USB驅動的USB主控驅動層通過所述通信鏈路與所述第一 USB驅動的USB設備類驅動層通信以訪問所述USB設備。
[0100]本發(fā)明還提供了一種USB設備交互裝置,用于包括USB設備、云終端和云服務器的云系統(tǒng)中的云服務器,所述云服務器中包括至少一個虛擬機,所述USB設備與所述云終端連接,并通過如上所述的映射方法映射至與所述云終端對應的虛擬機,所述交互裝置包括:第二封裝模塊,用于將第一 USB請求塊URB封裝為第一網絡包;第五發(fā)送模塊,用于向所述云終端發(fā)送所述第一網絡包;第五接收模塊,用于接收云終端反饋的封裝有第二 URB的第二網絡包,所述第二 URB中攜帶有與所述第一 URB對應的數(shù)據(jù);第二解析模塊,用于對所述第二網絡包進行解析,獲取所述第二 URB中攜帶的數(shù)據(jù)。
[0101]本發(fā)明還提供了一種云服務器,包括如上所述的裝置。
[0102]以上所述是本發(fā)明的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明所述原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。
【主權項】
1.一種USB設備映射方法,其特征在于,用于包括USB設備、云終端和云服務器的云系統(tǒng)中的云終端,所述USB設備與所述云終端連接,所述云服務器中包括至少一個虛擬機,所述映射方法包括: 獲取所述USB設備的設備信息; 根據(jù)所述設備信息,在云終端側為所述USB設備加載第一 USB驅動; 通過虛擬專用通道,向與所述云終端對應的虛擬機發(fā)送鏈路創(chuàng)建請求,以使得所述虛擬機根據(jù)所述云終端的IP地址及預設的通信端口號創(chuàng)建與所述云終端的通信鏈路,所述鏈路創(chuàng)建請求中攜帶有與所述USB設備對應的USB端口號; 接收所述虛擬機通過所述通信鏈路發(fā)送的攜帶有所述USB端口號的設備信息獲取請求; 根