亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

重定向的方法、裝置和系統(tǒng)與流程

文檔序號:11276091閱讀:301來源:國知局
重定向的方法、裝置和系統(tǒng)與流程

本申請涉及虛擬機領(lǐng)域,特別涉及一種在虛擬桌面基礎(chǔ)架構(gòu)(英文:virtualdesktopinfrastructure,縮寫:vdi)場景下用于人機接口設備(英文:humaninterfacedevice,縮寫:hid)的重定向的方法、裝置和系統(tǒng)。



背景技術(shù):

虛擬桌面技術(shù)是目前企業(yè)辦公環(huán)境的一種流行技術(shù),其將運算和操作的執(zhí)行托管到了服務器,客戶設備在客戶設備只是實現(xiàn)桌面的顯示和捕獲用戶操作事件(如鍵盤、鼠標事件)。通過服務器的管理系統(tǒng)能夠?qū)崿F(xiàn)對內(nèi)存資源和中央處理器(英文:centralprocessingunit,縮寫:cpu)的按需調(diào)度,有效的提高了內(nèi)存資源和cpu的使用效率。同時,由于客戶設備只是實現(xiàn)顯示和捕獲用戶操作事件的功能,因此用戶可以在任意客戶設備上登錄服務器的同一臺虛擬機,實現(xiàn)在任意地點對虛擬機的有效使用,大大提高了使用的便捷性。

在虛擬桌面技術(shù)的使用中,存在大量使用hid的場景,例如對hid進行讀取操作。由于hid與客戶設備連接,而發(fā)起對hid的操作請求的虛擬機運行于服務器上,因此需要將服務器上生成的hid的操作請求重定向至客戶設備。在對hid進行重定向的過程中,需要將對hid的操作請求和從hid讀取的數(shù)據(jù)在客戶設備和服務器之間進行傳遞。現(xiàn)有技術(shù)中,服務器將hid的操作請求傳遞至客戶設備的過程中采用的方法對服務器與客戶設備之間的通信網(wǎng)絡的延遲敏感,降低了hid在使用中的可靠性。



技術(shù)實現(xiàn)要素:

本申請?zhí)峁┝艘环N重定向的方法、裝置和系統(tǒng),用于提升hid重定向的可靠性。

本申請第一方面提供了一種重定向的方法,所述方法用于vdi中對hid的重定向,其中,所述vdi包括服務器和客戶設備,所述客戶設備與所述hid連接,所述服務器上運行有虛擬機,該重定向方法包括:

所述虛擬機獲取接口調(diào)用請求,所述接口調(diào)用請求包括接口名和接口參數(shù);所述虛擬機對所述接口參數(shù)進行序列化操作,獲取序列化結(jié)果;所述虛擬機生成數(shù)據(jù)包,并通過通信網(wǎng)絡將所述數(shù)據(jù)包發(fā)送至所述客戶設備,所述數(shù)據(jù)包包括所述接口名和所述序列化結(jié)果;所述客戶設備接收所述數(shù)據(jù)包,獲取所述序列化結(jié)果和所述接口名,對所述序列化結(jié)果進行反序列化操作,獲取所述接口參數(shù);所述客戶設備根據(jù)所述接口參數(shù)和所述接口名訪問所述hid,獲取所述hid的信息,并將所述hid的信息發(fā)送至所述虛擬機。

所述客戶設備獲取所述接口參數(shù)和所述接口名,重構(gòu)所述虛擬機獲取的接口調(diào)用請求,也即將服務器上運行的虛擬機中生成的接口調(diào)用請求重定向到了客戶設備上,客戶設備根據(jù)該接口調(diào)用請求獲取所述hid的信息,并將所述hid的信息發(fā)送至所述虛擬機。所述虛擬機將所述hid的信息返回給所述應用程序。通過本申請實現(xiàn)的hid的重定向方法,提高了hid在使用過程中的穩(wěn)定性。

在一種可能的實現(xiàn)方式中,所述虛擬機對所述接口參數(shù)進行序列化操作,獲取序列化結(jié)果包括:所述虛擬機根據(jù)所述接口參數(shù)的參數(shù)類型獲取所述接口參數(shù)對應的底層數(shù)據(jù);所述客戶設備對所述序列化結(jié)果進行反序列化操作,獲取所述接口參數(shù)包括:所述客戶設備根據(jù)所述接口參數(shù)對應的底層數(shù)據(jù)獲取所述接口參數(shù)。

所述客戶設備獲取了接口名后,可以獲取該接口名對應的輸入?yún)?shù)的參數(shù)類型,則獲取了該底層數(shù)據(jù)對應的接口參數(shù)的參數(shù)類型,因此可以根據(jù)底層數(shù)據(jù)重構(gòu)該接口參數(shù)。

