CN106656916A - 一种桌面云场景下实时切换重定向方式的装置及方法 - Google Patents
一种桌面云场景下实时切换重定向方式的装置及方法 Download PDFInfo
- Publication number
- CN106656916A CN106656916A CN201510725296.8A CN201510725296A CN106656916A CN 106656916 A CN106656916 A CN 106656916A CN 201510725296 A CN201510725296 A CN 201510725296A CN 106656916 A CN106656916 A CN 106656916A
- Authority
- CN
- China
- Prior art keywords
- interface
- redirection
- virtual machine
- equipment
- smart card
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 230000008859 change Effects 0.000 claims abstract description 40
- 230000000903 blocking effect Effects 0.000 claims description 13
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 claims 2
- GNFTZDOKVXKIBK-UHFFFAOYSA-N 3-(2-methoxyethoxy)benzohydrazide Chemical compound COCCOC1=CC=CC(C(=O)NN)=C1 GNFTZDOKVXKIBK-UHFFFAOYSA-N 0.000 claims 1
- 230000005856 abnormality Effects 0.000 abstract 1
- 230000005540 biological transmission Effects 0.000 description 17
- 230000004044 response Effects 0.000 description 14
- 230000008569 process Effects 0.000 description 10
- 230000026676 system process Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000002347 injection Methods 0.000 description 5
- 239000007924 injection Substances 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000015654 memory Effects 0.000 description 2
- 238000004321 preservation Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 241000208340 Araliaceae Species 0.000 description 1
- 235000005035 Panax pseudoginseng ssp. pseudoginseng Nutrition 0.000 description 1
- 235000003140 Panax quinquefolius Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 235000008434 ginseng Nutrition 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0853—Network architectures or network communication protocols for network security for authentication of entities using an additional device, e.g. smartcard, SIM or a different communication terminal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种桌面云场景下实时切换智能卡重定向的方法及装置,所述方法包括:在设备接口层重定向方式下,应用模块调用与所述设备状态变化相关的接口,并在该接口阻塞时,保存与该接口相应的上下文内容;基于所述虚拟机的断开,应用钩子模块根据所述上下文内容释放所述阻塞接口,并构造该设备不在位状态的消息通知;基于所述虚拟机的连接,所述应用钩子模块将该设备重定向方式切换至API重定向。本发明解决了***由切换重定向方式所带来***异常的问题,提升了用户在桌面云场景下使用智能卡的体验,能够应用于桌面云场景中。
Description
技术领域
本发明涉及通信技术领域,尤其涉及重定向方法及装置。
背景技术
在桌面云的安全场景下,用户需要在虚拟机中使用智能卡用于认证,比如使用智能卡(Smart Card)用于虚拟机的登录。目前通用的技术是将客户端的智能卡重定向到虚拟机中使用,常用的重定向方式有设备接口层重定向和API(应用程序编程接口)重定向,设备接口层重定向主要包括总线重定向以及串口重定向、并口重定向等相应设备接口层的重定向。
设备接口层重定向和API重定向两种重定向方式各有优缺点,设备接口层重定向方式可以支持非PC/SC规范的智能卡重定向,API重定向方式可以满足在客户端和虚拟机同时使用智能卡的需求。用户需要根据不同的需求选择相应的重定向方式,有时也需要两种重定向方式相互切换使用。
在现有技术中,设备接口层重定向和API重定向由两个独立模块来实现。图1是现有技术中的设备接口层重定向方法示意图,其中,协议客户端101、协议服务端102、虚拟USB驱动模块103、虚拟USB驱动模块104是需要协议厂商实现的模块。
图1中,在使用设备接口层重定向时,对智能卡的消息处理方法如下:
步骤1~4,应用模块发起消息,该消息经传递到协议厂商实现的虚拟USB驱动模块;
步骤5,虚拟USB驱动模块将该消息转发给协议服务端的传输模块;
步骤6,该消息经过使用厂商定义的桌面云协议,再通过网络传输;
步骤7,该消息到达协议客户端后交给客户端的虚拟USB驱动模块;
步骤8~10,客户端的虚拟USB驱动模块将消息传递下去,最后由客户端的智能卡设备处理该消息并给出回应;
步骤11~20,智能卡设备处理后回应消息,最后该消息回到应用模块。
图2是现有技术中的API重定向方法示意,其中,协议客户端、协议服务端、智能卡资源管理器、app hook模块是需要协议厂商实现的模块。
图2中,在使用API重定向时,对智能卡的消息处理方法如下:
步骤21~22,应用模块发起消息,该消息传递到协议厂商实现的app hook模块(应用注入模块);
步骤23,app hook模块将该消息转发给协议服务端的传输模块;
步骤24,该消息经过使用厂商定义的桌面云协议通过网络传输;
步骤25,该消息到达协议客户端后交给客户端的智能卡资源管理器;
步骤26~29,智能卡资源管理器将该消息传递下去,最后由客户端的智能卡设备处理该消息并给出回应;
步骤30~38,智能卡设备处理后回应消息,最后该消息回到应用模块。
上述两种重定向方式实质上都是在不同层次的消息栈上将消息进行截获并转发,不论采用哪种重定向方式,虚拟机的应用与智能卡资源管理器的SCard API(智能卡API)都是固定的。应用模块在使用智能卡时,通常有以下几种消息的调用:
1)应用模块调用SCardEstablishContext接口建立context(上下文),后续接口的调用都使用到这个context;
2)应用模块调用SCardListCards接口和Scardlistreaders接口获取可用的读卡器信息;
3)应用模块调用SCardGetStatusChange接口查询智能卡状态,如果入参timeout参数为-1,此接口会阻塞直到卡的状态发生变化(比如由在位到不在位或者不在位变为在位),这种情况下应用模块通常会启用两个及以上的线程,其中一个线程一直阻塞用于查询状态,其它线程做相应的读写卡操作;
4)如果智能卡在位可操作,应用模块调用SCardConnect接口进行连接智能卡操作;
5)应用模块调用SCardTransmit接口进行传输数据;
6)数据传输完后,应用模块调用SCardDisconnect接口释放连接;
7)应用模块调用SCardFreeMemory接口释放内存;
8)应用模块调用SCardReleaseContext接口释放context结束操作;
在现有技术中,设备接口层重定向和API重定向是由两个独立的模块来实现的,从一种重定向方式切换到另一种重定向方式时,往往需要重启应用进程。然而对于***进程比如Windows的winlogon进程、LogonUI进程等,重启应用进程会导致***异常,甚至出现蓝屏。因此,在现有的技术方案中,如果要切换重定向方式,就需要重启操作***,还需要用户修改虚拟机中的文件或者修改注册表项,并且还需要重启虚拟机才能够生效,影响使用效率和用户操作体验。
发明内容
本发明提供了一种桌面云场景下实时切换重定向方式的装置及方法,以提高用户体验。
在第一方面,本发明提供了一种重定向方式切换方法且该重定向方式是将客户端中的设备重定向至虚拟机。该方法在设备接口层重定向方式下,应用模块调用与该设备状态变化相关的接口,并在该接口阻塞时,保存与该接口相应的上下文内容。然后基于虚拟机的断开,应用钩子模块根据该上下文内容释放该阻塞接口,并构造该设备不在位状态的消息通知。最后基于虚拟机的连接,应用钩子模块将设备重定向方式切换至API重定向。
在第二方面,本发明提供了一种重定向方式切换方法,且该重定向方式是将客户端中的设备重定向至虚拟机。该方法在API重定向方式下,应用模块调用与该设备状态变化相关的接口,并在该接口需要阻塞时,应用钩子模块阻塞该接口。然后应用钩子模块轮询,以查询该设备状态变化情况,并在该设备状态发生变化时,释放该阻塞接口。基于虚拟机的断开,构造该设备不在位的消息通知。最后基于虚拟机的连接,应用钩子模块将设备重定向方式切换至设备接口层重定向。
在第三方面,本发明提供了一种重定向切换装置,且该重定向方式是将客户端中的设备重定向至虚拟机。该虚拟机包括应用钩子模块、应用模块。该应用模块在设备接口层重定向方式下用于调用与该设备状态变化相关的接口。该应用钩子模块用于在该与设备变化状态相关接口阻塞时,保存与该接口相应的上下文内容;以及在虚拟机断开情况下,根据该上下文内容释放该阻塞接口,构造该设备不在位状态的消息通知。并在连接该虚拟机后,将设备重定向方式切换至API重定向。
在第四方面,本发明提供了一种重定向切换装置,且该重定向方式是将客户端中的设备重定向至虚拟机。该虚拟机包括应用钩子模块、应用模块。该应用模块在API重定向方式下用于调用与该设备状态变化相关的接口。该应用钩子模块用于在该与设备变化状态相关接口需要阻塞时阻塞该接口。以及用于轮询,以查询该设备状态变化情况,并在该设备状态发生变化时,释放所述被阻塞接口。以及在虚拟机断开时构造该设备不在位的消息通知;并用于在连接该虚拟机后,将设备重定向方式切换至设备接口层重定向。
本发明提供的重定向方式切换装置及方法,解决了用户需要重新启动虚拟机才能够切换重定向方式的问题,减少了操作时间,降低了操作难度,解决了***由切换重定向方式所带来***异常的问题,提升了用户在桌面云场景下使用智能卡的体验,对智能卡的切换做到了即切即用。
较佳地,在应用模块调用与设备状态变化相关接口之前,应用钩子模块检测***进程是否加载了与智能卡相关的模块,如果该应用钩子模块检测到已加载到该与智能卡相关的模块,则对***进程进行注入。
较佳地,该设备状态变化相关的接口是智能卡获取状态变化接口。
较佳地,由智能卡取消接口释放阻塞接口。
较佳地,该设备接口层重定向是总线重定向、串口重定向、并口重定向中的一个。
较佳地,该设备是USB智能卡、串口智能卡、并口智能卡中的一个。
附图说明
图1为现有技术中的设备接口层重定向方法示意图;
图2为现有技术中的API重定向方法示意图;
图3为本发明一个实施例的从设备接口层重定向切换到API重定向的方法流程图;
图4为本发明一个实施例的重定向方式切换示意图;
图5为本发明一个实施例的从API重定向切换到设备接口层重定向的方法流程图;
图6为本发明一个实施例的从设备接口层重定向切换至API重定向的装置示意图;
图7为本发明实一个实施例的从API重定向切换至设备接口层重定向的装置示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明中的重定向方式包括设备接口层重定向和API重定向,且该设备接口层重定向为总线重定向、串口重定向、并口重定向等设备接口层重定向中的一个。本发明中将客户端中的设备重定向至虚拟机,所述与客户端相关的设备可以是USB智能卡、串口智能卡、并口智能卡等智能卡中的一个,也可以是其它任意一种与客户端相关的设备,如打印机等,以下实施例将以该与客户端相关设备为智能卡为例,对本发明进行详述。
本发明在智能卡状态变化相关接口(如SCardGetStatusChange接口)阻塞时,要切换重定向方式,就需要断开虚拟机,释放阻塞接口,并构造智能卡不在位状态的消息通知。否则与该智能卡状态变化接口相对应的资源就不会得到释放,因此此时一旦切换重定向方式,资源就无法得到正常调用,出现***异常。除非采用现有技术中的重启虚拟机方式,这样又会给用户带来不便。
图3是本发明一个实施例的从设备接口层重定向切换到API重定向的方法流程图。
下述步骤301至步骤305阐述的是,如何通过设备接口层重定向方式将客户端的智能卡重定向至虚拟机。
S301,启动虚拟机。
S302,app hook模块(应用钩子模块)检测***进程是否加载了与智能卡相关的模块,例如检测是否加载了windows***的winscard模块。
S303,如果app hook模块检测到已加载到该与智能卡相关的模块,则对***进程进行HOOK(注入)。
S304,此时,如果虚拟机的会话管理模块尚未提示连接虚拟机,则所有接口会返回一个值,如返回值SCARD_E_NO_SERVICE,该返回值表示***的智能卡服务还未开始。
S305,如果虚拟机的会话管理模块提示连接该虚拟机,则用户连接上虚拟机,该app hook模块检测当前重定向方式,此时重定向方式为设备接口层重定向。
在该设备接口层重定向方式下,该智能卡中消息的处理过程参见图4。具体地,首先由应用模块发起消息,该消息传递到协议厂商实现的虚拟USB驱动模块。该虚拟USB驱动模块将该消息转发给协议服务端的传输模块。该消息经过使用厂商定义的桌面云协议,再通过网络传输。然后该消息到达协议客户端后交给客户端的虚拟USB驱动模块。该客户端的虚拟USB驱动模块将消息传递下去,再由客户端的智能卡设备处理该消息并给出回应。最后经该智能卡设备处理后,回应消息至应用模块。
S306,所有设备API,如SCard API(智能卡API),均经过该app hook模块,此时该app hook模块单独启用一个线程a,以监控阻塞的context(上下文内容),且该context(上下文内容)能够示出智能卡、接口以及阻塞情况之间的对应关系。
下述步骤S307至步骤S312阐述的是,如何实时地将重定向方式切换至API重定向。
S307,该app hook模块判定用户是否登陆虚拟机。
S308,如果用户未登录虚拟机,所有接口返回一个值,如返回值SCARD_E_NO_SERVICE,表示智能卡服务还未开始。
S309,如果用户登录虚拟机,根据配置模块可知,此时已配置重定向方式为设备接口层重定向,则调用与该智能卡状态变化相关的接口,并在该接口阻塞时,保存与该接口相应的context(上下文内容)。
一个例子中,由应用模块(applications)进行接口调用,调用SCardGetStatusChange接口(智能卡获取状态变化接口)查询智能卡状态。如果入参timeout(超时)的参数值为-1等负数,说明该接口SCardGetStatusChange需要被阻塞。此时由驱动完成对该接口的阻塞,apphook模块仅需保存该接口相应的context(上下文内容),该context(上下文内容)能够示出智能卡、接口以及被阻塞情况之间的对应关系。例如context示出了智能卡1中的SCardGetStatusChange接口阻塞、智能卡2中的SCardGetStatusChange接口不阻塞、智能卡3中的SCardGetStatusChange接口阻塞等;也就是说,该context示出了多个与智能卡状态变化相关接口的阻塞情况;因此,保存该context是为了根据该context中的信息,释放阻塞的接口。一个例子中,在智能卡数量为多个情况下,如果需要切换重定向方式,则该多个智能卡重定向方式同时切换,且均由设备接口层重定向切换至API重定向,或者同时由API重定向切换至设备接口层重定向。S310,基于虚拟机的断开,app hook模块(应用钩子模块)释放该阻塞接口,并构造智能卡不在位状态的消息通知。
一个例子中,用户主动断开虚拟机或者由于网络异常导致客户端与虚拟机之间协议消息回应超时,此时线程a监控到虚拟机断开消息,则该apphook模块释放该阻塞的SCardGetStatusChange接口,并向应用模块(applications)构造智能卡拔出的消息通知,即智能卡不在位的消息通知。
进一步地,该app hook模块使用SCardCancel(智能卡取消)接口释放所有阻塞接口。
S311,应用模块(applications)调用SCard API(智能卡API),所有接口返回一个数值,如返回值SCARD_E_NO_SERVICE,表示智能卡服务未开始。
S312,用户重连虚拟机。依据配置模块中的配置信息,app hook模块将智能卡的重定向方式切换至API重定向。
在此API重定向方式下,智能卡的消息处理过程参见图4。具体地,首先由应用模块发起消息,该消息传递到协议厂商实现的app hook模块。该app hook模块将该消息转发给协议服务端的传输模块,该消息经过使用厂商定义的桌面云协议通过网络传输。然后该消息到达协议客户端后交给客户端的智能卡资源管理器。该智能卡资源管理器将该消息传递下去,再由客户端的智能卡设备处理该消息并给出回应。最后经该智能卡设备处理后,回应消息至该应用模块。
图5为本发明一个实施例的从API重定向切换到设备接口层重定向的方法流程图。
下述步骤501至步骤505产生的是,如何通过API重定向方式将客户端的智能卡重定向至虚拟机。
S501,启动虚拟机。
S502,app hook模块(应用钩子模块)检测***进程是否加载了与智能卡相关的模块,例如检测是否加载了windows***的winscard模块。
S503,如果app hook模块检测到已加载到该与智能卡相关的模块,则对***进程进行HOOK(注入)。
S504,此时,如果虚拟机的会话管理模块尚未提示连接虚拟机,则apphook模块返回一个值,如返回值SCARD_E_NO_SERVICE,该返回值表示***的智能卡服务还未开始。
S505,如果虚拟机的会话管理模块提示连接该虚拟机,则用户连接上该虚拟机,该app hook模块检测当前重定向方式,此时重定向方式为API重定向。
在该API重定向方式下,该智能卡消息处理过程参见图4。具体地,首先由应用模块发起消息,该消息传递到协议厂商实现的app hook模块。该app hook模块将该消息转发给协议服务端的传输模块,该消息经过使用厂商定义的桌面云协议通过网络传输。然后该消息到达协议客户端后交给客户端的智能卡资源管理器。该智能卡资源管理器将该消息传递下去,再由客户端的智能卡设备处理该消息并给出回应。最后经该智能卡设备处理后,回应消息至该应用模块。
S506,所有设备API,如SCard API(智能卡API),均经过该app hook模块,此时该app hook模块单独启用一个线程b,以监控阻塞的context(上下文内容),且该context(上下文内容)能够示出智能卡、接口以及阻塞情况之间的对应关系。
下述步骤S507至步骤S513阐述的是,如何实时地将重定向方式切换至设备接口层重定向。
S507,该app hook模块判定用户是否登陆虚拟机。
S508,如果用户未登录虚拟机,所有接口返回一个值,如返回值SCARD_E_NO_SERVICE,表示智能卡服务尚未开始。
S509,如果用户登录虚拟机,根据配置模块可知,此时已配置重定向方式为API重定向,则调用与该智能卡状态变化相关的接口,并在该接口需要阻塞时,app hook模块阻塞该接口。
一个例子中,由应用模块(applications)进行接口调用,调用SCardGetStatusChange接口(智能卡获取状态变化接口)查询智能卡状态。如果入参timeout的参数值为-1,说明该接口SCardGetStatusChange需要阻塞,则由app hook模块阻塞该接口。需要说明的是,该SCardGetStatusChange接口什么时候需要被阻塞由运行该智能卡的***决定,只要该***发送至该SCardGetStatusChange接口的入参timetout为负数,则该SCardGetStatusChange接口需要被阻塞,直到智能卡状态发生变化。
S510,app hook模块定时轮询,以查询智能卡状态变化情况,如果智能卡状态发生变化,则释放该阻塞的接口。
一个例子中,app hook模块定时轮询,去客户端查询智能卡状态是否发生变化,如果智能卡由在位状态变为不在位状态或者由不在位状态变为在位状态,则释放阻塞的SCardGetStatusChange接口。
S511,基于虚拟机的断开(用户主动断开虚拟机或者由于网络异常导致客户端与虚拟机之间协议消息回应超时),应用模块调用智能卡API(SCard API),构造智能卡不在位的消息通知,即向应用模块发送智能卡不在位的消息通知。所有接口(包括SCardGetStatusChange接口)返回一个值,如返回值SCARD_E_NO_SERVICE,表示智能卡服务未开始。
S512,用户重连虚拟机。依据配置模块中的配置信息,app hook模块将智能卡的重定向方式切换至设备接口层重定向。
在此设备接口层重定向方式下,智能卡中消息的处理过程参见图4。具体地,首先由应用模块发起消息,该消息传递到协议厂商实现的虚拟USB驱动模块。该虚拟USB驱动模块将该消息转发给协议服务端的传输模块。该消息经过使用厂商定义的桌面云协议,再通过网络传输。然后该消息到达协议客户端后交给客户端的虚拟USB驱动模块。该客户端的虚拟USB驱动模块将消息传递下去,再由客户端的智能卡设备处理该消息并给出回应。最后经该智能卡设备处理后,回应消息至应用模块。
图6是本发明一个实施例的从设备接口层重定向切换至API重定向的装置示意图。
客户端通过网络将该客户端中的智能卡重定向至虚拟机,该智能卡被***至客户端,该虚拟机包括app hook模块601(应用钩子模块601)、配置模块602、会话管理模块603、应用模块604。
该应用模块604在该虚拟机被登录情况下,用于调用与该智能卡状态变化相关的接口。
该app hook模块601用于在该与智能卡变化状态相关接口需要被阻塞时,保存与该接口相应的上下文内容(context);该app hook模块601还用于虚拟机断开情况下,释放该被阻塞接口,并构造该智能卡不在位状态的消息通知;并在该虚拟机被连接后,用于将该智能卡重定向方式切换至API重定向。
该会话管理模块603用于提示用户已连接虚拟机。
该配置模块602用于提供配置信息,包括由设备接口层重定向切换至API重定向的配置信息、由API重定向切换至设备接口层重定向的配置信息、设备接口层重定向的配置信息、API重定向的配置信息等等。
进一步地,该app hook模块601在虚拟机被启动后,还用于检测***进程是否加载了与智能卡相关的模块(例如检测是否加载了windows***的winscard模块),若加载了该模块,则对***进程进行HOOK(注入)。
进一步地,该app hook模块601还用于启动线程,以监控阻塞的context(上下文内容)。
进一步地,该app hook模块601还用于判定用户是否已经登陆虚拟机。
进一步地,该app hook模块601还用于释放被阻塞的接口,并构造智能卡不在位状态的消息通知。
进一步地,该应用模块604用于调用SCardGetStatusChange接口(智能卡获取状态变化接口),以查询智能卡状态。
图7是本发明一个实施例的的从API重定向切换至设备接口层重定向的装置示意图。
客户端通过网络将该客户端中的智能卡重定向至虚拟机,该智能卡被***至客户端,该虚拟机包括app hook模块701(应用钩子模块701)、配置模块702、会话管理模块703、应用模块704。
该应用模块704在该虚拟机被登录情况下,用于调用与该智能卡状态变化相关的接口。
该app hook模块701用于在该与智能卡状态变化相关接口需要被阻塞时,阻塞该接口;以及用于定时轮询,以查询该智能卡状态变化情况,并在其状态发生变化时,释放该被阻塞接口;以及在虚拟机断开时构造智能卡不在位的消息通知;并在该虚拟机被连接后,将该智能卡重定向方式切换至设备接口层重定向。
该会话管理模块703用于提示用户已连接虚拟机。
该配置模块702用于提供配置信息,包括由设备接口层重定向切换至API重定向、由API重定向切换至设备接口层重定向、仅设备接口层重定向、仅API重定向等等。
进一步地,该app hook模块701还用于在虚拟机被启动后,检测***进程是否加载了与智能卡相关的模块(例如检测是否加载了windows***的winscard模块),若加载了该模块,则对***进程进行HOOK(注入)。
进一步地,该app hook模块701还用于启动线程,以监控阻塞的context(上下文内容)。
进一步地,该app hook模块701还用于判定用户是否已经登陆虚拟机。
进一步地,该应用模块704在虚拟机被断开后,还用于调用智能卡API(SCard API)。
进一步地,该应用模块704还用于调用SCardGetStatusChange接口(智能卡获取状态变化接口),以查询智能卡状态。
综上,本发明切换重定向方式,仅需要用户断开虚拟机后再连接虚拟机,就能够实现,不需要用户重新启动虚拟机。在现有技术中,如果要切换重定向方式,就需要热启动虚拟机还要用户修改虚拟机中的与新的定向方式相对应的文件或者需要用户修改注册表项。并且重连虚拟机相对于热启动虚拟机来说,操作时间更短,用户体验更佳。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (18)
1.一种重定向方式切换方法,其中,该重定向方式是将客户端中的设备重定向至虚拟机,该方法包括:
步骤a,在设备接口层重定向方式下,应用模块调用与所述设备状态变化相关的接口,并在该接口阻塞时,保存与该接口相应的上下文内容;
步骤b,基于所述虚拟机的断开,应用钩子模块根据所述上下文内容释放所述阻塞接口,并构造该设备不在位状态的消息通知;
步骤c,基于所述虚拟机的连接,所述应用钩子模块将该设备重定向方式切换至API重定向。
2.根据权利要求1所述的重定向方式切换方法,其特征在于,所述设备状态变化相关的接口是智能卡获取状态变化接口。
3.根据权利要求1或2所述的重定向方式切换方法,其特征在于,在所述步骤b中,通过智能卡取消接口释放所述阻塞接口。
4.根据权利要求1至3之一所述的重定向方式切换方法,其特征在于,在所述步骤a中,在该接口阻塞时,是在该接口需要被阻塞时由***驱动完成对该接口的阻塞。
5.根据权利要求1至4之一所述的重定向方式切换方法,其特征在于,所述上下文内容示出的是,所述设备、接口以及阻塞情况之间的对应关系。
6.根据权利要求1至5之一所述的重定向方式切换方法,其特征在于,在所述步骤b之后所述步骤c之前还包括:
应用模块调用智能卡API,所有接口返回一个数值,以表示该设备服务未开始。
7.一种重定向方式切换方法,其中,该重定向方式是将客户端中的设备重定向至虚拟机,该方法包括:
步骤d,在API重定向方式下,应用模块调用与所述设备状态变化相关的接口,并在该接口需要阻塞时,应用钩子模块阻塞该接口;
步骤e,所述应用钩子模块轮询,以查询所述设备状态变化情况,并在该设备状态发生变化时,释放所述阻塞接口;
步骤f,基于虚拟机的断开,构造所述设备不在位的消息通知;
步骤g,基于所述虚拟机的连接,所述应用钩子模块将该设备重定向方式切换至设备接口层重定向。
8.根据权利要求7所述的重定向方式切换方法,其特征在于,所述设备状态变化相关的接口是智能卡获取状态变化接口。
9.根据权利要求7或8所述的重定向方式切换方法,其特征在于,在所述步骤b中,通过智能卡取消接口释放所述阻塞接口
10.根据权利要求7至9之一所述的重定向切换方法,其特征在于,在所述步骤f之后包括,所有接口返回一个值,以表示该设备服务尚未开始。
11.一种重定向切换装置,其中,该重定向方式是将客户端中的设备重定向至虚拟机,其特征在于,该虚拟机包括应用钩子模块、应用模块;
所述应用模块在设备接口层重定向方式下用于调用与所述设备状态变化相关的接口;
所述应用钩子模块用于在所述与设备变化状态相关接口阻塞时,保存与该接口相应的上下文内容;以及在虚拟机断开情况下,根据所述上下文内容释放该阻塞接口,构造该设备不在位状态的消息通知;并在连接该虚拟机后,将设备重定向方式切换至API重定向。
12.根据权利要求11所述的重定向方式切换装置,其特征在于,所述设备状态变化相关的接口是智能卡获取状态变化接口。
13.根据权利要求11或12所述的重定向方式切换装置,其特征在于,所述应用钩子模块通过智能卡取消接口释放所述阻塞接口。
14.根据权利要求11至13之一所述的重定向方式切换装置,其特征在于,所述与设备变化状态相关接口阻塞是在该接口需要被阻塞时由***驱动完成对该接口的阻塞。
15.根据权利要求11至14之一所述的重定向方式切换装置,其特征在于,所述上下文内容示出的是,所述设备、接口以及阻塞情况之间的对应关系。
16.一种重定向切换装置,其中,该重定向方式是将客户端中的设备重定向至虚拟机,其特征在于,该虚拟机包括应用钩子模块、应用模块;
所述应用模块在API重定向方式下用于调用与所述设备状态变化相关的接口;
所述应用钩子模块用于在所述与设备变化状态相关接口需要阻塞时阻塞该接口;以及用于轮询,以查询该设备状态变化情况,并在该设备状态发生变化时,释放所述被阻塞接口;以及在虚拟机断开时构造该设备不在位的消息通知;并用于在连接该虚拟机后,将该设备重定向方式切换至设备接口层重定向。
17.根据权利要求16所述的重定向方式切换装置,其特征在于,所述设备状态变化相关的接口是智能卡获取状态变化接口。
18.根据权利要求16或17所述的重定向方式切换装置,其特征在于,所述与设备变化状态相同接口需要阻塞时通过智能卡取消接口释放所述阻塞接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510725296.8A CN106656916B (zh) | 2015-10-30 | 2015-10-30 | 一种桌面云场景下实时切换重定向方式的装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510725296.8A CN106656916B (zh) | 2015-10-30 | 2015-10-30 | 一种桌面云场景下实时切换重定向方式的装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106656916A true CN106656916A (zh) | 2017-05-10 |
CN106656916B CN106656916B (zh) | 2019-10-01 |
Family
ID=58830830
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510725296.8A Active CN106656916B (zh) | 2015-10-30 | 2015-10-30 | 一种桌面云场景下实时切换重定向方式的装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106656916B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7742398B1 (en) * | 2004-04-12 | 2010-06-22 | Azul Systems, Inc. | Information redirection |
CN103685508A (zh) * | 2013-08-28 | 2014-03-26 | 东方证券股份有限公司 | 基于云桌面平台低带宽模式下的视频图文传输调用方法 |
CN103714020A (zh) * | 2013-12-27 | 2014-04-09 | 普华基础软件股份有限公司 | 一种基于网络的usb设备重定向*** |
CN104539685A (zh) * | 2014-12-19 | 2015-04-22 | 华南理工大学 | 一种OpenStack云桌面的U盘识别***及方法 |
-
2015
- 2015-10-30 CN CN201510725296.8A patent/CN106656916B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7742398B1 (en) * | 2004-04-12 | 2010-06-22 | Azul Systems, Inc. | Information redirection |
CN103685508A (zh) * | 2013-08-28 | 2014-03-26 | 东方证券股份有限公司 | 基于云桌面平台低带宽模式下的视频图文传输调用方法 |
CN103714020A (zh) * | 2013-12-27 | 2014-04-09 | 普华基础软件股份有限公司 | 一种基于网络的usb设备重定向*** |
CN104539685A (zh) * | 2014-12-19 | 2015-04-22 | 华南理工大学 | 一种OpenStack云桌面的U盘识别***及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106656916B (zh) | 2019-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8826402B2 (en) | Management of an instant message session | |
CN106201468B (zh) | 一种截屏的处理方法、装置及电子设备 | |
CN109743358A (zh) | 异步消息接口熔断控制方法、装置、计算机设备及存储介质 | |
CN103812823A (zh) | 虚拟机热迁移时配置信息迁移的方法、设备及*** | |
CN106961658B (zh) | 物联网家电设备离线恢复方法和联网模块 | |
CN104660449B (zh) | 防止堆叠***多主设备Master的方法和设备 | |
CN107948063B (zh) | 一种建立聚合链路的方法和接入设备 | |
CN104462033A (zh) | 在设备间实现编辑操作的方法及设备 | |
CN104506548B (zh) | 一种数据包重定向装置、虚拟机安全保护方法及*** | |
CN105721389A (zh) | 多终端设备互通数据处理和服务响应方法、装置 | |
CN107979539A (zh) | 报文处理方法及装置 | |
CN106547566B (zh) | 通讯服务进程池管理方法及*** | |
CN104216739B (zh) | 一种下载处理方法及装置、终端 | |
US20130090760A1 (en) | Apparatus and method for managing robot components | |
CN107333252B (zh) | 通信异常处理方法、装置及智能卡终端 | |
CN109343944A (zh) | eSIM卡的数据处理方法、装置、终端及存储介质 | |
CN109067645A (zh) | 一种nfv虚拟安全网关与网元设备 | |
CN108170545A (zh) | 一种基于消息中间件的消息传输方法和装置 | |
CN104468221B (zh) | 服务器故障热切换方法、装置和*** | |
CN106169982B (zh) | 扩展端口的处理方法、装置及*** | |
CN104954158A (zh) | 一种连接管理方法及连接池控制设备 | |
CN106656916A (zh) | 一种桌面云场景下实时切换重定向方式的装置及方法 | |
EP3446443B1 (en) | Detection of non-powered device (non-pd) on a power-over-ethernet port based on the data link state information | |
CN114553936A (zh) | 连接方法、装置、电子设备和计算机可读存储介质 | |
CN105323746B (zh) | 一种实现安全管理的方法、终端、平台以及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220224 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technologies Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |