一种控制usb端口设备开关的方法

文档序号:6428016阅读:272来源:国知局
专利名称:一种控制usb端口设备开关的方法
技术领域
本发明涉及主机安全,具体来说,涉及一种控制USB端口设备开关的方法。
背景技术
随着USB类相关设备的广泛使用,一方面方便了用户对计算机的操作,另一方面却对计算机的安全使用、公司私有和保密文件的管理等众多方面产生了影响。USB类相关设备是即插即用的设备,当用户将USB接口的键盘、鼠标、U盘等外设插入USB端口时,这些设备随后即可使用。用户可以方便地将一台机器上的文件拷贝到U盘上。这一方面方便了用户将不同计算机上的文件进行交换,但同时也产生了众多问题(1)用户可以将计算机中的文件拷贝到U盘进行存储,而U盘体积小,可以随身携带,这样就有可能将公司中私有和保密的文件拷贝出公司,给公司带来不可估量的损失。(2)用户在某台计算机上使用即插即用的U盘时,U盘中的文件不幸被病毒感染, 如果用户对之毫无察觉,用户随后将U盘插入另一台计算机上使用时,U盘中的病毒就会感染此计算机的文件系统。这样,U盘的使用范围越大,病毒的传播范围越大,最终有可能导致公司范围内的所有计算机被病毒感染,文件系统损毁,给公司的正常运营带来重大的灾难。为了解决上面提到的问题,目前有些公司已经提出了解决的方法,例如,专利号 CN200510088122. 1提出了通过BIOS程序和外加的硬件电路的彼此配合,控制是否允许用户使用USB端口。此方法一方面要有外加的硬件电路,另一方面只能控制USB端口是否使用,而不能对USB端口上插入的设备进行分类判断。同时,此方法没无法对USB端口连接的 USB控制器进行设置,这样,BIOS程序在进行设备扫描时,不管USB端口是否屏蔽,都得为此控制器分配memory地址空间或者IO地址空间,浪费了宝贵的系统资源。

发明内容
为了解决以上问题,本发明提出了更好地对USB端口进行控制的方法。一种控制USB端口设备开关的方法,将USB设备进行分类,并将分类后的设备描述符写入bios,在bios中控制USB端口的开启关闭以及设置支持的设备类型,主机开机后检查设置的描述符与插在USB端口设备进行比对,若支持则开启,不支持则输出错误信息。优选的,所述USB 设备类型包括 Audio、HID、Image、Printer、Mass Storage、 Hub、Smart CarcUContent Security、Video、Personal Healthcare、Diagnostic Device、 Wireless Controller、Miscellaneous。优选的,所述设备分类号为32位,每一位用来表示一种设备。较优选的,所述设备号未分配部分留作扩展。优选的,在bios中设置好支持的设备类型保存后,系统在启动时bios将设置的设备类型信息作为环境变量传递给Linux内核程序。较优选的,所述Linux内核接收到环境变量后对其进行解析,得到USB端口上屏蔽与打开的设备类型,并将此信息存储在Linux内核全局变量中。
优选的,开机后的比对过程为Linux获取USB端口设备的描述符,并将其与存储在全局变量中的信息进行按位与操作,结果不为0时则Linux内核完成初始化功能,结果为0 时输出错误信息。本发明可以分别在BIOS层面、Linux内核层面对USB端口进行控制,改进了目前现有发明存在的问题,也为用户控制USB端口,提供了更多、更细粒度的方法。


图1是本发明流程图
具体实施例方式在BIOS层面,根据用户的选择,可以屏蔽和打开USB端口。方法如下(1)当用户决定屏蔽USB端口时,可以通过BIOS参数设置界面进行设置。当此设置生效后,BIOS程序会屏蔽这些USB端口所在的OHCI控制器或者EHCI控制器。这样,随后运行的Linux内核程序在进行设备扫描时,不会检测到OHCI控制器或者 EHCI控制器,也就不会对此控制器分配memory地址空间或者IO地址空间,节省了宝贵的系统资源,同时也达到了屏蔽USB端口的目的。(2)当用户决定打开USB端口时,可以通过BIOS参数设置界面进行设置。当此设置生效后,BIOS程序会打开这些USB端口所在的OHCI控制器或者EHCI控制器。这样,随后运行的Linux内核程序在进行设备扫描时,会检测到OHCI控制器或者EHCI 控制器的存在,就会对此控制器分配memory地址空间或者10地址空间,同时也达到了打开 USB端口的目的。在Linux内核层面,根据用户的选择,可以对USB端口上插入的不同的USB设备类型分别进行控制,实现是否屏蔽或者打开USB端口的功能。方法如下预先对USB端口上可能插入的USB设备进行分类,包括如下几类AudiO、HID(Human Interface Device)、Image、Printer、Mass Storage、Hub、Smart Card、Content Security> Video、Personal Healthcare、Diagnostic Device、Wireless Controller, Miscellaneous。每一类用一位表示,为了以后的扩展,此处用32位整数分别表示打开和屏蔽的设备类组合;(1)当用户确定了在USB端口上将要屏蔽和打开的USB设备类型后,可以通过 BIOS参数设置界面进行设置。当此设置生效后,BIOS程序会将此信息保存下来,并将此信息做为环境变量传递给Linux内核程序;(2) Linux内核程序在运行过程中,会对BIOS程序传递的环境变量进行解析,得到用户设置的在USB端口上将要屏蔽和打开的USB设备类型,并将此信息存储在Linux内核中全局变量如UsbPortClass中。(3)当USB端口上插有设备,或者用户在USB端口上插入新设备,Linux内核程序都会检查到此状态。当Linux内核程序获得了此设备的设备描述符或者接口描述符后,会将设备描述符或者接口描述符中的设备类码与全局变量hbPortClass相应的位进行与操作,当结果不为零时,表示用户希望在此USB端口上使用此设备,Linux内核就会继续进行余下的功能初始化;当结果为零时,表示用户不希望在此USB端口上使用此设备,Linux内核不会继续进行余下的功能初始化,而是输出错误信息,告之用户不能在此USB端口上使用此类设备。
权利要求
1.一种控制USB端口设备开关的方法,其特征在于将USB设备进行分类,并将分类后的设备描述符写入bios,在bios中控制USB端口的开启关闭以及设置支持的设备类型,主机开机后检查设置的描述符与插在USB端口设备进行比对,若支持则开启,不支持则输出错误信息。
2.如权利要求1所述的方法,其特征在于所述USB设备类型包括Audio、HID、 Image、Printer、Mass Storage、Hub、Smart Card、Content Security、Video、Personal Healthcare、Diagnostic Device、Wireless Controller、Miscellaneous。
3.如权利要求1所述的方法,其特征在于所述设备分类号为32位,每一位用来表示一种设备。
4.如权利要求3所述的方法,其特征在于所述设备号未分配部分留作扩展。
5.如权利要求1所述的方法,其特征在于在bios中设置好支持的设备类型保存后, 系统在启动时bios将设置的设备类型信息作为环境变量传递给Linux内核程序。
6.如权利要求5所述的方法,其特征在于所述Linux内核接收到环境变量后对其进行解析,得到USB端口上屏蔽与打开的设备类型,并将此信息存储在Linux内核全局变量中。
7.如权利要求1所述的方法,其特征在于开机后的比对过程为Linux获取USB端口设备的描述符,并将其与存储在全局变量中的信息进行按位与操作,结果不为0时则Linux 内核完成初始化功能,结果为0时输出错误信息。
全文摘要
本发明提供了一种控制USB端口设备开关的方法,将USB设备进行分类,并将分类后的设备描述符写入bios,在bios中控制USB端口的开启关闭以及设置支持的设备类型,主机开机后检查设置的描述符与插在USB端口设备进行比对,若支持则开启,不支持则输出错误信息。本发明可以分别在BIOS层面、Linux内核层面对USB端口进行控制,改进了目前现有发明存在的问题,也为用户控制USB端口,提供了更多、更细粒度的方法。
文档编号G06F21/02GK102332073SQ20111018885
公开日2012年1月25日 申请日期2011年7月7日 优先权日2011年7月7日
发明者刘新春, 尹宁宁, 李丰旺, 李永成, 杨晓君, 邵宗有, 郑臣明 申请人:曙光信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1