由于接口參數(shù)可能由多種數(shù)據(jù)結(jié)構(gòu)的嵌套而成,而接口參數(shù)對應的底層數(shù)據(jù)存儲于服務器中的存儲設備,為了將接口調(diào)用請求重定向至所述客戶設備,需要將接口參數(shù)對應的底層數(shù)據(jù)從所述服務器發(fā)送至所述客戶設備,以使得所述客戶設備能夠根據(jù)所述底層數(shù)據(jù)重構(gòu)接口參數(shù),實現(xiàn)hid的重定向過程。

本申請第二方面提供了一種重定向裝置,該裝置用于vdi中對hid的重定向,其中,所述vdi包括服務器和客戶設備,所述客戶設備與所述hid連接,該裝置包括:

接收模塊,用于接收所述服務器上運行的應用程序發(fā)出的接口調(diào)用請求,所述接口調(diào)用請求指示獲取hid的信息,所述接口調(diào)用請求包括接口名和接口參數(shù)。

序列化模塊,用于對接口參數(shù)進行序列化操作,獲取序列化結(jié)果。

通信模塊,用于將所述接口名和所述序列化結(jié)果封裝為數(shù)據(jù)包,并通過通信網(wǎng)絡將所述數(shù)據(jù)包發(fā)送至客戶設備。該通信模塊獲取該數(shù)據(jù)包后,將該數(shù)據(jù)包發(fā)送至通信網(wǎng)絡,該數(shù)據(jù)包中攜帶目的客戶設備的地址信息,以使得通信網(wǎng)絡能夠?qū)⒃摂?shù)據(jù)包路由至目的客戶設備。

該重定向裝置還用于將客戶設備訪問所述hid獲取的hid的信息返回給所述應用程序。

該重定向裝置屬于該服務器,為該服務器中用于hid重定向的裝置。該裝置的接收模塊能夠截取該服務器上運行的虛擬機使用的操作系統(tǒng)發(fā)出的接口調(diào)用請求。

該重定向裝置實現(xiàn)了將接口調(diào)用請求封裝入數(shù)據(jù)包發(fā)送至客戶設備,避免了在服務器上將接口調(diào)用請求轉(zhuǎn)換為多個指令后再傳輸至客戶設備對通信網(wǎng)絡造成的壓力,避免了通信網(wǎng)絡性能不足對hid重定向過程造成的影響。

在一種可能的實現(xiàn)方式中,所述序列化模塊具體用于根據(jù)所述接口參數(shù)的參數(shù)類型獲取所述接口參數(shù)對應的底層數(shù)據(jù)。

本申請第三方面提供了一種重定向裝置,該裝置用于vdi中對hid的重定向,其中,所述vdi包括服務器和客戶設備,所述客戶設備與所述hid連接,該裝置包括:

通信模塊,用于接收數(shù)據(jù)包,并將該數(shù)據(jù)包包括的序列化結(jié)果和接口名發(fā)送至反序列化模塊。

反序列化模塊,用于獲取數(shù)據(jù)包中的序列化結(jié)果和接口名,以及對所述序列化結(jié)果進行反序列化操作,獲取接口參數(shù)。

通信模塊,還用于根據(jù)所述接口參數(shù)和所述接口名,訪問所述hid,獲取所述hid的信息,并將所述hid的信息發(fā)送至所述虛擬機。

該通信模塊獲取了hid的信息后,將hid的信息封裝入數(shù)據(jù)包發(fā)送至通信網(wǎng)絡,所述數(shù)據(jù)包中攜帶發(fā)出包括該序列化結(jié)果和接口名的數(shù)據(jù)包的目的 服務器的地址信息,以使得通信網(wǎng)絡能夠?qū)⒃摂?shù)據(jù)包路由至該目的服務器。

該重定向裝置屬于該客戶設備,為該客戶設備中用于hid重定向的裝置。該重定向裝置中的通信模塊能夠與通信網(wǎng)絡和hid進行通信。在一種可能的實現(xiàn)方式中,所述反序列化模塊用于對所述序列化結(jié)果進行反序列化操作,獲取接口參數(shù),具體包括:根據(jù)所述接口參數(shù)對應的底層數(shù)據(jù)獲取所述接口參數(shù)。

本申請第四方面提供了一種服務器,包括:處理器以及存儲器,所述存儲器用于存儲指令,所述處理器用于執(zhí)行所述指令以執(zhí)行本申請第一方面及第一方面的任一中實現(xiàn)方式中提供的重定向方法中虛擬機側(cè)執(zhí)行的方法。

本申請第五方面提供了一種客戶設備,包括處理器以及存儲器,所述存儲器用于存儲指令,所述處理器用于執(zhí)行所述指令以執(zhí)行本申請第一方面及第一方面的任一中實現(xiàn)方式中提供的重定向方法中客戶設備側(cè)執(zhí)行的方法。

本申請第六方面提供了一種vdi,包括至少一個第四方面提供的服務器以及至少一個第五方面提供的的客戶設備,所述服務器和所述客戶設備之間通過通信網(wǎng)絡進行通信。

本申請第七方面提供了一種存儲介質(zhì),該存儲介質(zhì)中存儲了程序代碼,該程序代碼被計算設備運行時,執(zhí)行第一方面或第一方面的任意一種實現(xiàn)方式提供的重定向方法。該存儲介質(zhì)包括但不限于快閃存儲器(英文:flashmemory),硬盤(英文:harddiskdrive,縮寫:hdd)或固態(tài)硬盤(英文:solidstatedrive,縮寫:ssd)。

本申請?zhí)峁┑募夹g(shù)方案,將服務器上運行的虛擬機獲取的hid的接口調(diào)用請求進行序列化操作之后發(fā)送至客戶設備,再由客戶設備將該接口調(diào)用請求解析為hid可以執(zhí)行的多個指令并根據(jù)這多個指令訪問hid,避免了服務器將接口調(diào)用請求解析后生成的多個指令發(fā)送至客戶設備造成的通信效率降低以及對通信網(wǎng)絡的延遲過于敏感造成的可靠性降低。

附圖說明

圖1為本申請所提供的vdi的示意圖;

圖2為本申請所提供的計算設備的一個實施例結(jié)構(gòu)示意圖;

圖3為本申請所提供的計算設備的另一實施例結(jié)構(gòu)示意圖;

圖4為本申請所提供的重定向的方法的一個實施例流程示意圖;

圖5為本申請所提供的一個應用場景下重定向的方法的流程示意圖;

圖6為本申請所提供的另一應用場景下重定向的方法的流程示意圖;

圖7為本申請所提供的重定向裝置的一個實施例結(jié)構(gòu)示意圖;

圖8為本申請所提供的重定向裝置的另一實施例結(jié)構(gòu)示意圖。

具體實施方式

下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。

如圖1為本申請實施例所應用的vdi的示意圖,該vdi包括服務器和客戶設備。

其中,服務器包括硬件層,即虛擬化環(huán)境運行的硬件平臺。其中,硬件層可包括多種硬件,例如處理器(如cpu)和內(nèi)存、存儲設備(可以包括硬盤和/或內(nèi)存),還可以包括網(wǎng)卡等設備。

服務器上運行有vm與虛擬機監(jiān)控器(英文:virtualmachinemonitor,縮寫:vmm)。通過虛擬機軟件可以在一臺服務器上模擬出一臺或者多臺vm,而這些vm就像真正的計算機那樣進行工作,vm上可以安裝操作系統(tǒng)和應用程序,vm還可訪問網(wǎng)絡資源。對于在vm中運行的應用程序而言,就像是在真正的計算機中進行工作。vmm用于完成硬件層的管理、分配,為vm呈現(xiàn)虛擬硬件平臺,實現(xiàn)vm的調(diào)度和隔離。其中,虛擬硬件平臺對其上運行的各個vm提供各種硬件資源,如提供虛擬cpu、內(nèi)存、虛擬磁盤、虛擬網(wǎng)卡等等。

其中,客戶設備包括與服務器類似的硬件層,客戶設備的硬件層上運行有操作系統(tǒng),該操作系統(tǒng)可以為服務器的vm上運行的操作系統(tǒng)的裁剪版,在本申請的場景中,客戶設備上運行的操作系統(tǒng)具有將接口調(diào)用請求轉(zhuǎn)換為hid可以識別的指令的功能。客戶設備也可以稱為瘦終端(英文:thinclient)。 客戶設備可以與一個或多個hid連接。

一臺服務器可以對應一臺或多臺客戶設備。該服務器上運行有一個或多個虛擬機(英文:virtualmachine,縮寫:vm),即vm-1至vm-n??蛻粼O備與hid連接,vm在運行過程中,vm中運行的應用程序生成用于獲取hid的信息的接口調(diào)用請求,將該接口調(diào)用請求按照預先設計的協(xié)議或標準,轉(zhuǎn)換為hid可以識別的指令,并將該轉(zhuǎn)換后的指令發(fā)送至hid,hid執(zhí)行該轉(zhuǎn)換后的指令以實現(xiàn)接口調(diào)用請求指示的操作。由于常見的hid與客戶設備通過通用串行總線(英文:universalserialbus,縮寫:usb)接口連接,因此預先設計的協(xié)議或標準也需要遵從usb協(xié)議。傳統(tǒng)的hid重定向過程中,服務器上運行的vm執(zhí)行上述轉(zhuǎn)換動作,再將轉(zhuǎn)換生成的多個符合usb協(xié)議的指令發(fā)送至客戶設備,客戶設備接收并執(zhí)行這些指令以實現(xiàn)對hid的操作。該過程中,由于這些指令數(shù)據(jù)量大且對客戶設備返回數(shù)據(jù)的時延要求嚴格,因此現(xiàn)有的重定向方法對網(wǎng)絡延遲很敏感,導致hid在使用中的可靠性不足。

貫穿本說明書,hid包括各種與用戶交互的設備,例如鍵盤、鼠標與游戲桿、打印機、讀卡器等。

貫穿本說明書,hid的信息包括hid的設備信息和hid獲取到的用戶信息中的一個或多個。其中,hid的設備信息為hid本身的硬件信息,例如hid的設備信息為產(chǎn)品id(英文:productid)和供應商id(英文:vendorid)中的一個或多個。hid獲取到的用戶信息包括hid獲取到的用戶發(fā)送給hid的信息,例如hid獲取到的用戶信息為hid為鍵盤、打印機、鼠標等設備時,用戶通過對hid進行的操作信息,hid獲取到的用戶信息還包括用戶安裝在hid上的其他存儲介質(zhì)傳輸給hid的信息,例如hid為讀卡器的場景下,hid的設備信息為讀卡器本身的設備信息,而hid獲取到的用戶信息為讀卡器上所安裝的存儲卡上攜帶的信息。

貫穿本說明書,設置(setup)接口為用于獲取hid的設備信息的操作系統(tǒng)接口,以vm上運行windows操作系統(tǒng)為例,設置接口包括但不限于:setupdigetclassdevsa,setupdienumdeviceinterfaces,setupdigetdeviceinterfacedetaila,setupdidestroydeviceinfolist。

貫穿本說明書,hid接口為用于獲取hid獲取到的用戶信息的操作系統(tǒng)接口,以vm上運行windows操作系統(tǒng)為例,設置接口包括但不限于:hidd_gethidguid,hidd_getproductstring,hidd_getmanufacturerstring,hidd_getpreparseddata,hidp_getcap,hidd_freepreparseddata,hidd_getattribute,hidd_gethidgui。

圖1中的服務器可以通過圖2中的計算設備200實現(xiàn)。該計算設備200的組織結(jié)構(gòu)示意圖如圖2所示,包括處理器202、存儲器204,還可以包括總線208、通信接口206。

其中,處理器202、存儲器204和通信接口206可以通過總線208實現(xiàn)彼此之間的通信連接,也可以通過無線傳輸?shù)绕渌侄螌崿F(xiàn)通信。

存儲器204可以包括易失性存儲器(英文:volatilememory),例如隨機存取存儲器(英文:random-accessmemory,縮寫:ram);存儲器204也可以包括非易失性存儲器(英文:non-volatilememory),例如只讀存儲器(英文:read-onlymemory,縮寫:rom),快閃存儲器(英文:flashmemory),硬盤(英文:harddiskdrive,縮寫:hdd)或固態(tài)硬盤(英文:solidstatedrive,縮寫:ssd);存儲器204還可以包括上述種類的存儲器的組合。在通過軟件來實現(xiàn)本申請?zhí)峁┑募夹g(shù)方案時,用于實現(xiàn)本申請圖4提供的重定向的方法中服務器側(cè)執(zhí)行的部分的程序代碼保存在存儲器204中,并由處理器202來執(zhí)行。

計算設備200通過通信接口206與客戶設備通信。

處理器202可以為cpu。

該處理器202運行時執(zhí)行以下操作:接收應用程序發(fā)出的接口調(diào)用請求,該接口調(diào)用請求包括接口參數(shù)和接口名,并對所述接口參數(shù)進行序列化操作,獲取序列化結(jié)果;隨后將所述接口名和所述序列化結(jié)果封裝為數(shù)據(jù)包,并通過通信接口206將所述數(shù)據(jù)包發(fā)送至客戶設備。

通信接口206獲取所述客戶設備根據(jù)所述接口調(diào)用請求訪問所述hid獲取的hid的信息后,處理器202還用于將所述hid的信息返回給所述應用程序。

圖1中的客戶設備可以通過圖3中的計算設備300實現(xiàn)。該計算設備300的組織結(jié)構(gòu)示意圖如圖3所示,包括處理器302、存儲器304,還可以包括總 線308、通信接口306。

其中,處理器302、存儲器304和通信接口306可以通過總線308實現(xiàn)彼此之間的通信連接,也可以通過無線傳輸?shù)绕渌侄螌崿F(xiàn)通信。

處理器302可以為cpu。存儲器304可以包括易失性存儲器,例如ram;存儲器304也可以包括非易失性存儲器,例如rom,快閃存儲器,hdd或ssd;存儲器304還可以包括上述種類的存儲器的組合。在通過軟件來實現(xiàn)本申請?zhí)峁┑募夹g(shù)方案時,用于實現(xiàn)本申請圖4提供的重定向的方法中客戶設備側(cè)的部分的程序代碼保存在存儲器304中,并由處理器302來執(zhí)行。計算設備300通過通信接口306與服務器通信。

通信接口306接收服務器發(fā)來的數(shù)據(jù)包后,獲取所述數(shù)據(jù)包中包括的序列化結(jié)果和接口名,并將所述序列化結(jié)果和接口名發(fā)送至處理器302。

該處理器302運行時執(zhí)行以下操作:獲取所述數(shù)據(jù)包中的序列化結(jié)果和接口名,并對所述序列化結(jié)果進行反序列化操作,獲取接口參數(shù);根據(jù)接口參數(shù)和所述接口名,訪問hid,獲取hid的信息,并將hid的信息通過通信接口306發(fā)送至發(fā)送包括了該序列化結(jié)果的數(shù)據(jù)包的服務器。

基于圖1所示的vdi,本申請?zhí)峁┝艘环N重定向方法,圖1中的服務器和客戶設備運行時執(zhí)行該方法,其流程示意圖如圖4所示。

401、虛擬機獲取接口調(diào)用請求,所述接口調(diào)用請求包括接口名和接口參數(shù)。

所述接口調(diào)用請求指示獲取hid的信息,虛擬機上運行的應用程序在需要對hid進行操作的時候,調(diào)用對應的接口調(diào)用請求,虛擬機截獲該接口調(diào)用請求。實踐中可以通過一個鉤子模塊實現(xiàn)對應用程序發(fā)出的接口調(diào)用請求的截獲。

可選的,所述接口名為設置接口,所述hid的信息為所述hid的設備信息。

可選的,所述接口為hid接口,所述hid的信息為所述hid獲取到的用戶信息。

402、所述虛擬機對所述接口參數(shù)進行序列化操作,獲取序列化結(jié)果。

可選的,所述虛擬機對所述接口參數(shù)進行序列化操作,獲取序列化結(jié)果 具體包括:所述虛擬機根據(jù)所述接口參數(shù)的參數(shù)類型獲取所述接口參數(shù)對應的底層數(shù)據(jù)。

403、所述虛擬機將所述接口名和所述序列化結(jié)果封裝為數(shù)據(jù)包,并通過通信網(wǎng)絡將所述數(shù)據(jù)包發(fā)送至客戶設備。

404、所述客戶設備接收所述數(shù)據(jù)包,獲取所述序列化結(jié)果和所述接口名,對所述序列化操作進行反序列化操作,獲取所述接口參數(shù)。

可選的,所述客戶設備對所述序列化操作進行反序列化操作,獲取所述接口參數(shù)包括:所述客戶設備根據(jù)所述接口參數(shù)對應的底層數(shù)據(jù)獲取所述接口參數(shù)。

需要說明的是,接口參數(shù)可以為各種數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型,例如變量類型(例如數(shù)值或者枚舉類型)、間接訪問類型(例如指針或指針的指針)、句柄。不同類型的接口參數(shù)可以作為不同接口調(diào)用請求的接口參數(shù),例如windows下接口名為hidd_getpreparseddata的接口調(diào)用請求的接口參數(shù)為hiddeviceobject以及*preparseddata。

序列化操作過程中,由于需要將接口參數(shù)轉(zhuǎn)換為字節(jié)序列以便將該接口參數(shù)通過通信網(wǎng)絡傳輸,因此需要獲取該接口參數(shù)對應的底層數(shù)據(jù)對應的字節(jié)序列。例如待處理的接口參數(shù)為指針a,則序列化操作過程中需要獲取指針a指向的變量b,則變量b為指針a的底層數(shù)據(jù)。例如待處理的接口參數(shù)為指針的指針c,則需要獲取指針的指針c指示的指針d,然后獲取指針d指向的變量e,則變量e為指針的指針c的底層數(shù)據(jù)。不同的接口參數(shù)的序列化操作過程中獲取的底層數(shù)據(jù)的類型可能不同,但根據(jù)其底層數(shù)據(jù)可以恢復出原接口參數(shù),例如如果原接口參數(shù)為一個句柄,則通過對該接口參數(shù)的底層數(shù)據(jù)進行反序列化操作可以獲得一個句柄。實際中,還會出現(xiàn)待處理的接口參數(shù)有更多種類型,例如多重指針嵌套、多重句柄嵌套等。vm發(fā)出的接口調(diào)用請求的接口參數(shù)對應的底層數(shù)據(jù),在服務器的存儲空間中一般指示一段連續(xù)的內(nèi)存值。

