CN116088998A - 通用串行总线usb设备重定向的方法和装置 - Google Patents
通用串行总线usb设备重定向的方法和装置 Download PDFInfo
- Publication number
- CN116088998A CN116088998A CN202111308615.7A CN202111308615A CN116088998A CN 116088998 A CN116088998 A CN 116088998A CN 202111308615 A CN202111308615 A CN 202111308615A CN 116088998 A CN116088998 A CN 116088998A
- Authority
- CN
- China
- Prior art keywords
- usb
- container
- information
- equipment
- character
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 238000012545 processing Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 6
- 239000000306 component Substances 0.000 description 109
- 238000012217 deletion Methods 0.000 description 24
- 230000037430 deletion Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 14
- 230000003993 interaction Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 8
- 238000003780 insertion Methods 0.000 description 7
- 230000037431 insertion Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 239000008358 core component Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/102—Program control for peripheral devices where the programme performs an interfacing function, e.g. device driver
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0042—Universal serial bus [USB]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请实施例提供了一种通用串行总线USB设备重定向的方法和装置,该方法包括:根据容器的身份信息,确定与容器对应的虚拟USB总线驱动和第一字符设备,该身份信息包括容器的身份识别信息和启动信息;将第一字符设备挂载到所述容器中;通过挂载到容器中的第一字符设备和虚拟USB总线驱动获取USB设备的设备信息;根据设备信息创建第一设备节点,并将第一设备节点挂载到容器中。本申请实施例的通用串行总线USB设备重定向的方法和装置,能够在多个容器共享内核的条件下,使得主机能够具备和管理所有容器的USB设备重定向的能力。
Description
技术领域
本申请涉及信息技术领域,并且更具体地,涉及通用串行总线USB设备重定向的方法、计算机装置、计算机设备、芯片系统和计算机可读存储介质。
背景技术
随着网络技术的不断发展和云时代的到来,人们的办公方式也在不断发生改变,由传统的固定电脑办公、移动电脑办公逐渐演化为云办公。
现有云办公的桌面运行在虚拟机中,为了优化云桌面的发放、重建速度,减少桌面开关机、重启时长,提高桌面服务的资源利用率,提高桌面的使用效率,提高桌面部署密度,以及降低用户成本,可对桌面进行容器化改造,使用容器来承载原先运行在虚拟机中的桌面服务。
由于每个虚拟机都有一套独立的操作系统(guest operating system,guestos),因此运行在虚拟机中的每个桌面都独占一个内核(kernel),而一个主机(host)上的所有容器共同运行在该主机的操作系统(host operating system,host os)上,因此所有容器共享该主机操作系统的内核。而USB设备重定向需要利用内核中驱动的能力,因此目前应用于虚拟机中的USB设备重定向技术不适用于容器中的USB重定向。
如何在多个容器共享内核的条件下,使得主机能够具备和管理所有容器的USB设备重定向的能力成为亟待解决的问题。
发明内容
本申请实施例提供一种通用串行总线USB设备重定向的方法、计算机装置、计算机设备、芯片系统和计算机可读存储介质,在多个容器共享内核的条件下,使得主机能够具备和管理所有容器的USB设备重定向的能力。
第一方面,提供了一种通用串行总线USB设备重定向的方法,该方法包括:根据容器的身份信息,确定与容器对应的虚拟USB总线驱动和第一字符设备,身份信息包括容器的身份识别信息和启动信息;将第一字符设备挂载到容器中;通过挂载到容器中的第一字符设备和虚拟USB总线驱动获取USB设备的设备信息;根据设备信息创建第一设备节点,并将第一设备节点挂载到容器中。
应理解,身份识别信息可以是用于唯一标识用户的唯一身份标识,例如可以是用户身份证明(user identification,UID)。启动信息可以是用于指示容器当前状态为启动状态的指示信息。
应理解,确定与所述容器对应的虚拟USB总线驱动和第一字符设备,可以是创建与所述容器对应的虚拟USB总线驱动和第一字符设备,也可以是将预置的虚拟USB总线驱动和第一字符设备与容器进行关联。
还应理解,根据设备信息创建第一设备节点包括:根据设备信息在内核中匹配到相应的USB设备驱动,并将设备信息发送给相应的USB设备驱动,USB设备驱动根据设备信息创建第一设备节点。
还应理解,将第一字符设备挂载到容器中包括:获取第一字符设备的路径信息,并根据第一字符设备的路径信息和身份信息将第一字符设备挂载到容器中。
还应理解,将第一设备节点挂载到容器中包括:获取第一设备节点的路径信息,并根据第一设备节点的路径信息和身份信息将第一设备节点挂载到容器中。
为了解决在多容器共享内核的情况下,容器与主机内核之间无法进行通信的问题,本申请实施例中提供了一种USB设备重定向的方法,使得容器可以与内核进行通信,内核为容器创建出与USB设备相对应的USB设备节点,最后使得容器中的应用可以发现、操作插入客户端的USB设备并与其进行数据交互。
结合第一方面,在第一方面的某些实现方式中,接收来自于USB设备的数据;通过挂载到容器中的第一字符设备,将数据发送至虚拟USB总线驱动;通过虚拟USB总线驱动,将数据发送至挂载到容器中的第一设备节点;通过挂载到容器中的第一设备节点将所述数据发送至对应的应用。
结合第一方面,在第一方面的某些实现方式中,在确定所述USB设备移除的情况下,删除第一设备节点。
应理解,删除第一设备节点,包括:虚拟USB总线获得USB设备的设备移除信息,并将设备移除信息发送给USB设备驱动,USB设备驱动根据设备移除信息删除第一设备节点。
结合第一方面,在第一方面的某些实现方式中,在确定第一设备节点删除的情况下,删除挂载到容器中的第一设备节点。
应理解,在确定第一设备节点删除的情况下,包括:获取到第一设备节点删除信息,其中第一设备节点删除信息包括第一设备节点的路径信息。
还应理解,删除挂载到容器中的第一设备节点,包括:根据第一设备节点删除信息和容器的身份信息删除挂载到容器中的第一设备节点。
结合第一方面,在第一方面的某些实现方式中,在确定所述容器关闭或者所述容器的USB功能被禁用的情况下,删除所述虚拟USB总线驱动和所述第一字符设备。
结合第一方面,在第一方面的某些实现方式中,在确定所述第一字符设备删除的情况下,删除挂载到所述容器中的所述第一字符设备。
第二方面,本申请实施例提供一种计算机设备,该计算机设备包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。
第三方面,本申请实施例提供一种计算机装置,该装置包括处理器和存储器,存储器用于存储程序指令,处理器用于调用程序指令,以执行第一方面或第一方面的任一种可能的实现方式。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机指令,当计算机指令在计算机上运行时,以执行第一方面或第一方面任一种可能的实现方式。
第五方面,本申请实施例提供一种芯片系统,该芯片系统包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有芯片系统的计算机设备,以执行第一方面或第一方面任一种可能的实现方式。
第六方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行第一方面或第一方面任一种可能的实现方式。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本申请实施例的一种USB设备重定向的示意性系统架构图。
图2是根据本申请实施例的USB设备重定向的示意性流程图。
图3是根据本申请实施例的组件初始化的示意性流程图。
图4是根据本申请实施例的容器USB设备更新的示意性流程图。
图5是根据本申请实施例的数据交互的示意性流程图。
图6是根据本申请实施例提供的一种主机的示意性结构框图。
图7是根据本申请实施例提供的一种组件初始化后的主机的示意性结构框图。
图8是根据本申请实施例提供的一种USB设备更新后的主机的示意性结构框图。
图9是根据本申请实施例的USB设备移除时组件删除的示意性流程图。
图10是根据本申请实施例的卸载第二设备节点的示意性流程图。
图11是根据本申请实施例的容器关闭时组件删除的示意性流程图。
图12是根据本申请实施例的卸载第二字符设备的示意性流程图。
图13是根据本申请实施例的一种计算机装置的结构示意图。
图14是根据本申请实施例的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本申请保护的范围。
本申请实施例的技术方案可以应用于各种云桌面环境,例如:虚拟机(virtualmachine)或容器(docker)等。应理解,本申请实施例仅以容器为例进行说明,但本申请并不限于此。
还应理解,在本申请实施例中,客户端可以为瘦客户端(thin client,TC)或胖客户端(thick client)等,应理解,本申请实施例仅以TC为例进行说明,但本申请并不限于此。
还应理解,在本申请实施例中,USB设备(USB device)可以为使用USB接口连接客户端或主机的各种设备,如U盘、读卡器、移动硬盘、打印机、键盘、鼠标等,该USB设备可以与客户端或主机进行设备信息和数据交互。
还应理解,在本申请实施例中,设备参数信息可以包括但不限于:USB设备类型、产品序号(product identification)、厂商序号(vendor identification)以及USB设备插入端口的hub和port属性。
图1是根据本申请实施例的一种USB设备重定向的示意性系统架构图。如图1所示,
在本申请实施例中,USB设备重定向的方法可以包括以下四部分:主机110、容器120、客户端130和USB设备140。
主机110是包含处理器、硬盘、内存等硬件设备的计算机设备,可以管理资源并为用户提供服务。此外,主机110中包含主机操作系统,主机操作系统中的内核可以管理硬件设备和驱动、分配系统资源。
容器120是一个视图隔离,资源可限制,独立文件系统的进程集合。其中,容器120运行在主机110的操作系统上,可以使用操作系统自身支持的机制,并提供相对独立的应用运行的环境,能够让应用间可以互不干扰地独立运行,也提供了资源控制功能,能对其在运行中所使用的资源进行干预。此外,容器120的启动与部署迅速,能够在应用层面根据资源需求快速的部署与调度。
客户端130可以是TC,其可以与主机110中的容器120通过网络传输进行通信,将各类USB设备的各类信息传输到容器120的应用中进行处理,待应用处理完毕后再把处理结果返回给客户端130进行显示。
USB设备140可以通过物理插入的方式与客户端130建立连接,并通过USB协议完成各类信息交互。
可选的,主机110中可以包含多个容器,例如容器150,其中,容器150、客户端160和USB设备170之间的关系可以与上述容器120、客户端130和USB设备140之间的关系相同。
图2是根据本申请实施例的USB设备重定向的示意性流程图。如图2所示,
USB设备重定向主要可以分为以下三个步骤:
步骤210,组件初始化。
步骤220,容器USB设备更新。
步骤230,数据交互。
下面,以图1中的主机110、容器120、客户端130和USB设备140为例,对图2中的各个步骤进行介绍。
图3是根据本申请实施例的组件初始化的示意性流程图。如图3所示的方法可以由如图1所示的主机110或者主机110中的部件(例如芯片等)实现。
310,获取容器120的身份信息。
在一些实施例中,当主机110中容器120启动时,主机110可以通过挂钩(hook)机制获取容器120的身份信息,用于后续确定与容器120对应的虚拟USB总线驱动和第一字符设备。
在另一些实施例中,用户可以手动选择启用或关闭容器120的USB功能。当用户启动容器120的USB功能的时候,主机110能够获得容器120的身份信息,用于后续确定与容器120对应的虚拟USB总线驱动和第一字符设备。当用户关闭容器120的USB功能的时候,主机110也能够获得容器120的身份信息,用于后续删除与容器120对应的虚拟USB总线驱动和第一字符设备。
其中,身份信息中包括容器120的身份识别信息和启动信息。当用户关闭容器120的USB功能的时候,主机110也能够获得容器120的身份信息,但身份信息中包含容器120的身份识别信息和关闭信息。其中,身份识别信息可以是用于唯一标识用户的唯一身份标识,例如可以是用户身份证明。启动信息和关闭信息可以是用于指示容器当前状态(启动/关闭)指示信息。例如,容器120的启动信息可以是1,代表容器120当前为启动状态;容器120的关闭信息可以是0,代表容器120当前为关闭状态。
320,根据容器120的身份信息,确定与容器120对应的虚拟USB总线驱动和第一字符设备。
在一些实施例中,当主机110获取容器120的身份信息后,主机110能够根据该身份信息中的身份识别信息和启动信息确定容器120启动。主机110在获取到身份信息中的启动信息后,根据内核态中预置的规范在内核态中创建第一字符设备的结构体,并在内核态中进行注册以及在用户态中自动生成第一字符设备,使得内核态和用户态可以使用该第一字符设备。此外,主机110还能够根据内核态中预置的规范在内核态中创建虚拟USB总线驱动的结构体,并在内核态中进行注册,使得内核态和用户态可以使用该虚拟USB总线驱动。
在另一些实施例中,虚拟USB总线驱动和第一字符设备可以预置在主机110中,当主机110获取容器120的身份信息后,主机110能够根据该身份信息中的身份识别信息和启动信息确定容器120启动。主机110在获取到身份信息中的启动信息后,从预置的虚拟USB总线驱动资源池和第一字符设备资源池内中选择一个虚拟USB总线驱动和一个第一字符设备,将选择的虚拟USB总线驱动和第一字符设备分配给容器120。
330,将第一字符设备挂载到容器120中。
在一些实施例中,主机110可以根据身份信息中的身份识别信息确认启动的容器120,并通过回调函数获取的第一字符设备的路径信息,并根据第一字符设备的路径信息将第一字符设备挂载到确认启动的容器120中。
图4是根据本申请实施例的容器USB设备更新的示意性流程图。如图4所示的方法可以由如图1所示的主机110或者主机110中的部件(例如芯片等)实现。
410,获取USB设备140的设备信息。
在一些实施例中,主机110可以通过挂载到容器120中的第一字符设备和虚拟USB总线驱动获取USB设备140的设备信息。其中,设备信息包括USB设备140的插入信息和设备参数信息,USB设备插入信息可以是旗帜(flag)信息,用于表示USB设备插入客户端以及USB设备处于可用状态。此外,插入信息可以是0或1等USB设备140的状态信息指示标识,例如1代表USB设备140插入,0代表USB设备140移除。
420,根据USB设备140的设备信息创建第一设备节点。
在一些实施例中,当主机110获得设备信息中的插入信息后,可以根据设备信息中的设备参数信息在预置在主机110内核中的驱动库中匹配USB设备驱动,并将设备参数信息传输至USB设备驱动。随后,USB设备驱动能够根据设备参数信息创建第一设备节点。
430,将第一设备节点挂载到容器120中。
在一些实施例中,主机110可以根据身份信息确认启动的容器120,并通过回调函数获取的第一字符设备的路径信息,并根据第一字符设备的路径信息将第一字符设备挂载到容器120中。
图5是根据本申请实施例的数据交互的示意性流程图。如图5所示的方法可以由如图1所示的主机110或者主机110中的部件(例如芯片等)实现。
510,接收来自于USB设备140的数据。
在一些实施例中,当USB设备140插入客户端130后,客户端130可以通过USB协议获取USB设备140的数据,并将该数据发送给主机110中的容器120。
520,通过挂载到容器120中的第一字符设备,将所述数据发送至虚拟USB总线驱动。
在一些实施例中,当主机110中的容器120获取USB设备140的数据后,可以将该数据写入挂载到容器120中的第一字符设备,虚拟USB总线驱动可以从挂载到容器120中的第一字符设备读取该数据。
530,通过虚拟USB总线驱动,将数据发送至挂载到容器中的第一设备节点120。
在一些实施例中,当主机110中的虚拟USB总线120获取USB设备140的数据后,可以将该数据发送至USB设备驱动,USB设备驱动可以将该数据发送至挂载到容器120中的第一设备节点。
540,通过挂载到容器120中的第一设备节点120将数据发送至对应的应用。
在一些实施例中,当容器120中的第一设备节点获取USB设备140的数据后,可以将该数据发送至容器120中的应用。最终,容器120中的应用在接收到该数据后,USB设备与容器120中应用之间的信息传输完成。
此外,容器120中的应用与USB设备之间的数据传输也可以反向进行。容器120中的应用可以通过步骤540、步骤530、步骤520和步骤510完成向USB设备的数据传输。
上述组件初始化、设备更新、数据交互的各个步骤可以由主机中运行的组件实现。
为了便于理解本申请实施例,首先对本申请中涉及的几个术语进行简单说明。
客户端中的组件包括:
1,USB驱动
客户端(例如TC)上的USB驱动(USB driver)包括USB总线驱动和USB重定向驱动。USB总线驱动用于感知并获取USB设备的设备信息和数据,并将发送至USB重定向驱动。USB重定向驱动将USB设备的设备信息和数据整合并发送至USB客户端组件。
2,USB客户端组件
USB客户端组件是客户端上(例如TC)上负责转发客户端内核与容器之间和数据的组件,能够将获得的设备信息封装为设备信息列表或将获得的数据封装为数据列表,并发送给USB容器组件。
容器中的组件包括:
1,USB容器组件
USB容器组件是主机中容器内负责转发主机内核与客户端(例如TC)之间的设备信息的组件,能够对获得的设备信息列表或数据列表进行解析,得到相应的设备信息或数据。
2,第二字符设备
第二字符设备(/dev/vuhub)是由USB代理组件挂载到容器中的第一字符设备,容器可以直接使用。
3,第二设备节点
第二设备节点(/dev/usbk-1)是由USB代理组件挂载到容器中的第一设备节点,容器可以直接使用。
主机中的组件包括:
1,USB代理组件
USB代理组件(USB agent)是容器的用户态核心组件,主要包含两大功能:
(1)获取容器信息,容器启动时通知内核进行USB重定向组件初始化,容器关闭时通知内核进行组件删除。
(2)管理所有容器中的所有设备,执行容器中设备的挂载与卸载。
2,第三字符设备
第三字符设备(/dev/vuhub-ctl)主要用于USB代理组件和虚拟USB总线控制器之间容器信息的传输,容器的USB重定向组件初始化与组件删除等均通过对第三字符设备的读写操作来获取信息。
3,虚拟USB总线控制器
虚拟USB总线控制器是容器的内核态核心组件,能够获取容器信息,并根据容器信息创建或删除虚拟USB总线驱动和第一字符设备。
4,虚拟USB总线驱动
虚拟USB总线驱动主要用于管理一个容器中的所有USB设备,每个虚拟USB总线驱动与容器相对应。
5,第一字符设备
第一字符设备(/dev/vuhubk)主要用于USB容器组件和虚拟USB总线之间设备信息或数据的传输,位于主机上,容器无法直接使用。
6,第一设备节点
第一设备节点(/dev/usbk-1)主要用于容器内的应用与USB设备驱动进行数据的传输,位于主机上,容器无法直接使用。
此外,该方案还涉及USB设备,USB设备可以将自身的设备信息和数据等信息传输至客户端,但是,在USB设备插入客户端后,若要USB设备能够正常工作,仍需要通过USB设备重定向的方式来与主机中的容器建立信息传输的通道,使得容器中的应用可以与USB设备进行交互。
图6是根据本申请实施例提供的一种主机的示意性结构框图。如图6所示的主机110中运行有容器120,USB代理组件111,第三字符设备112,虚拟USB总线控制器113。USB代理组件111和第三字符设备112是运行在用户态的组件,虚拟USB总线控制器113是运行在内核态的组件。其中,用户态和内核态的区分可以限制不同组件的访问能力,防止组件获取其他组件的内存数据,或者获取外围设备的数据,用户态中的组件不能直接访问操作系统内核数据结构和组件且不被允许访问外围设备,而内核态中的组件可以直接访问操作系统内核数据结构和组件且被允许访问外围设备。因此,用户态的组件和内核态的组件之间的通信需要通过字符设备来进行。上述组件初始化步骤可以在如图6所示的主机110中实现。
当容器120启动时,USB代理组件111可以获取容器120的身份信息,并根据身份信息初始化USB重定向功能,其中,身份信息可以包含容器120的身份识别信息和容器120的启动信息,其中,启动信息用于确定与容器120对应的虚拟USB总线驱动和第一字符设备。
在一些实施例中,USB代理组件111可以通过主机110的挂钩机制获取容器120的启动信息。具体的,当运行USB代理组件111时,USB代理组件111可以在主机110中进行注册,主机110可以将USB代理组件111与容器120进行关联,当容器120启动时,挂钩机制能够获取容器120的启动信息,并将容器的启动信息发送至USB代理组件111。
USB代理组件111可以将获取到的启动信息写入第三字符设备112。
在一些实施例中,USB代理组件111可以将启动信息和第一指示信息写入第三字符设备112。其中,第一指示信息可以指示虚拟USB总线控制器113读取第三字符设备112中容器120的启动信息。
USB代理组件111可以将信息写入第三字符设备112,虚拟USB总线控制器113可以从第三字符设备112中读取信息。USB设备重定向的组件初始化与组件删除等均通过对第三字符设备112的读写操作来获取信息。通过第三字符设备112,处于用户态的USB代理组件111可以实现与处于内核态的虚拟USB总线控制器113之间的通信。
虚拟USB总线控制器113可以从第三字符设备112中读取第一指示信息,并根据第一指示信息从第三字符设备112中读取启动信息。
在一些实施例中,虚拟USB总线控制器113可以根据获得的启动信息确定容器120启动,并根据内核态中预置的规范在内核态中创建第一字符设备的结构体,并在内核态中进行注册以及在用户态中自动生成第一字符设备,使得内核态和用户态可以使用该第一字符设备。此外,虚拟USB总线控制器113还能够根据内核态中预置的规范在内核态中创建虚拟USB总线驱动的结构体,并在内核态中进行注册,使得内核态可以使用该虚拟USB总线驱动。
在另一些实施例中,虚拟USB总线驱动和第一字符设备可以预置在主机110中,当虚拟USB总线控制113获取容器120的启动信息后,虚拟USB总线控制113能够根据该启动信息确定容器120启动,并从预置的虚拟USB总线驱动资源池和第一字符设备资源池内中选择一个虚拟USB总线驱动和一个第一字符设备,将选择的虚拟USB总线驱动和第一字符设备分配给容器120。
USB代理组件111可以获取第一字符设备的路径信息,并且根据第一设备节点的路径信息和容器120的身份识别信息将第一设备节点挂载到容器120中。
在一些实施例中,USB代理组件111有以下动作:监控第一字符设备的状态更新信息;当第一字符设备创建时,USB代理组件111执行回调函数,回调函数能够获得第一字符设备的路径信息并将第一字符设备的路径信息发送给USB代理组件111。因此,USB代理组件111可以根据第一字符设备的路径信息和容器120的身份识别信息将第一字符设备挂载到容器120中。挂载到容器120中的第一字符设备即第二字符设备。
在一些实施例中,USB代理组件还可以对第二字符设备进行重命名,例如将/dev/vuhubk(即第二字符设备)重命名为/dev/vuhub。
经过上述组件初始化步骤,实现了USB容器组件与主机内核之间的通信,使得容器能够通过第二字符设备与主机内核进行信息的交互,并为后续的容器USB设备更新和数据交互提供了基础。
图7是根据本申请实施例提供的一种组件初始化后的主机的示意性结构框图。如图7所示的主机110中运行有容器120,USB代理组件111,第三字符设备112,虚拟USB总线控制器113,虚拟USB总线驱动115,第一字符设备114,客户端130和USB设备140,其中,容器120中包含USB容器组件121和挂载到容器120中的第一字符设备114,客户端130中包含USB客户端组件131和USB驱动132。USB代理组件111和第三字符设备112以及第一字符设备114是运行在用户态的组件,虚拟总线控制器113和虚拟USB总线驱动115是运行在内核态的组件。在通过USB代理组件111、第三字符设备112和虚拟USB总线控制器113进行组件初始化后,上述USB设备更新步骤可以在如图7所示的主机110中实现。
USB设备140在插入客户端后,USB驱动132可以通过USB协议获取USB设备140的设备信息,并将设备信息发送给USB客户端组件131,其中,设备信息包括USB设备插入信息和设备参数信息,USB设备插入信息可以是旗帜(flag)信息,用于表示USB设备插入客户端以及USB设备处于可用状态。
在一些实施例中,USB驱动132包含USB总线驱动和USB重定向驱动,其中,USB总线驱动可以通过USB协议获取设备信息,并将设备信息发送给USB重定向驱动,USB重定向驱动可以将设备信息整合后发送给USB客户端组件。
USB客户端组件131能够通过网络传输的方式将获取的设备信息发送给容器120中的USB容器组件121。
在一些实施例中,USB客户端组件131可以将设备信息封装为设备信息列表,并发送给USB容器组件121。
USB容器组件121可以获取设备信息,并将设备信息和第二指示信息写入第二字符设备。其中,第二指示信息用于指示虚拟USB总线驱动115从第二字符设备中读取设备信息。
在一些实施例中,当USB容器组件121获取到设备信息列表时,USB容器组件121可以对获取的设备信息列表进行解析,得到设备信息,并将设备信息和第二指示信息写入第二字符设备。
USB容器组件121可以将信息写入第二字符设备,虚拟USB总线驱动115可以从第二字符设备中读取信息。USB设备重定向的USB设备更新与组件删除等均通过对第二字符设备的读写操作来获取信息。通过第二字符设备,处于用户态的USB容器组件121可以实现与处于内核态的虚拟USB总线驱动115之间的通信。
虚拟USB总线驱动115可以读取第二字符设备中的第二指示信息,并根据第二指示信息从第二字符设备中读取设备信息。此外,虚拟USB总线驱动115可以将读取的设备信息提供给主机内核,主机内核可以根据设备信息在预置的多个驱动中寻找匹配的USB设备驱动,并将设备信息发送给USB设备驱动。当USB设备驱动获取到设备信息后,USB设备驱动可以根据设备信息创建第一设备节点。
USB代理组件111可以获取第一设备节点的路径信息,并且根据第一设备节点的路径信息和容器120的身份识别信息将第一设备节点挂载到容器120中。挂载到容器120中的第一设备节点即第二设备节点。
在一些实施例中,USB代理组件111有以下动作:监控第一设备节点的状态更新信息;当第一设备节点创建时,USB代理组件111执行回调函数,回调函数能够获得第一设备节点的路径信息并将第一设备节点的路径信息发送给USB代理组件111。因此,USB代理组件111可以根据第一设备节点的路径信息和容器120的身份识别信息将第一设备节点挂载到容器120中。
通过上述容器设备更新步骤,使得内核中创建出来的第一设备节点能够被添加到对应的容器中,实现了容器中的应用与主机内核之间的通信,并使得容器中的应用能够通过第二设备节点与主机内核进行信息的交互,为后续容器与USB设备之间的数据交互提供了基础。
图8是根据本申请实施例提供的一种USB设备更新后的主机的示意性结构框图。如图8所示的主机110中运行有容器120,USB代理组件111,第三字符设备112,虚拟USB总线控制器113,虚拟USB总线驱动115,第一字符设备114,USB设备驱动116,第一设备节点114,客户端130和USB设备140,其中,容器120中包含USB容器组件121,挂载到容器120中的第一字符设备114,挂载到容器120中的第一设备节点114和应用122,客户端130中包含USB客户端组件131和USB驱动132。在通过USB代理组件111、第三字符设备112和虚拟USB总线控制器113进行组件初始化,以及进行USB设备更新后,上述数据交互步骤可以在如图8所示的主机110中实现。
USB驱动132可以通过USB协议获取USB设备140中的数据,并将数据发送给USB客户端组件131。
在一些实施例中,USB驱动132包含USB总线驱动和USB重定向驱动,其中,USB总线驱动可以通过USB协议获取数据,并将USB设备信息发送给USB重定向驱动,USB重定向驱动可以将数据整合后发送给USB客户端组件131。
USB客户端组件131能够通过网络传输的方式将数据发送给USB容器组件121。
在一些实施例中,USB客户端组件可以将数据封装为数据列表,并发送给USB容器组件121。
USB容器组件121可以获取数据,并将数据和第三指示信息写入第二字符设备。其中,第三指示信息用于指示虚拟USB总线驱动115从第二字符设备中读取数据。
在一些实施例中,当USB容器组件121获取到数据列表时,USB容器组件121可以对获取的数据列表进行解析,得到数据,并将数据和第三指示信息写入第二字符设备。
虚拟USB总线驱动115可以读取第三指示信息,根据第三指示信息从第二字符设备中读取数据,并将数据发送给USB设备驱动116。
USB设备驱动116可以将数据发送给第二设备节点。
第二设备节点将获取的数据发送给应用122,完成从USB设备140至应用122的数据传输。
在一些实施例中,上述从USB设备140至应用122的数据传输过程可逆,具体过程如下:
首先,容器120中的应用122可以通过读写的方式与第二设备节点进行数据交互。
其次,USB设备驱动116可以通过读写的方式与第二设备节点进行数据交互。
随后,USB设备驱动116可以与虚拟USB总线驱动115进行数据交互。
随后,虚拟USB总线驱动115可以通过读写的方式与第二字符设备进行数据交互。
随后,USB容器组件121可以通过读写的方式与第三字符设备进行数据交互。
随后,USB客户端组件131可以与USB容器组件121进行数据交互。
随后,USB驱动802可以与USB客户端组件131进行数据交互。
最终,USB驱动802可以通过USB协议与USB设备140进行数据交互,完成容器120中的应用122与USB设备140之间通过上述组件初始化和USB设备更新步骤建立的数据传输通道进行数据交互。
以上描述了根据本申请实施例完成USB设备重定向后的数据交互过程,下面分别结合图9至图12描述了容器关闭、USB设备移除、第一字符设备删除和第一设备节点删除时的组件删除或卸载过程。
图9是本申请实施例的USB设备移除时组件删除的示意性流程图。如图9所示的方法可以由如图8所示的主机110或者主机110中的部件(例如芯片等)实现。
1010,确认USB设备140移除。
在一些实施例中,USB设备140从客户端130移除后,主机110可以通过挂载到容器120中的第一字符设备114和虚拟USB总线驱动115获取USB设备140的设备信息。其中,设备信息包括USB设备140的移除信息和设备参数信息,USB设备移除信息可以是旗帜(flag)信息,用于表示USB设备移除客户端以及USB设备处于不可用状态。此外,移除信息可以是0或1等USB设备140的状态信息指示标识,例如1代表USB设备140插入,0代表USB设备140移除。
1020,删除第一设备节点117。
在一些实施例中,当主机110获得USB设备140的移除信息后,USB设备驱动116能够根据从USB设备140传输至USB设备驱动116的设备参数信息删除第一设备节点117。
图10是根据本申请实施例的卸载第二设备节点的示意性流程图。如图10所示的方法可以由如图8所示的主机110或者主机110中的部件(例如芯片等)实现。
1110,确定第一设备节点117删除。
在一些实施例中,主机110可以从第一设备节点117获取第一设备节点117的删除信息,其中,第一设备节点117的删除信息包括第一设备节点117的路径信息。
具体的,主机110有以下动作:监控第一设备节点117的状态更新信息;当第一设备节点117删除时,主机110执行回调函数,回调函数能够获得第一设备节点117的删除信息并将第一设备节点117的删除信息发送给主机110。
1120,删除挂载到容器120中的第一设备节点117。
在一些实施例中,主机110可以根据身份信息确认容器120,并通过回调函数获取的第一字符设备的删除信息,并根据第一字符设备的删除信息将挂载到容器120中的第一设备节点117即第二设备节点从容器120中卸载。
图11是根据本申请实施例的容器关闭时组件删除的示意性流程图。如图11所示的方法可以由如图1所示的主机110或者主机110中的部件(例如芯片等)实现。
1210,确定容器120关闭。
在一些实施例中,当主机110中容器120关闭时,主机110可以通过挂钩机制获取容器120的身份信息,用于后续删除与容器120对应的虚拟USB总线驱动115和第一字符设备114。其中,身份信息中包括容器120的身份识别信息和关闭信息。
在另一些实施例中,用户可以手动选择关闭容器120的USB功能。当用户关闭容器120的USB功能的时候,主机110能够获得容器120的身份信息,用于后续删除与容器120对应的虚拟USB总线驱动115和第一字符设备114。其中,身份信息中包括容器120的身份识别信息和关闭信息。
其中,身份识别信息可以是用于唯一标识用户的唯一身份标识,例如可以是用户身份证明。关闭信息可以是用于指示容器当前状态为关闭状态的指示信息。例如,容器120的关闭信息可以是0,代表容器120当前为关闭状态。
1220,删除第一字符设备114和虚拟USB总线驱动115。
在一些实施例中,当主机110获取容器120的身份信息后,主机110能够根据该身份信息中身份识别信息和关闭信息确定容器120关闭。主机110在获取到身份信息中的关闭信息后,根据内核态中预置的规范在内核态中删除第一字符设备114的结构体,并在内核态中进行注销以及在用户态中自动删除第一字符设备114。此外,主机110还能够根据内核态中预置的规范在内核态中删除虚拟USB总线驱动115的结构体,并在内核态中进行注销。
在另一些实施例中,虚拟USB总线驱动115和第一字符设备114可以预置在主机110中,当主机110获取容器120的身份信息后,主机110能够根据该身份信息中的身份识别信息和关闭信息确定容器120关闭。主机110在获取到身份信息中的关闭信息后,取消分配给容器120的虚拟USB总线驱动115和第一字符设备114,并将虚拟USB总线驱动115和第一字符设备114回收至预置的虚拟USB总线驱动资源池和第一字符设备资源池内。
图12是根据本申请实施例的卸载第二字符设备的示意性流程图。如图12所示的方法可以由如图8所示的主机110或者主机110中的部件(例如芯片等)实现。
1310,确定第一字符设备114删除。
在一些实施例中,主机110可以从第一字符设备114获取第一字符设备114的删除信息,其中,第一字符设备114的删除信息包括第一字符设备114的路径信息。
具体的,主机110有以下动作:监控第一字符设备114的状态更新信息;当第一字符设备114删除时,执行回调函数,回调函数能够获得第一字符设备114的删除信息并将第一字符设备114的删除信息发送给主机110。
1320,删除挂载到容器120中的第一字符设备114。
在一些实施例中,主机110可以根据身份信息确认关闭的容器120,并通过回调函数获取的第一字符设备114的删除信息,并根据第一字符设备114的删除信息将容器120中的第一字符设备114即第二字符设备从容器120中卸载。
通过以上第二字符设备和第二设备节点的卸载,可以有效的减少对主机内部资源的占用以及防止USB设备中信息的泄露,还可以避免关闭的容器在重新启动时,无法找到对应的USB设备并进行数据传输的问题。
根据本申请实施例提供的USB设备重定向的方法,可以在多个容器在共享主机内核的条件下,使得容器内的USB容器组件可以与主机内核进行设备信息和数据的传输,并且主机内核可以匹配到相应的USB设备驱动,并通知USB设备驱动为容器创建出虚拟的USB设备,即第一设备节点,使得容器内的应用与主机内核进行数据的传输,最后使得容器能够发现并使用插入的USB设备。
以上描述了根据本申请实施例的USB设备重定向的方法,下面分别结合图13和图14描述根据本申请实施例的USB设备重定向的计算机装置和设备。
本申请实施例还提供了一种计算机存储介质,该计算机存储介质中存储有程序指令,所述程序执行时可包括如图2-12对应实施例中的USB设备重定向的方法的部分或全部步骤。
图13是根据本申请实施例的一种计算机装置的结构示意图。该计算机装置1300包括获取模块1301和处理模块1302。
获取模块1301,用于获取容器的身份信息、第一字符设备和第一设备节点的路径信息、USB设备的设备信息、第一字符设备和第一设备节点的删除信息以及USB设备的数据,执行图2的方法中的部分或全部步骤,执行图3的方法中的步骤310、执行图4的方法中的步骤410、执行图5的方法中的步骤510、执行图10的方法中的步骤1010、执行图11的方法中的步骤1110、执行图12的方法中的步骤1210以及执行图13的方法中的步骤1310。
处理模块1302,用于将启动信息从USB代理组件传输至虚拟USB总线控制器,并根据容器的启动信息确定容器的虚拟USB总线驱动和容器的第一字符设备,执行图2的方法中的步骤210以及执行图3的方法中的步骤310和320。
处理模块1302,还用于根据所述第一字符设备路径信息和所述容器的启动信息将所述第一字符设备挂载到所述容器中,执行图2的方法中的步骤210以及执行图3的方法中的步骤330。
处理模块1302,还用于将设备信息从USB容器组件传输至虚拟USB总线控制器,并根据USB设备信息匹配到USB设备驱动,USB设备驱动再根据USB设备信息创建第一设备节点,执行图2的方法中的步骤220以及执行图4的方法中的步骤410和420。
处理模块1302,还用于根据所述第一设备节点路径信息和所述容器的启动信息将所述第一设备节点挂载到所述容器中,执行图2的方法中的步骤220以及执行图4的方法中的步骤430。
处理模块1302,还用于主机内部的数据传输,执行图5中的部分或全部步骤。
处理模块1302,还用于主机内部的组件删除和容器内部的组件卸载,执行图9至图12中的部分或全部步骤。
图14是根据本申请实施例的一种计算机设备的结构示意图。图14所示的计算机设备1400包括:处理器1401、存储器1402和通信接口1403,处理器1401、存储器1402和通信接口1403通过总线1404进行通信。接收器1405用于接收来自于主机的待处理请求,发送器1406用于将存储器1402中存储的待处理请求发送至计算集群中的另一计算设备。
上述本申请实施例揭示的方法可以应用于处理器1401中,或者由处理器1401实现。处理器1401可以是中央处理器(central processing unit,CPU),还可以是其他通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field programmable gatearray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。在实现过程中,上述方法的各步骤可以通过处理器1401中的硬件的集成逻辑电路或者软件形式的指令完成。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储器1402中,该存储器1402可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(synchronousDRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data date SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambusRAM,DR RAM)处理器1401读取存储器1402中的指令,结合其硬件完成上述方法的步骤。
存储器1402可以存储用于执行上述实施例中计算机设备执行的方法的指令。处理器1401可以执行存储器1402中存储的指令结合其他硬件(例如接收器1405和发送器1406)完成上述实施例中计算机设备的步骤,具体工作过程和有益效果可以上述实施例中的描述。
存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlinkDRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
总线1404除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都标为总线1404。
本申请实施例还提供了一种芯片系统,该芯片系统包括逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行上述实施例中计算机设备执行的各个步骤。
根据本申请实施例提供的方法,本申请还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在计算机上运行时,使得该计算机执行上述实施例中的各个步骤。
根据本申请实施例提供的方法,本申请还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在计算机上运行时,使得该计算机执行上述实施例中的各个步骤。
在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令或程序代码完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应注意,本申请实施例中的处理器可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令或程序代码完成。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
本申请的实施例提供了USB设备重定向的方法、装置和设备。对于本领域技术人员将会显而易见的是,本申请的实施例可以应用于各种类型的计算机设备。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种通用串行总线USB设备重定向的方法,其特征在于,包括:
根据容器的身份信息,确定与所述容器对应的虚拟USB总线驱动和第一字符设备,所述身份信息包括所述容器的身份识别信息和启动信息;
将所述第一字符设备挂载到所述容器中;
通过挂载到所述容器中的所述第一字符设备和所述虚拟USB总线驱动获取USB设备的设备信息;
根据所述设备信息创建第一设备节点,并将所述第一设备节点挂载到所述容器中。
2.根据权利要求1所述的方法,其特征在于,还包括:
接收来自于所述USB设备的数据;
通过挂载到所述容器中的所述第一字符设备,将所述数据发送至所述虚拟USB总线驱动;
通过所述虚拟USB总线驱动,将所述数据发送至挂载到所述容器中的所述第一设备节点;
通过挂载到所述容器中的所述第一设备节点将所述数据发送至对应的应用。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
在确定所述USB设备移除的情况下,删除所述第一设备节点。
4.根据权利要求3所述的方法,其特征在于,还包括:
在确定所述第一设备节点删除的情况下,删除挂载到所述容器中的所述第一设备节点。
5.根据权利要求1至4中任一项所述的方法,其特征在于,还包括:
在确定所述容器关闭或者所述容器的USB功能被禁用的情况下,删除所述虚拟USB总线驱动和所述第一字符设备。
6.根据权利要求5所述的方法,其特征在于,还包括:
在确定所述第一字符设备删除的情况下,删除挂载到所述容器中的所述第一字符设备。
7.一种计算机装置,其特征在于,包括:
获取模块,用于获取容器的身份信息,所述身份信息包括所述容器的身份识别信息和启动信息;
处理模块,用于根据所述获取模块获取到的所述身份信息,确定与所述容器对应的虚拟USB总线驱动和第一字符设备;
所述处理模块,还用于将所述第一字符设备挂载到所述容器中;
所述获取模块,还用于通过挂载到所述容器中的所述第一字符设备和所述虚拟USB总线驱动获取USB设备的设备信息;
所述处理模块,还用于根据所述设备信息创建所述第一设备节点,并将所述第一设备节点挂载到所述容器中。
8.根据权利要求7所述的装置,其特征在于,还包括:
所述获取模块,还用于接收来自于所述USB设备的数据;
所述处理模块,还用于通过挂载到所述容器中的所述第一字符设备,将所述数据发送至所述虚拟USB总线驱动;
通过所述虚拟USB总线驱动,将所述数据发送至挂载到所述容器中的所述第一设备节点;
通过挂载到所述容器中的所述第一设备节点将所述数据发送至对应的应用。
9.根据权利要求7或8所述的装置,其特征在于,所述处理模块还用于:
在确定所述USB设备移除的情况下,删除所述第一设备节点。
10.根据权利要求9所述的装置,其特征在于,所述处理模块还用于:
在确定所述第一设备节点删除的情况下,删除挂载到所述容器中的所述第一设备节点。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述处理模块还用于:
在确定所述容器关闭或者所述容器的USB功能被禁用的情况下,删除所述虚拟USB总线驱动和所述第一字符设备。
12.根据权利要求11所述的装置,其特征在于,所述处理模块还用于:
在确定所述第一字符设备删除的情况下,删除挂载到所述容器中的所述第一字符设备。
13.一种计算机装置,其特征在于,包括处理器和存储器,所述存储器用于存储程序指令,所述处理器用于调用所述程序指令来执行权利要求1至6中任一项所述的USB设备重定向的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机指令,当计算机指令在计算机上运行时,如权利要求1至6中任一项所述的方法被实现。
15.一种芯片系统,其特征在于,包括:处理器,用于从存储器中调用并运行计算机程序,使得安装有所述芯片系统的计算机设备,执行权利要求1至6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111308615.7A CN116088998A (zh) | 2021-11-05 | 2021-11-05 | 通用串行总线usb设备重定向的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111308615.7A CN116088998A (zh) | 2021-11-05 | 2021-11-05 | 通用串行总线usb设备重定向的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116088998A true CN116088998A (zh) | 2023-05-09 |
Family
ID=86197810
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111308615.7A Pending CN116088998A (zh) | 2021-11-05 | 2021-11-05 | 通用串行总线usb设备重定向的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116088998A (zh) |
-
2021
- 2021-11-05 CN CN202111308615.7A patent/CN116088998A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111290827B (zh) | 数据处理的方法、装置和服务器 | |
US11334427B2 (en) | System and method to reduce address range scrub execution time in non-volatile dual inline memory modules | |
US11429298B2 (en) | System and method for tying non-volatile dual inline memory modules to a particular information handling system | |
US20190065300A1 (en) | Method of retrieving debugging data in uefi and computer system thereof | |
US11461178B2 (en) | System and method to prevent endless machine check error of persistent memory devices | |
JP7241770B2 (ja) | 端末アプリケーション起動方法、装置、およびシステム | |
CN113360893B (zh) | 基于容器的智能合约执行方法、装置及存储介质 | |
CN113961520A (zh) | 动态文件挂载方法、系统、计算机设备及可读存储介质 | |
CN114253749A (zh) | 一种交互方法、装置及电子设备和存储介质 | |
US20200364040A1 (en) | System and Method for Restoring a Previously Functional Firmware Image on a Non-Volatile Dual Inline Memory Module | |
CN114238236A (zh) | 共享文件的访问方法、电子设备及计算机可读存储介质 | |
CN112035393A (zh) | 一种节约双片上系统存储资源的方法、双片上系统 | |
CN116088998A (zh) | 通用串行总线usb设备重定向的方法和装置 | |
CN113064655B (zh) | 一种bios网络启动方法、装置和计算机可读存储介质 | |
CN111767082A (zh) | 计算芯片启动方法、装置和计算机系统 | |
CN115878223A (zh) | 一种双系统云安全手机双容器启动方法 | |
EP2425336A1 (en) | Mobile operating system management method and system | |
CN111666579B (zh) | 计算机设备及其访问控制方法和计算机可读介质 | |
JP2007004704A (ja) | アプリケーションを削除するicカードシステム | |
CN117687703B (zh) | 服务器的启动方法、装置、系统、存储介质和电子设备 | |
JP7501808B2 (ja) | Icチップ | |
CN115982060B (zh) | 一种内存回收方法及相关装置 | |
US11323331B2 (en) | Cloud server and operating method of the same | |
CN117435212A (zh) | 裸金属服务器管理方法及相关装置 | |
US10749972B2 (en) | Method for locating a service and method for proposing a service and corresponding communication network devices, system, computer readable program products and computer readable storage mediums |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |