虚拟通用串行总线设备系统及其数据传输方法

文档序号:6558118阅读:118来源:国知局

专利名称::虚拟通用串行总线设备系统及其数据传输方法
技术领域
:本发明涉及一种虚拟通用串行总线设备系统,尤其涉及一种通过虚拟通用串行总线设备进行数据传输的系统及方法。
背景技术
:通用串行总线(UniversalSerialBus,USB)是一种适用于各种计算机周边装置的总线接口,它可以使计算机主机与各种周边组件均使用统一与标准的方式来互相耦接,进而直接以高传输速率进行信息的交换。随着大量支持通用串行总线(UniversalSerialBus,USB)接口技术的计算机装置的普及,以及Windows操作系统平台的广泛应用,关于通用串行总线接口的使用越来越普及。目前,服务器管理与其他方面对虚拟设备的需求正在逐渐增大,性能良好且具有扩展性的虚拟设备成为必不可少的部件。由于通用串行总线设备的优越性能以及普遍性、通用性,虚拟通用串行总线设备成为虚拟设备的较好选择。现有虚拟通用串行总线技术通过将本地端的具体通用串行总线设备映像成远程通用串行总线设备,可实现远程服务器端10对本地控制台端20的具体通用串行总线类型设备的访问,进而在服务器端10与控制台端20进行通用串行总线设备的数据的传输。如图1所示,图1为现有技术虚拟通用串行总线设备的基本结构及工作原理图。如图所示,控制台端20为系统管理员直接操纵的机器,其中提供有真实的通用串行总线设备,例如图中所示的通用串行总线设备22。服务器端10的设备控制管理器13与控制台端的设备控制管理器23连结,以进行虚拟连结管理。在服务器端10的虚拟通用串行总线驱动12的结构中,具有虚拟主机控制器接口驱动(VHCIDriver)11。控制台端20的通用串行总线驱动21注册为所有种类通用串行总线设备的驱动程序,因此不同的通用串行总线设备均由通用串行总线驱动21接管。通过虚拟通用串行总线技术,将控制台端20的通用串行总线设备22映像为一虚拟通用串行总线设备,则服务器端10可获得共享的通用串行总线设备22为其中的虚拟通用串行总线设备。远程服务器端10的虚拟主机控制器接口驱动11与本地端的通用串行总线驱动21实现了对通用串行总线请求区块传输封包(USBRequestBlock,URB)的截获和传输任务,进而完成对通用串行总线设备22的访问及数据在远程端与本地端的通信。然而,目前的虚拟通用串行总线技术仅限于将本地通用串行总线设备映像成远程通用串行总线设备,在很多情况下,为了硬件设计的简洁,硬件仅提供通用串行总线协议形式的接口,因此在默认情况下只能访问通用串行总线类型的设备。事实上硬件需要访问的数据可能位于非通用串行总线设备上,因此原有的设计方式就对硬件的访问数据类型造成了限制。
发明内容本发明所要解决的技术问题在于提供一种虚拟通用串行总线设备系统及其数据传输方法,以应用于远程端与本地端。通过此虚拟通用串行总线设备系统及其数据传输方法,被虚拟成通用串行总线设备的远程设备可不仅局限于通用串行总线设备,进而达到访问的一致性和简易性,借以解决现有技术所存在的问题及局限。为实现上述目的,本发明所提供的一种虚拟通用串行总线设备系统,应用于一远程端与一本地端的数据传输,其中虚拟通用串行总线设备系统包含有一虚拟通用串行总线主机控制接口驱动器与一媒体驱动模块。在此,虚拟通用串行总线主机控制接口驱动器位于远程端,用以建立一通用串行总线请求区块封包的传输载荷结构;媒体驱动模块位于本地端,用以解析接收的通用串行总线请求区块封包的传输载荷结构,以确定访问本地端的通用串行总线设备、非通用串行总线设备或镜像文件,并转换通用串行总线请求区块封包的通用串行总线请求区块信息为通用串行总线设备、非通用串行总线设备或镜像文件的对应格式信息。而且,依照本发明的虚拟通用串行总线设备系统,媒体驱动模块还包含有一通用串行总线驱动模块、一区块设备驱动模块以及一镜像文件驱动模块。在此,通用串行总线驱动模块接收或发送访问通用串行总线设备的通用串行总线请求区块信息;区块设备驱动模块用以将访问区块设备的通用串行总线请求区块信息转换为区块设备信息;以及镜像文件驱动模块用以将访问镜像文件的通用串行总线请求区块信息转换为镜像文件格式信息。依照本发明的虚拟通用串行总线设备系统,其中区块设备驱动模块在读/写区块设备的数据时,是通过以下公式转换通用串行总线请求区块信息为区块设备信息Sector=(LBAmodSecTrk)+1;Head=(LBA/SecTrk)modHeadTrk;Track=(LBA/SecTrk)/HeadTrk;其中,LBA为包含在通用串行总线请求区块信息中的区块设备的逻辑区块地址;HeadTrk为区块设备中每个磁道中磁道头的个数;SecTrk为每个磁道号中物理区块号的个数;Track表示区块设备的磁道号;Head表示区块设备的磁道头;Sector表示区块设备的物理区块号。依照本发明的虚拟通用串行总线设备系统,其中镜像文件模块在读/写储存格式为光盘、国际标准组织格式或二进制格式的镜像文件数据时,是通过以下公式转换通用串行总线请求区块信息为镜像文件信息Sector=(LBAmodSecTrk)+1;Position=(Sector/(MSS/USS))*MSS+(Sector%(MSS/USS));其中,LBA为包含在通用串行总线请求区块信息中的镜像文件的逻辑区块地址;MSS为镜像文件的物理区块大小;USS为通用串行总线请求区块封包的命令字中所用格式的物理区块大小;Sector表示镜像文件的物理区块号;Position表示转换后以字节为单位的起始读写位置。依照本发明的虚拟通用串行总线设备系统,其中媒体驱动模块可位于本地端的用户模式下或本地端的核心模式下。另外,本发明还提供了一种虚拟通用串行总线设备的数据传输方法,应用于一远程端与一本地端,此方法包含以下步骤在远程端建立一通用串行总线请求区块封包的传输载荷结构,传输载荷结构中包含有用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段;发送通用串行总线请求区块封包至本地端,以访问本地端包含有通用串行总线设备、非通用串行总线设备或镜像文件的媒体;解析通用串行总线请求区块封包的传输载荷结构,通过标识字段确定通用串行总线请求区块封包的访问媒体;以及转换通用串行总线请求区块封包的通用串行总线请求区块信息为访问媒体的对应格式信息,以依照通用串行总线请求区块封包的命令字内容访问此媒体。依照本发明的虚拟通用串行总线设备的数据传输方法,其中当访问媒体为区块设备时,还包含有转换通用串行总线求区块信息为区块设备信息的步骤。依照本发明的虚拟通用串行总线设备系统及方法虚拟通用串行总线设备的数据传输方法,其中当访问媒体为镜像文件时,还包含有转换通用串行总线请求区块信息为镜像文件格式信息的步骤。本发明的虚拟通用串行总线设备及其数据传输方法,通过在远程端建立有通用串行总线请求区块封包的传输载荷结构,其中包含用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段。此外,在本地端设置具有识别通用串行总线请求区块封包并相应处理通用串行总线设备、非通用串行总线设备和镜像文件的驱动程序,进而将本地端各种类型的设备和媒体文件映像成虚拟通用串行总线设备进行访问,实现多种媒体的传输,而不仅限于现有技术只能针对通用串行总线设备的访问。以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。图1为现有技术的虚拟通用串行总线设备系统的系统方块图;图2为本发明第一实施例的虚拟通用串行总线设备系统的系统方块图;图3本发明第二实施例的虚拟通用串行总线设备系统的系统方块图;以及图4为本发明虚拟通用串行总线设备的数据传输方法的步骤流程图。其中,附图标记10服务器端11虚拟主机控制器接口驱动12虚拟通用串行总线驱动13设备控制管理器20控制台端21通用串行总线驱动22通用串行总线设备23设备控制管理器100服务器端110虚拟主机控制器接口驱动器120具体通用串行总线设备驱动130通用串行总线核心驱动器140设备控制管理器200控制台端210媒体驱动模块211通用串行总线驱动模块212区块驱动模块213镜像驱动模块221通用串行总线设备222区块设备223镜像文件230通用串行总线核心驱动器240通用串行总线主机控制器驱动器250通用串行总线主机控制器260设备控制管理器260’媒体控制管理器步骤101在远程端建立一通用串行总线请求区块封包的传输载荷结构,其中包含有用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段步骤102发送通用串行总线请求区块封包至本地端,以访问本地端包含有通用串行总线设备、非通用串行总线设备或镜像文件的媒体步骤103解析通用串行总线请求区块封包的传输载荷结构,通过标识字段确定通用串行总线请求区块封包的访问媒体步骤104转换通用串行总线请求区块封包的通用串行总线请求区块信息为访问媒体的对应格式信息步骤105依照通用串行总线请求区块封包的命令字内容访问相应媒体具体实施方式如图2所示,图中表示了本发明第一实施例的虚拟通用串行总线设备系统的系统方块图。与现有技术相同,本发明的虚拟通用串行总线设备系统也应用于远程端与本地端的数据传输中。如图2所示,此系统包含有服务器端100与控制台端200。本实施例中将服务器端100作为需要建立虚拟通用串行总线设备的远程端,控制台端200作为具有实际通用串行总线设备的本地端。服务器端100包含有设备控制管理器140、具体通用串行总线设备驱动120、通用串行总线核心驱动器130以及虚拟主机控制器接口驱动器110。图1和图2在用户模式都有一个共同的部分虚拟连接管理,它主要实现是对服务器端100和控制台端200的简单管理任务。例如,服务器端100和控制台端200的第一次连接的建立、控制台端200和服务器端100获得彼此运行状态等等。对比图1与图2」可以看出,现有技术与本发明的虚拟通用串行总线设备系统在服务器端均具有相同的设备与驱动,实际上,相对于图1中虚拟主机控制器接口驱动器11,本发明的虚拟主机控制器接口驱动器110还具有不同的功能,下文中将给出详细说明。如图2所示,控制台端200,其包括设备控制管理器260、媒体驱动模块210、通用串行总线主机控制器250、通用串行总线设备221、区块设备222以及镜像文件223。其中媒体驱动模块210还包含有通用串行总线驱动模块211、区块驱动模块212、镜像驱动模块213、通用串行总线核心驱动器230以及通用串行总线主机控制器驱动器240。从图标中可得知,本发明的虚拟通用串行总线设备系统的控制台端200与现有技术控制台端20具有不同的驱动设备,即相对现有技术,本发明除了具有通用串行总线驱动模块211之外,还存在区块驱动模块212及镜像驱动模块213。并且,与通用串行总线主机控制器驱动器240连接设备除通用串行总线设备221之外,还连接有镜像文件223和区块设备222。下面将结合上述各个模块的工作原理以及相互间的作用、联系与现有技术的区别进行详细说明。首先对虚拟主机控制器接口驱动器(VHCIDriver)110进行描述,虚拟主机控制器接口驱动器110用以将上层传来的操作请求——通用串行总线请求区块传输封包(通用串行总线RequestBlock,URB)封装成网际协议(InternetProtocol,IP)封包,并通过插槽连接传送至控制台端200;同理控制台端200返回的IP封包通过虚拟主机控制器接口驱动器110的解析,组装成URB封包并传送给上层的通用串行总线核心驱动器130。为了实现对本地端的各种设备(如通用串行总线设备和非通用串行总线设备)以及文件(各种镜像文件,如国际标准组织(ISO)格式/软盘镜像文件(IMG)格式/二进制(BIN)格式)映像成远程的虚拟通用串行总线设备,则需要虚拟主机控制器接口驱动器110进行相应的设置。主机控制器接口驱动器110首先需要注册驱动程序,以进行初始化。在初始化过程中,例如调用驱动注册函数driver_register来注册一个虚拟主机控制器接口驱动器结构,这个结构中包含了最基本的对于驱动的探测(probe)、删除(remove)、挂起(suspend)等功能函数。由于虚拟主机控制器接口是一个虚拟的通用串行总线主机控制器驱动,我们需要调用函数例如platform_device_register来注册一个虚拟的通用串行总线主机控制器设备。同时,对于一个虚拟的设备没有总线会调用驱动的探测方法,因此在上述动作完成后,直接调用它的探测方法,完成探测任务。此外,虚拟主机控制器接口驱动器110建立相应的URB封包的发送函数,在建立URB封包发送函数时,首先建立一个传输载荷结构,其中包含了URB结构中的必需字段,以及用于区分通用串行总线设备、非通用串行总线设备和镜像文件的标志字段,实现也可以根据需要添加其它成员,但要保证URB信息的完整性。然后将描述URB信息的一些属性字段填入载荷结构,例如包括transfer_flags、transfer_buffer_length、bandwidth、start_frame、number_of_packets、interval等。将setup_packet字符串拷入载荷结构,setup_packet中包含了通用串行总线命令字。将URB成员transfer_buffer的内容拷入载荷结构,这其中包含了需要传输的数据内容,在数据返回时使用较多。拷贝URB成员通用串行总线_iso_packet_descriptor中的内容,这个链表结构主要用于存储实时数据,如媒体播放时的数据传输。虚拟主机控制器接口驱动器110还需建立URB封包的接收函数,接收过程与发送过程正好相反,它解析的载荷结构中的内容并将其放入已经建立好的URB结构中,然后提交给通用串行总线核心驱动层。由于具体字段与发送时相同,这里不在赘述。在远程端的虚拟主机控制器接口驱动器110具有上述功能之后,还需要对本地端的相应设备进行设定,才可以确保通过虚拟通用串行总线设备技术在远程端与本地端实现除通用串行总线设备之外的多种媒体进行通信。上文已经提到,从结构上来看本发明的虚拟通用串行总线设备系统与现有虚拟通用串行总线设备系统的区别还在于,控制台端200包含有媒体驱动模块210,可以接收虚拟主机控制器接口驱动器110发送的通用串行总线请求区块封包,并解析通用串行总线请求区块封包的传输载荷结构,进而判断所接收的URB操作请求是针对通用串行总线设备221、区块设备222还是镜像文件223。因此,媒体驱动模块210能够实现上述功能,首先需要对媒体驱动模块210的驱动程序进行注册,建立通用串行总线驱动模块211。对于原有通用串行总线设备,仅仅实现一个转发的任务,所以在控制台端200仍然需要一个完成的通用串行总线驱动架构,因此,这里仍然将其注册为一个普通的通用串行总线具体设备驱动调用通用串行总线注册函数,例如通用串行总线register注册一个通用串行总线驱动架构结构stub_driver。stub_driver中的id_table一项指定为所有类型的通用串行总线设备,因此通用串行总线驱动模块211可以完成所有类型的通用串行总线设备的URB转发任务。另外,媒体驱动模块210还需要建立URB封包的收发函数。在前面关于虚拟主机控制器接口驱动器110实现的描述中已经对与URB封包的收发过程做了描述,在媒体驱动模块210端的收发过程与虚拟主机控制器接口驱动器110中基本一致。唯一的区别是,在得到URB封包以后,媒体驱动模块210会根据载荷结构中的标志来判断这个URB封包是发给真实通用串行总线设备的还是其它非通用串行总线设备或文件。如果是通用串行总线设备,那么组织的URB封包会直接提交给通用串行总线核心驱动器230,如果不是通用串行总线设备,那么此时媒体驱动模块210会调用相应的非通用串行总线设备或文件的处理程序,即区块设备驱动模块212或镜像文件驱动模块213,下面将详细描述它们的实现细节。区块驱动模块212除了要完成对于数据的收发任务以外,最主要的任务是通用串行总线设备所用的数据信息(即URB)到区块设备的数据信息(包括区块设备的物理区块号、磁道号、区块号等)的转换处理。当它将URB信息转换成区块设备可以使用的信息之后,就会像任何现有的区块设备驱动一样去完成真正对硬件的操作的功能。具体的转换方式将会在下文中给出描述。同理,镜像驱动模块213和区块驱动模块212完成十分类似的任务,它会完成从URB信息到ISO/BIN/IMG的文件格式信息间的转换,例如URB信息到ISO9660格式的转换。在此之后,镜像驱动模块213会直接根据转换的结果去读写镜像文件223。区块驱动模块212与镜像驱动模块213可通过公式的方式进行媒体格式参数的转换,需要说明的是,这里转换过程是为区块驱动模块212与镜像驱动模块213提供的。因为对于通用串行总线驱动模块211,它完成的仅仅是一个转发的过程,不需要作多余的处理,转发得到的URB封包都会由具体的通用串行总线设备接收并作出相应的应答。根据具体的设备不同,设备提供的访问命令也各不相同,但对于所有的储存设备都会有用于读写媒体数据的命令,因此这里仅对数据读写时的命令字内容进行参数的转换,而对于其它与具体设备相关的命令则可以根据需求作出虚拟应答或忽略操作。因此,首先在控制台端200对接收的通用串行总线请求区块封包进行解析,判断其命令字内容,例如通用串行总线请求区块封包的命令字为通用串行总线大容量存储驱动协议器协议命令字(UFIcommand)。若通过其命令字格式判断为读或写区块设备的数据时,则区块驱动模块212通过转换公式转换通用串行总线请求区块信息为区块设备信息。其中逻辑驱动位以逻辑区块(llogicalsector)为单位元指定了需要读写的数据的起始地址。区块设备的逻辑区块地址(LogicalSectorAddress,LBA)包含在通用串行总线请求区块信息的命令字中,下面是逻辑区块的计算方法LBA=(((Track*HeadTrk)+Head)*SecTrk)+(Sector-1)其中,Track指磁道号,从0开始;Head指磁道头,HeadTrk指每个磁道中Head的个数;Sector指物理区块号,从1开始;SecTrk指每个Track中物理区块的个数。因此,区块驱动模块212可以根据下面的公式计算下列值的大小Sector=(LBAmodSecTrk)+1Head=(LBA/SecTrk)modHeadTrkTrack=(LBA/SecTrk)/HeadTrk对于硬盘等区块设备上述得到的3个数值基本上已经满足了数据的读写要求,即上述公式为通用串行总线请求区块信息转换为区块设备信息的相应公式。此时就可以通过相应的硬件命令去读写信息。在根据上述公式计算的到各参数后,区块驱动模块212便可以通过真正的与具体区块设备222相关的硬件命令完成具体操作任务,操作的返回结构会通过发送函数发送到服务器端100。对于镜像文件,若通过通用串行总线请求区块封包的的命令字格式判断为读或写镜像文件的数据时,则需要通过下面的公式进行相应的格式参数转换。镜像文件的文件格式也是仿照区块设备去定义的,镜像文件可能是光盘、国际标准组织格式(ISO)、二进制格式(BIN)、软盘镜像文件格式(IMG)等,它们存储数据的格式不尽相同。对于光盘、ISO文件和BIN文件,每个物理区块的大小可以是2048、2336或2352字节大小,且对于数据光盘的磁盘号数为1;而此时UFIcommand的中sector的大小为1024字节或512字节。因此,镜像文件驱动模块213需要用下面的公式来定位到开始读写数据的位置Position=(Sector/(MSS/USS))*MSS+(Sector%(MSS/USS))*USS;其中,Postion指转换后以字节为单位的起始读写位置,Sector表示镜像文件的物理区块号,通过公式Sector=(LBAmodSecTrk)+1计算得到,MSS(MediaSectorSize)是指媒体文件的Sector大小,USS(通用串行总线devicecommandSectorSize)指通用串行总线请求区块封包的命令字中所用媒体格式的Sector大小。而对于IMG每个Sector的大小为512字节,当UFIcommand中的Sector大小为512字节时,访问不需要格式转换;而对于UFIcommand中的Sector大小为1024字节时,则访问时需要乘2且每次去除两个IMGSector大小的数据。在通过上述公式得到镜像文件的起始读写位置以及物理区块号后,即将通用串行总线请求区块信息转换为镜像文件格式信息,镜像文件模块223则通过例如do_generic_file等文件读写函数直接完成对镜像文件的读写操作,读写结果也同样会通过发送函数传输到服务器端100。对于虚拟通用串行总线设备Sector的大小,在虚拟设备工作时,服务器端100会通过相应的控制命令从控制台端200获得,因此控制台端200可以根据具体的设备和文件选择最合适的参数从而简化工作流程。在图2中描述的虚拟通用串行总线设备结构中,控制台端200的主要功能是在核心模式下实现的,此外本发明还同时提供了一个在用户模式实现控制台端200的方案,如图3所示,图3为本发明的第二实施例的虚拟通用串行总线设备系统的系统方块图。从图3中可以发现在用户模式下设置有媒体控制管理器260’,以替换设备控制管理器260,其中媒体控制管理器260’中包含有设备控制管理器260和媒体驱动模块210,即各种设备和文件的处理任务全部由用户模式的媒体控制管理器260’完成,它可实现原有结构图2中设备控制管理器260和媒体驱动模块210的功能,这里不在赘述。但是在用户模式和核心模式实现控制台端200的两种方案还是有一定区别的。核心模式可以完成对设备的完全控制,而用户模式仅仅能完成有限的功能。其中,对于数据的读写任务在用户模式和核心模式都可以完成的,这也是本发明的虚拟通用串行总线设备系统的一个最主要的功能。然而对于涉及到其它与设备相关的底层操作用户模式将无法完成,例如,格式化分区等等。对于服务器端100在用户模式实现的方案,无论是通用串行总线设备、区块设备还是镜像文件都被当作文件来对待,也就是说会用上述对于镜像文件的参数转换函数来计算储存数据需要读写的实际字节位置,然后以读写文件的方式完成数据读写。如图4所示,此图为本发明虚拟通用串行总线设备的数据传输方法的步骤流程图,如图所示,本发明的虚拟通用串行总线设备的数据传输方法包含以下步骤在远程端建立一通用串行总线请求区块封包的传输载荷结构,其中传输载荷结构中包含有用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段(步骤101);发送通用串行总线请求区块封包至本地端,以访问本地端包含有通用串行总线设备、非通用串行总线设备或镜像文件的媒体(步骤102);解析通用串行总线请求区块封包的传输载荷结构,通过标识字段确定通用串行总线请求区块封包的访问媒体(步骤103)。接着,依照确定的访问媒体,转换通用串行总线请求区块封包的通用串行总线请求区块信息为访问媒体的对应格式信息,以依照通用串行总线请求区块封包的命令字内容访问此媒体(步骤104)。当访问媒体为一区块设备时,需要转换通用串行总线请求区块信息为一区块设备信息;当访问媒体为一镜像文件时,则需要转换通用串行总线请求区块信息为一镜像文件格式信息。其中,当通用串行总线请求区块封包的命令字内容为读/写区块设备的数据时,通过以下公式转换通用串行总线请求区块信息为区块设备信息Sector=(LBAmodSecTrk)+1;Head=(LBA/SecTrk)modHeadTrk;Track=(LBA/SecTrk)/HeadTrk;其中,LBA为包含在通用串行总线请求区块信息中的区块设备的逻辑区块地址;HeadTrk为区块设备中每个磁道中磁道头的个数;SecTrk为每个磁道号中该物理区块号的个数;Track表示区块设备的磁道号;Head表示区块设备的磁道头;Sector表示区块设备的物理区块号。当通用串行总线请求区块封包的命令字内容为读/写储存格式为光盘、ISO或BIN格式的镜像文件数据时,通过以下公式转换通用串行总线请求区块信息为镜像文件信息Sector=(LBAmodSecTrk)+1;Position=(Sector/(MSS/USS))*MSS+(Sector%(MSS/USS));其中,LBA为包含在通用串行总线请求区块信息中的镜像文件的逻辑区块地址;MSS为镜像文件的物理区块大小;USS为通用串行总线请求区块封包的命令字中所用格式的物理区块大小;Sector表示镜像文件的物理区块号;Position表示转换后以字节为单位的起始读写位置。根据具体的设备不同,设备提供的访问命令也各不相同,但对于所有的存储设备都会有用于读写媒体数据的命令,因此这里仅仅对数据读写时的命令字内容进行参数的转换,而对于其它与具体设备相关的命令则可以根据需求作出虚拟应答或忽略操作。最后,依照通用串行总线请求区块封包的命令字内容访问确定的媒体,即执行对通用串行总线设备、区块设备或者镜像文件的操作(步骤105)。根据上述公式计算的到各参数后,便可以通过真正的与具体区块设备相关的硬件命令完成具体操作任务,并将操作结果返回到远程端,而对于镜像文件的处理则通过文件读写函数直接完成对文件的读写操作,读写结果也同样会通过发送函数传输到远程端。进而利用本发明的虚拟通用串行总线技术即完成远程端与本地端多种媒体的传输。当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。权利要求1.一种虚拟通用串行总线设备系统,应用于一远程端与一本地端的数据传输,其特征在于,该系统包含有一虚拟通用串行总线主机控制接口驱动器,位于该远程端,用以建立一通用串行总线请求区块封包的传输载荷结构;以及一媒体驱动模块,位于该本地端,该媒体驱动模块解析接收的该通用串行总线请求区块封包的传输载荷结构,以确定访问该本地端的通用串行总线设备、非通用串行总线设备或镜像文件,并转换该通用串行总线请求区块封包的通用串行总线请求区块信息为所述通用串行总线设备、非通用串行总线设备或镜像文件的对应格式信息。2.根据权利要求1所述的虚拟通用串行总线设备系统,其特征在于,该传输载荷结构中包含有用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段。3.根据权利要求1所述的虚拟通用串行总线设备系统,其特征在于,该媒体驱动模块还包含有一通用串行总线驱动模块,用以接收或发送访问一通用串行总线设备的通用串行总线请求区块信息;一区块设备驱动模块,用以将访问一区块设备的通用串行总线请求区块信息转换为一区块设备信息;以及一镜像文件驱动模块,用以将访问一镜像文件的通用串行总线请求区块信息转换为一镜像文件格式信息。4.根据权利要求3所述的虚拟通用串行总线设备系统,其特征在于,该区块设备驱动模块是在读/写该区块设备的数据时,通过以下公式转换该通用串行总线请求区块信息为该区块设备信息Sector=(LBAmodSecTrk)+1;Head=(LBA/SecTrk)modHeadTrk;以及Track=(LBA/SecTrk)/HeadTrk;其中,LBA为包含在该通用串行总线请求区块信息中的该区块设备的逻辑区块地址;HeadTrk为该区块设备中每个磁道中磁道头的个数;SecTrk为每个该磁道号中该物理区块号的个数;Track表示该区块设备的磁道号;Head表示该区块设备的磁道头;Sector表示该区块设备的物理区块号。5.根据权利要求3所述的虚拟通用串行总线设备系统,其特征在于,该镜像文件驱动模块是在读/写储存格式为光盘、国际标准组织格式或二进制格式的该镜像文件数据时,通过以下公式转换该通用串行总线请求区块信息为该镜像文件信息Sector=(LBAmodSecTrk)+1;以及Position=(Sector/(MSS/USS))*MSS+(Sector%(MSS/USS));其中,LBA为包含在该通用串行总线请求区块信息中的该镜像文件的逻辑区块地址;MSS为该镜像文件的物理区块大小;USS为该通用串行总线请求区块封包的命令字中所用格式的物理区块大小;Sector表示该镜像文件的物理区块号;Position表示转换后以字节为单位的起始读写位置。6.根据权利要求1所述的虚拟通用串行总线设备系统,其特征在于,该媒体驱动模块位于该本地端的用户模式下。7.根据权利要求1所述的虚拟通用串行总线设备系统,其特征在于,该媒体驱动模块位于该本地端的核心模式下。8.一种虚拟通用串行总线设备的数据传输方法,应用于一远程端与一本地端,其特征在于,该方法包含以下步骤在该远程端建立一通用串行总线请求区块封包的传输载荷结构,该传输载荷结构中包含有用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段;发送该通用串行总线请求区块封包至该本地端,以访问该本地端包含有通用串行总线设备、非通用串行总线设备或镜像文件的媒体;解析该通用串行总线请求区块封包的传输载荷结构,通过该标识字段确定该通用串行总线请求区块封包的访问媒体;以及转换该通用串行总线请求区块封包的通用串行总线请求区块信息为该访问媒体的对应格式信息,以依照该通用串行总线请求区块封包的命令字内容访问该媒体。9.根据权利要求8所述的虚拟通用串行总线设备的数据传输方法,其特征在于,当该访问媒体为一区块设备时,还包含有转换该通用串行总线请求区块信息为一区块设备信息的步骤。10.根据权利要求9所述的虚拟通用串行总线设备的数据传输方法,其特征在于,当该通用串行总线请求区块封包的命令字内容为读/写该区块设备的数据时,通过以下公式转换该通用串行总线请求区块信息为该区块设备信息Sector=(LBAmodSecTrk)+1;Head=(LBA/SecTrk)modHeadTrk;以及Track=(LBA/SecTrk)/HeadTrk;其中,LBA为包含在该通用串行总线请求区块信息中的该区块设备的逻辑区块地址;HeadTrk为该区块设备中每个磁道中磁道头的个数;SecTrk为每个该磁道号中该物理区块号的个数;Track表示该区块设备的磁道号;Head表示该区块设备的磁道头;Sector表示该区块设备的物理区块号。11.根据权利要求8所述的虚拟通用串行总线设备的数据传输方法,其特征在于,当该访问媒体为一镜像文件时,还包含有转换该通用串行总线请求区块信息为一镜像文件格式信息的步骤。12.根据权利要求11所述的虚拟通用串行总线设备的数据传输方法,其特征在于,当该通用串行总线请求区块封包的命令字内容为读/写储存格式为光盘、国际标准组织格式或二进制格式的该镜像文件数据时,通过以下公式转换该通用串行总线请求区块信息为该镜像文件信息Sector=(LBAmodSecTrk)+1;以及Position=(Sector/(MSS/USS))*MSS+(Sector%(MSS/USS));其中,LBA为包含在该通用串行总线请求区块信息中的该镜像文件的逻辑区块地址;MSS为该镜像文件的物理区块大小;USS为该通用串行总线请求区块封包的命令字中所用格式的物理区块大小;Sector表示该镜像文件的物理区块号;Position表示转换后以字节为单位的起始读写位置。全文摘要本发明公开了一种虚拟通用串行总线设备系统及其数据传输方法,应用于远程端与本地端中,本发明通过在远程端建立通用串行总线请求区块封包的传输载荷结构,其中包含有用以区分通用串行总线设备、非通用串行总线设备和镜像文件的标识字段,然后本地端解析所接收通用串行总线请求区块封包的传输载荷结构,确定想要访问的媒体,并转换通用串行总线请求区块信息为访问媒体可以操作的对应格式信息,从而访问通用串行总线设备、非通用串行总线设备或镜像文件。通过本发明可将本地端下各种设备和媒体文件映像为虚拟通用串行总线设备,实现访问的一致性和简易性。文档编号G06F13/42GK101059791SQ20061007449公开日2007年10月24日申请日期2006年4月21日优先权日2006年4月21日发明者刘桂东,陈玄同,刘文涵申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1