反序列化操作過程包括根據(jù)底層數(shù)據(jù),重構(gòu)該底層數(shù)據(jù)對應的接口參數(shù)。例如底層數(shù)據(jù)包括變量b,則重構(gòu)指針a’,指針a’指向變量b。客戶設備在獲取了接口名后,即可根據(jù)接口名獲取該接口名對應的輸入?yún)?shù)的類型,例 如windows下接口名為hidd_getpreparseddata的接口調(diào)用請求的接口參數(shù)包括*preparseddata,因此如果客戶設備在獲取包括接口名hidd_getpreparseddata的數(shù)據(jù)包后,則可以得知該接口名對應的輸入?yún)?shù)包括一個指針,因此客戶設備根據(jù)該數(shù)據(jù)包中攜帶的底層數(shù)據(jù),重構(gòu)一個指針作為hidd_getpreparseddata接口的輸入?yún)?shù)。

序列化操作和反序列化操作常用于通過通信網(wǎng)絡在不同設備間傳遞數(shù)據(jù),以在圖1所示的vdi中實現(xiàn)hid的重定向過程為例。服務器上運行的vm在運行應用程序的過程中,應用程序發(fā)起接口調(diào)用請求,該接口調(diào)用請求包括了應用程序需要調(diào)用的接口的接口名以及該接口的接口參數(shù),服務器需要對接口調(diào)用請求進行序列化操作,使得接口調(diào)用請求能夠通過數(shù)據(jù)包傳送至客戶設備,并且客戶設備能夠根據(jù)服務器發(fā)來的數(shù)據(jù)包重構(gòu)該接口調(diào)用請求,以使得服務器的vm發(fā)起的針對hid的操作請求,能夠重定向至客戶設備。

405、所述客戶設備根據(jù)所述接口參數(shù)和所述接口名訪問所述hid,獲取所述hid的信息。

406、所述客戶設備將所述hid的信息發(fā)送至所述虛擬機。

客戶設備根據(jù)獲取的該接口參數(shù)和接口名重構(gòu)該接口調(diào)用請求,客戶設備上運行的操作系統(tǒng)將該接口調(diào)用請求轉(zhuǎn)換為hid能夠執(zhí)行的多個指令,通過這些指令去訪問hid,以獲取hid的信息。

服務器獲取了該hid的信息后,將該hid的信息返回給發(fā)出該接口調(diào)用請求的應用程序。

本申請?zhí)峁┑膆id重定向方法,通過將服務器獲取的接口參數(shù)對應的序列化結(jié)果和接口名通過數(shù)據(jù)包發(fā)送至客戶設備,再由客戶設備重構(gòu)接口調(diào)用請求并對hid進行訪問,避免了現(xiàn)有技術(shù)中需要將接口調(diào)用請求轉(zhuǎn)換后的多個指令在通信網(wǎng)絡中傳輸造成的可靠性降低,本申請?zhí)峁┑膆id重定向方法對網(wǎng)絡延時要求低,穩(wěn)定性好。

下面以具體實例對本申請?zhí)峁┑闹囟ㄏ虻姆椒ㄟM行說明。如圖5所示,以服務器上運行的虛擬機中的讀卡模塊進行讀卡操作為例。該方法基于圖5的系統(tǒng)實現(xiàn),該系統(tǒng)包括讀卡器、客戶設備和服務器,該客戶設備包括序列 化模塊、通信模塊和反序列化模塊,該服務器上運行有虛擬機,虛擬機包括序列化模塊、通信模塊、反序列化模塊、讀卡模塊以及接收模塊。該方法包括:

步驟1,該讀卡模塊向操作系統(tǒng)發(fā)起設置接口的調(diào)用請求,用于讀取讀卡器的設備信息。

步驟2,接收模塊接收該讀卡模塊發(fā)出的設置接口的調(diào)用請求。

可選地,該接收模塊可以為一個鉤子(hook)模塊。

