一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法技术

技术编号:2847631 阅读:449 留言:0更新日期:2012-04-11 18:40
一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法。特别是一种有权限管理的操作系统,非授权用户如何使用创建的应用程序对USB海量存储设备发送命令,从而实现应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,本发明专利技术利用操作系统任何用户可在USB可移动存储设备的可读写区创建新文件并可向其写入和读取数据这一特性,通过规定读写数据缓冲区的数据格式、长度以及新文件读写位置等数据,实现应用程序与USB可移动海量存储设备进行命令交互和双向数据传输。本发明专利技术为这类多种应用程序提供了可移动、便捷和可靠的运行环境,使带有应用程序的USB海量存储设备,实现了“即插即用”的目的。

【技术实现步骤摘要】

本专利技术涉及一种USB海量存储设备
的一种上层应用软件与设备之间实现双向数据通讯的方法。特别是一种有用户登录安全认证和权限管理的操作系统如Windows2000、Windows XP以上版本,非授权用户如何使应用软件程序对USB海量存储设备发送命令,从而实现USB海量存储设备应用程序与USB海量存储设备进行命令交互和双向数据传输的方法。
技术介绍
为便于本专利技术理解相关术语解释如下1USB海量存储设备一种支持USB海量存储设备协议的可移动海量存储设备。如常见的闪存盘(USB Flash Disk),移动硬盘(USB Hard Disk)等设备。2.操作系统非授权用户是指操作系统登录用户由于操作系统对用户的默认权限管理,使以其身份创建或者运行的应用程序软件对系统设备没有读写或者写权限,从而不能通过操作系统提供的接口和方法实现与系统设备的命令交互和双向数据传输。3.SCSI是小型计算机系统接口(Small Computer System Interface)缩写,是计算机逻辑块设备与主机之间的命令控制和数据传输协议。4.RBC是精简块命令(Reduced Block Command)的英文缩写,是精简的SCSI命令集,是计算机逻辑块设备与主机之间的精简控制命令和数据传输协议。5.WRITE10是精简块命令集中主机对块设备的写命令码,为十六进制0x2A。6.READ10是精简块命令集中主机对块设备的读命令码,为十六进制0x28。7.LUN设备逻辑单元号。8.LBA设备读写的逻辑块地址。当前,随着USB海量存储设备的普及,许多应用需求也不断与之结合起来,以便于为应用提供移动性、便捷性和实用性等特点。如闪存盘(USBFlash Disk)就出现了需要许多特殊应用。从理论上讲,所有可移动的USB海量存储设备都可以开发出各种特殊应用。在USB海量存储设备上开发各种应用程序时,上层应用软件需要与在USB海量存储设备之间进行命令交互和数据传输,以便于应用程序能够正确和识别所支持的USB海量存储设备。在各种操作系统上,系统都提供了基于USB海量存储设备的通信通道,绝大多数操作系统都是采用SCSI命令协议去访问和控制USB海量存储设备。比如在Windows 2000以上NT内核平台操作系统,就是通过设备输入、输出控制接口访问设备的,只要命令协议是按照SCSI的RBC协议和格式定义,则协议定义的命令以及用户自己定义的私有协议将都可以通过该命令通道发送给USB海量存储设备,如闪存盘(USB Flash Disk)等逻辑块设备。在SCSI命令集中,WRITE10和READ10的命令码分别为十六进制0x2A和0x28,WRITE10的命令参数为设备逻辑单元号(LUN),设备读写的逻辑块地址(LBA),数据写入长度。当USB海量存储设备的主控芯片接受到WRITE10的SCSI命令时,通过分析上述参数得到写入的逻辑块地址(LBA)和设备逻辑单元号(LUN)以及数据长度,然后从数据接收端口接收完数据后就向指定的地址写入该数据。如果数据长度超过芯片一次能够容纳的长度限制,则可以分批接收和写入。READ10的命令参数与WRITE10一样,也是设备逻辑单元号(LUN,设备读写的逻辑块地址(LBA),数据读取长度,当USB可移动海量存储设备的主控芯片接受到READ10的SCSI命令时,通过分析上述参数得到写入的设备读写的逻辑块地址(LBA)和设备逻辑单元号(LUN)以及数据长度,然后向数据发送端口发送数据,直到发送完指定的数据长度。如果数据长度超过芯片一次能够容纳的长度限制,则可以分批发送。尽管各种操作系统提供了上述相同或者相近的SCSI逻辑块设备命令发送方式,但是对于具有用户权限管理的安全操作系统,如果应用程序的创建或者运行者如果没有相关的设备访问权限,则通过这种方式是不行的。典型的是,在Windows2000以上的NT内核操作系统,如果要通过设备输入输出控制接口给逻辑块设备发送命令,则需要该设备的读写权限。但如果用户是普通的来宾(Guest)或者普通组(User)用户,操作系统默认是没有授予对逻辑设备的读写权限的,因此,需要管理员对这些用户添加设备读写权限,否则应用程序对设备的访问将失败。随着USB海量存储设备的普及,其便捷性、移动性和实用性得到广大用户和软件厂商的青睐,各种基于这类设备即插即用的应用程序也不断在增加。这类应用程序如果需要同设备之间进行命令交互和数据传输,一般就需通过上述的RBC协议和SCSI命令通道。但如果给设备的使用者在登录操作系统时是设备非授权读写用户或者非管理员用户,尽管通过操作系统的内建程序菜单或者命令用户能够实现对可移动磁盘设备的数据文件存储,但是却无法在第三方创建的应用程序中发送SCSI命令控制和访问设备,因此也就不能够正常运行应用程序,或者应用程序功能受到一定限制。而系统登录用户是非管理员的情况是非常普遍的,如公共场所网吧、各大企业职员、政府工作部门使用的计算机操作系统,网络管理员为了保证操作系统的安全使用,仅提供普通用户帐号给使用者。因此,USB海量存储设备上的各种应用程序需要解决非授权用户下如何访问和控制设备是非常重要的,也是非常急迫的。目前,常见的解决办法有以下几种1编写专用的设备过滤驱动或者系统后台服务程序。该方法的缺点是驱动或者服务程序必须先由能够安装系统驱动或者服务程序权限的用户如管理员安装。因此,对于USB海量可移动存储设备上的应用程序需要先由管理员等用户安装驱动或者服务程序才能够正常使用是不可接受的。2先以管理员身份安装其应用程序,同时创建一个特殊用户帐号。在非管理员用户登录时,应用程序仍然以该特殊用户身份访问设备。这样的缺点仍然比较明显,对于USB这样可移动存储设备上的应用程序仍然做不到即插即用,对用户是不方便的。专利技术的内容本专利技术的目的是提供一种方法基于USB海量存储设备的应用程序软件在与设备进行命令通讯时,即使登录用户身份是对该设备无读写权限的非管理员用户也能够通过该方法,实现控制命令的交互和双向数据传输。也就是说,上层应用软件能够通过该方法发送命令,实现向设备发送控制命令或者写入私有数据,也可以从设备把相关数据读取上来供应用程序使用和分析。本专利技术解决其技术问题所采取的技术方案是USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,是利用操作系统任何用户通过通讯协议可在USB海量存储设备的可读写区创建新文件并可向其写入和读取数据这一特性,在USB海量存储设备的可读写逻辑盘创建一个不可重复的新文件,然后把SCSI命令的参数和数据存放在新文件的写入命令数据缓冲区里,USB海量存储设备的主控芯片应用程序接收到新文件的写入的SCSI写命令WRITE10以及指定写入长度的数据时,分析写入的数据发现不是普通的数据,而是含有规定格式的SCSI命令标识以及参数,则并不实际写入这些数据,而是执行其指定命令,如果命令执行正确,则返回应用层写入成功,否则返回错误信息,应用层在收到写入命令执行完毕后立即删除刚创建的文件,从USB海量存储设备读取数据,则需要采用两步才能够实现,第一步是创建新文件,后向新文件写入含有命令的规定格式数据,USB海量存储设备的主控芯片软本文档来自技高网...

【技术保护点】
一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,其特征在于:所述命令交互和双向数据传输的方法是,利用操作系统任何用户通过通讯协议在USB海量存储设备的可读写区创建新文件并可向其写入和读取数据这一特性,在USB海量存储设备的可读写逻辑盘创建一个不可重复的新文件,然后把SCSI命令的参数和数据按规定格式存放在新文件的写入命令数据缓冲区里,USB海量存储设备的主控芯片应用程序接收到新文件的写入的SCSI写命令WRITE10以及指定写入长度的数据时,分析写入的数据发现不是普通的数据,而是含有规定格式的SCSI命令标识以及参数,则并不实际写入这些数据,而是执行其指定命令,如果命令执行正确,则返回应用层写入成功,否则返回错误信息,应用层在收到写入命令执行完毕后立即删除刚创建的文件,从USB海量存储设备读取数据,则需要采用两步才能够实现,第一步是创建新文件,后向新文件写入含有命令的规定格式数据,USB海量存储设备的主控芯片软件接收到此文件的SCSI命令WRITE10时通过分析发现,是需要向上层返回数据的特殊命令,因此将保留此WRITE10命令参数中设备逻辑单元号(LUN)和设备读写的逻辑块地址(LBA)并返回执行完毕,第二步是上层应用程序紧接着发送一个SCSI命令READ10,此命令必须确保该命令参数的设备逻辑单元号(LUN)和设备读写的逻辑块地址(LBA)与第一步的WRITE10一样,这样USB海量存储设备的主控芯片软件在接收到READ10命令,发现其参数的设备逻辑单元号(LUN)和读写的逻辑块地址(LBA)与前一条WRITE10命令的一样,则返回前一条WRITE10数据缓冲区中指定的SCSI命令需要的数据,上述的正常读写命令都可以保证USB海量存储海量设备的主控芯片软件在分析SCSI命令WRITE10和READ10时,既可实现设备的正常读写命令,同时实现了操作系统非授权用户下,应用程序能够通过文件的读写操作,在其读写命令WRITE10和READ10数据缓冲区中承载其他SCSI命令和数据,实现应用程序与USB海量存储海量设备的命令交互。...

【技术特征摘要】
1一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,其特征在于所述命令交互和双向数据传输的方法是,利用操作系统任何用户通过通讯协议在USB海量存储设备的可读写区创建新文件并可向其写入和读取数据这一特性,在USB海量存储设备的可读写逻辑盘创建一个不可重复的新文件,然后把SCSI命令的参数和数据按规定格式存放在新文件的写入命令数据缓冲区里,USB海量存储设备的主控芯片应用程序接收到新文件的写入的SCSI写命令WRITE10以及指定写入长度的数据时,分析写入的数据发现不是普通的数据,而是含有规定格式的SCSI命令标识以及参数,则并不实际写入这些数据,而是执行其指定命令,如果命令执行正确,则返回应用层写入成功,否则返回错误信息,应用层在收到写入命令执行完毕后立即删除刚创建的文件,从USB海量存储设备读取数据,则需要采用两步才能够实现,第一步是创建新文件,后向新文件写入含有命令的规定格式数据,USB海量存储设备的主控芯片软件接收到此文件的SCSI命令WRITE10时通过分析发现,是需要向上层返回数据的特殊命令,因此将保留此WRITE10命令参数中设备逻辑单元号(LUN)和设备读写的逻辑块地址(LBA)并返回执行完毕,第二步是上层应用程序紧接着发送一个SCSI命令READ10,此命令必须确保该命令参数的设备逻辑单元号(LUN)和设备读写的逻辑块地址(LBA)与第一步的WRITE10一样,这样USB海量存储设备的主控芯片软件在接收到READ10命令,发现其参数的设备逻辑单元号(LUN)和读写的逻辑块地址(LBA)与前一条WRITE10命令的一样,则返回前一条WRITE10数据缓冲区中指定的SCSI命令需要的数据,上述的正常读写命令都可以保证USB海量存储海量设备的主控芯片软件在分析SCSI命令WRITE10和READ10时,既可实现设备的正常读写命令,同时实现了操作系统非授权用户下,应用程序能够通过文件的读写操作,在其读写命令WRITE10和READ10数据缓冲区中承载其他SCSI命令和数据,实现应用程序与USB海量存储海量设备的命令交互。2根据权利要求1所述的一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,其特征在于所述的在USB海量存储设备的可读写逻辑盘创建的新文件,文件名是采用每次计算获取的变化的全球唯一16字节的序列号字符串,并将新文件设为非共享读写属性,新文件,文件扩展名采用单独定义或者随机变化的扩展名。3根据权利要求1或2所述的一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,其特征在于所述的在USB海量存储设备的可读写逻辑盘创建新文件的规定格式,其中WRITE10命令规定格式顺序为命令标识头、命令序列号、命令操作码、命令参数区、多余字节区、命令写入数据区,READ10命令规定格式顺序为命令标识头、命令序列号、多余字节区、命令写入数据区。4根据权利要求1或3所述的一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,其特征在于所述的在USB海量存储设备的可读写逻辑盘创建的新文件规定格式的命令标识头,为0xx55aa55aa555342。5根据权利要求1或3所述的一种USB海量存储设备上应用程序与USB海量存储设备进行命令交互和双向数据传输的方法,其特征在于所述的在USB海量存储设备的可读写逻辑盘创建的新文件规定格式的命令序列号,为16字节唯一的序列号。6根据权利要求1或3所述的一种USB海...

【专利技术属性】
技术研发人员:祝绪阳
申请(专利权)人:深圳市江波龙电子有限公司
类型:发明
国别省市:94[中国|深圳]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1