步驟3,接收模塊將設置接口的接口參數(shù)傳遞給服務器的序列化模塊處理。

步驟4,服務器的序列化模塊對設置接口的接口參數(shù)進行序列化后,將設置接口的接口參數(shù)的序列化結(jié)果和接口名發(fā)送至服務器的通信模塊。

步驟5,服務器的通信模塊將接口名以及設置接口的接口參數(shù)的序列化結(jié)果封裝為數(shù)據(jù)包后發(fā)送給客戶設備。

步驟6,客戶設備的反序列化模塊對設置接口的接口參數(shù)的序列化結(jié)果進行反序列化。

步驟7,客戶設備的通信模塊根據(jù)反序列化得到的設置接口的接口參數(shù)以及接口名,通過客戶設備上運行的操作系統(tǒng)執(zhí)行該設置接口的調(diào)用請求讀取讀卡器的設備信息。

步驟8,客戶設備的通信模塊將讀到的讀卡器的設備信息發(fā)送至客戶端的序列化模塊。

步驟9,客戶設備的序列化模塊將讀卡器的設備信息序列化后發(fā)送到通信模塊。

步驟10,客戶設備的通信模塊將序列化后的該讀卡器的設備信息發(fā)送到服務器。

步驟11,服務器的反序列化模塊處理該序列化后的讀卡器的設備信息后獲取讀卡器的設備信息,反序列化模塊將讀卡器的設備信息返回給讀卡模塊。

步驟12,讀卡模塊發(fā)起hid接口調(diào)用,以讀取讀卡器上的存儲卡內(nèi)的信息。

步驟13,接收模塊接收該讀卡模塊發(fā)出的hid接口的調(diào)用請求,并將hid接口的接口參數(shù)傳遞給服務器的序列化模塊進行處理。

步驟14,服務器的序列化模塊對hid接口的接口參數(shù)進行序列化后獲取hid接口的接口參數(shù)的序列化結(jié)果,通過服務器的通信模塊將hid接口的接口名以及hid接口的接口參數(shù)的序列化結(jié)果封裝為數(shù)據(jù)包后發(fā)送給客戶設備??蛻粼O備的反序列化模塊對收到的hid接口的接口參數(shù)的序列化結(jié)果進行反序列化。

步驟15,客戶設備的通信模塊根據(jù)獲取的hid接口的接口名和反序列化得到的hid接口的接口參數(shù)讀取存儲卡內(nèi)的信息。獲取的存儲卡內(nèi)的信息經(jīng)過客戶設備的序列化模塊處理后,獲取序列化后的存儲卡內(nèi)的信息,通過通過客戶設備的通信模塊發(fā)送到服務器。

步驟16,服務器上的反序列化模塊將序列化后的存儲卡內(nèi)的信息反序列化后,將存儲卡內(nèi)的信息返回給虛擬機中運行的讀卡模塊。

步驟17,讀卡模塊獲取存儲卡內(nèi)的信息。

服務器上的序列化模塊和反序列化模塊在實踐中可以由同一模塊實現(xiàn)序列化和反序列化的功能,客戶設備上的序列化模塊和反序列化模塊與之類似。服務器上的序列化模塊與客戶設備上的序列化模塊功能類似,服務器上的反序列化模塊與客戶設備上的反序列化模塊功能類似。

如圖6所示,以用戶通過身份信息進行虛擬機登陸的身份驗證的應用場景為例進行說明本申請?zhí)峁┑闹囟ㄏ虻姆椒āT摲椒ɑ趫D6的系統(tǒng)實現(xiàn),該系統(tǒng)包括hid、客戶設備、服務器和鑒權(quán)服務器。該客戶設備包括重定向模塊和遠程協(xié)議客戶端,其中重定向模塊包括序列化模塊、通信模塊、反序列化模塊。該服務器上運行有虛擬機,虛擬機包括遠程協(xié)議登錄模塊和重定向模塊,其中重定向模塊序列化模塊、通信模塊、反序列化模塊以及接收模塊。鑒權(quán)服務器包括遠程協(xié)議鑒權(quán)模塊,鑒權(quán)服務器還可以包括用于通信的通信模塊。該方法包括:

步驟1,用戶通過客戶設備中的遠程協(xié)議客戶端向服務器發(fā)起虛擬機的登錄請求。

步驟2,服務器的遠程協(xié)議登錄模塊獲取該虛擬機的登錄請求。

步驟3,服務器根據(jù)該虛擬機的登錄請求發(fā)起設置接口以及hid接口的調(diào)用請求,并通過重定向模塊將接口調(diào)用請求重定向至客戶設備,以讀取用戶的身份信息。接口調(diào)用請求的重定向過程,基于本申請前述實施例所提供的重定向的方法實現(xiàn)。

該服務器的重定向模塊包括實現(xiàn)了圖4所示實施例中服務器側(cè)方法的軟件模塊,重定向模塊中的各個子模塊參考圖5所示的實施例。該客戶設備的重定向模塊包括實現(xiàn)了圖4所示實施例中客戶設備側(cè)方法的軟件模塊,重定向模塊中的各個子模塊參考圖5所示的實施例。

步驟4,客戶設備的重定向模塊獲取用戶的身份信息,并將用戶的身份信息返回給服務器。

步驟5,服務器的重定向模塊獲取用戶的身份信息,將用戶的身份信息傳遞給遠程協(xié)議登錄模塊。遠程協(xié)議登錄模塊根據(jù)用戶的身份信息向鑒權(quán)服務器發(fā)起鑒權(quán)請求。

步驟6,鑒權(quán)服務器在獲得鑒權(quán)請求后,通過遠程協(xié)議鑒權(quán)模塊對用戶的身份信息進行鑒權(quán)。如果鑒權(quán)成功,則向遠程協(xié)議登錄模塊返回虛擬機登錄信息。

步驟7,遠程協(xié)議登錄模塊在獲得虛擬機登錄信息后,利用虛擬機登錄信息登錄虛擬機,并向客戶設備返回登錄結(jié)果。

用戶可以選用不同的身份信息進行虛擬機登陸的身份驗證(例如:賬號/密碼,指紋,智能卡等),而登錄虛擬機之前需要通過對用戶的身份信息的鑒權(quán)。通過以上提供的方法,能夠更可靠地實現(xiàn)服務器與虛擬機之間的接口調(diào)用請求的重定向,實現(xiàn)用戶的身份信息的鑒權(quán),提升用戶的體驗。

本申請實施例還提供了重定向裝置500,該裝置可以通過圖2所示的計算設備200實現(xiàn),還可以通過專用集成電路(英文:application-specificintegratedcircuit,縮寫:asic)實現(xiàn),或可編程邏輯器件(英文:programmablelogicdevice,縮寫:pld)實現(xiàn)。上述pld可以是復雜可編程邏輯器件(英文:complexprogrammablelogicdevice,縮寫:cpld),fpga,通用陣列邏輯(英文:genericarraylogic,縮寫:gal)或其任意組合。該重定向裝置500用于實現(xiàn)圖4所示的重定向的方法中服務器側(cè)執(zhí)行的方法。通過軟件實現(xiàn)圖4所示的重定向 的方法時,該重定向裝置500及其包括的各個也可以為軟件模塊。

重定向裝置500的組織結(jié)構(gòu)示意圖如圖7所示,包括:接收模塊501、序列化模塊502和通信模塊503。接收模塊501工作時,執(zhí)行圖4所示的重定向的方法中的步驟401,序列化模塊502工作時,執(zhí)行圖4所示的重定向的方法中的步驟402,通信模塊503工作時,執(zhí)行圖4所示的重定向的方法中的步驟403。

本申請實施例還提供了重定向裝置600,該裝置可以通過圖3所示的計算設備300實現(xiàn),還可以通過asic實現(xiàn),或pld實現(xiàn)。上述pld可以是復雜可編程cpld,fpga,gal或其任意組合。該重定向裝置600用于實現(xiàn)圖4所示的重定向的方法中客戶設備側(cè)執(zhí)行的方法。通過軟件實現(xiàn)圖4所示的重定向的方法時,重定向裝置600及其包括的各個模塊也可以為軟件模塊。

重定向裝置600的組織結(jié)構(gòu)示意圖如圖8所示,包括:反序列化模塊601和通信模塊602。反序列化模塊601工作時,執(zhí)行圖4所示的重定向的方法中的步驟404,通信模塊602工作時,執(zhí)行圖4所示的重定向的方法中的步驟404中接收數(shù)據(jù)包的動作以及步驟405和步驟406。

上述裝置的相關(guān)描述可以對應參閱方法實施例部分的相關(guān)描述和效果進行理解,本處不做過多贅述。

本申請還提供了一種vdi,其組織結(jié)構(gòu)示意圖如圖1所示,其由至少一個服務器與至少一個客戶設備構(gòu)成。

所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng),裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。

在本申請所提供的幾個實施例中,應該理解到,所揭露的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合 或通信連接,可以是電性,機械或其它的形式。

另外,在本申請各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。

以上所述,以上實施例僅用以說明本申請的技術(shù)方案,而非對其限制;盡管參照前述實施例對本申請進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本申請各實施例技術(shù)方案的范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1