自动监测usb磁盘的方法

文档序号:6610360阅读:118来源:国知局
专利名称:自动监测usb磁盘的方法
技术领域
本发明涉及一种监测USB磁盘的方法,特别涉及一种越过热插播机制的自动监测USB磁盘的方法。

背景技术
通用串行总线(USB)磁盘是一种支持热插拔(Hotplug)技术的硬件设备,所谓热插拔就是在不断电的情况下,实现计算机硬件设备的安装与卸载,这种技术是由计算机软件和硬件共同配合而实现的。
只要系统支持Hotplug技术,就可以自动检测到USB盘(以下简称U盘)的插入和拔出动作,操作系统都会向用户级程序发送有关这些动作的通知,如果想实现自动复制技术,只要应用程序捕获这些通知,进行相应的技术处理即可。在利用Hotplug技术实现的U盘自动监测和自动复制可以根据如下内容实现 当U盘插入计算机时,Linux操作系统的后台会依次发生如下事件 1、内核检测到新硬件插入,然后分别通知“hotplug”程序和管理硬件 设备的工具集合(udev),前者用来装入相应的内核模块,而后者在设备路径中创建相应的设备节点。
2、udev创建了相应的设备节点之后,会将这一消息通知硬件抽象层(hal)的守护程序(hald),当然udev还得保证新创建的设备节点可以被普通用户访问。
3、hotplug装入了相应的内核模块之后,会把这一消息通知给hald。
4、hald在收到hotplug和udev发出的消息之后,认为新硬件已经正式被系统认可,此时它会通过一系列精心编写的规则文件,把发现新硬件的消息发送出去,同时还会为相应的设备节点创建合适的挂接点。
5、卷管理器会监听发现新硬件的消息,根据所插入的硬件(区分U盘和数码相机等)不同,卷管理器会先将相应的设备节点挂载到hald创建的挂载点上,然后再打开不同的应用程序。
上述过程中涉及的hotplug用来处理内核产生的hotplug事件,这个软件包还在引导时检测现存的硬件并在运行的内核中加载相关模块,这里比较关键的是hotplug路径下的所有代理(agent)脚本,这些脚本将被hotplug调用以响应内核产生的各种不同的热插拔事件,通过改写相应的agent文件,就可以实现U盘的自动复制功能了。
由此可见,利用hotplug技术实现热插拔,就是通过改写agent脚本来实现的,但是不同发布版本的agent脚本的编写风格大不相同,因此很难做到统一。而且上述描述的只是针对2.6内核的,在2.4内核下虽然步骤差不多,但是最后调用的可能不是agent脚本,这就存在了很大的不一致,所以利用hotplug技术很难做到完全的通用化。也就是说,不同的Linux发布版本对其提供的支持方式是不同,利用Hotplug提供的自动监测机制去实现自动复制磁盘中有效内容的方法,很难在不同的发布版本中做到统一,且不同版本的内核对Hotplug的支持程度也不同,这也使得在不同版本内核上的兼容性很难实现。


发明内容
本发明的目的是通过一些实施例提供一种自动监测USB磁盘的方法,以支持不同的Linux发布版本,并且能实现不同内核版本和不同发行版本间完全兼容的USB磁盘的自动监测和自动复制有效内容的功能。
本发明的前述实施例提供的一种监测USB磁盘的方法,包括 读取已接入USB磁盘的第一设备文件; 当第一设备文件中表示接口类型的字段值为预定值时,对第一计数器的值进行累计; 读取新接入USB磁盘的第二设备文件; 当第二设备文件中表示接口类型的字段值为预定值时,对第二计数器的值进行累计; 当第一计数器的值小于第二计数器的值时,判定有新USB磁盘接入,并通过分区文件获得新接入的USB磁盘的名称,同时将第二计数器的值保存在第一设备文件的第一计数器中; 当第一计数器的值大于第二计数器的值时,判定已移除新USB磁盘,并将第二计数器的值保存在第一设备文件的第一计数器中; 当第一计数器的值等于第二计数器的值时,判定无新USB磁盘接入或移除。
上述方法越过热插拨机制,可以支持不同的Linux发布版本,并且实现了不同内核版本和不同发行版本间完全兼容的USB磁盘的自动监测和自动复制有效内容的功能。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。



图1为本发明一些实施例自动监测USB磁盘方法的流程图; 图2为本发明另一些实施例自动复制USB磁盘有效内容方法的流程图。

具体实施例方式 图1为本发明一些实施例自动监测USB磁盘方法的流程图,如图1所示,该方法包括 步骤101、读取已接入USB磁盘的第一设备文件;此处读取已接入USB磁盘的第一设备文件为/proc/bus/usb/devices; 步骤102、当第一设备文件中表示接口类型的字段值为预定值时,对第一计数器的值进行累计; 表示接口类型的字段值可以由用户自行定义,此处,用I表示,预定值也可以由用户自行定义,此处为0或8,系统只要读取到以I开头的字段值为0或8,第一计数器的值则会进行累计,否则,第一计数器的值保持不变; 步骤103、读取新接入USB磁盘的第二设备文件;此处读取的第二设备文件也是/proc/bus/usb/devices; 步骤104、当第二设备文件中表示接口类型的字段值为预定值时,对第二计数器的值进行累计; 此处接口类型仍然用I表示,预定值仍然用0或8表示,因此,系统只要读取到以I开头的字段值为0或8,第二计数器的值则会进行累计,否则,第二计数器的值保持不变; 步骤105、当第一计数器的值小于第二计数器的值时,判定有新USB磁盘接入,并通过分区文件获得新接入的USB磁盘的名称,同时将第二计数器的值保存在第一设备文件的第一计数器中; 此处所用的分区文件为/proc/partitions,当第一计数器的值小于第二计数器的值时,说明有新USB磁盘接入,此时通过/proc/partitions获得新接入的USB磁盘的名称,同时将第二计数器的值保存在第一计数器中; 步骤106、当第一计数器的值大于第二计数器的值时,判定已移除新USB磁盘,并将第二计数器的值保存在第一设备文件的第一计数器中; 当第一计数器和第二计数器的值不同时,需将第二计数器的值保存在第一计数器中,对第一计数器中的数据进行更新; 步骤107、当第一计数器的值等于第二计数器的值时,判定无新USB磁盘接入或移除。
其中,上述步骤105-步骤107为可并列执行的步骤,因此它们的执行顺序除上述顺序外还可以为步骤106、步骤105、步骤107;步骤106、步骤107、步骤105;当然并不局限于上述执行顺序,可以根据需要,任意调节上述步骤105-步骤107的执行顺序。
上述操作是作为一个守护进程,运行在系统后台不断检测/proc/bus/usb/devices和/proc/partitions这两个文件的,其进程优先级低于普通应用程序,因而,可以降低资源占用率,同时也不会影响其他进程的执行。
为了获得已接入和新接入USB磁盘的数量,实现自动监测USB磁盘的功能,在上述操作之前,需正确地安装USB驱动。
上述方法越过热插拨机制,可以支持不同的Linux发布版本,并且实现了不同内核版本和不同发行版本间完全兼容的USB磁盘的自动监测功能。
图2为本发明另一些实施例自动复制USB磁盘有效内容方法的流程图,该方法在获得新接入的USB磁盘的名称之后还包括 步骤201、读取并察看该新接入的USB磁盘的分区信息; 当获得新接入的USB磁盘的名称之后,系统会读取新接入的USB磁盘的分区信息,并察看各分区类型、大小等信息; 步骤202、判断该分区信息是否满足预定条件,若满足,则执行步骤203,否则,执行步骤204; 步骤203、将该新接入的USB磁盘挂接到文件系统中; 为了识别新接入的USB磁盘,必须将其挂接到文件系统的节点上; 步骤204、提示操作结束; 上述预定条件可以由用户自行定义,例如可以是磁盘容量、预定类型或特定标记等;因此,上述判断该分区信息是否满足预定条件可以具体为判断分区磁盘容量是否大于1GB,若大于,则将该分区信息写入文件系统中,否则,提示操作结束;也可以为判断USB磁盘的分区类型是否为文件分配表(fat)类型,若是,则将该分区信息写入文件系统中,否则,提示操作结束,还可以是判断读取的新接入USB磁盘中是否含有特定标记,若含有,则判定该分区信息满足预定条件,否则,判定该分区信息不满足预定条件。
步骤205、判断磁盘中是否有特定需要复制的文件,若有,执行步骤206,否则,执行步骤207; 步骤206、开始复制; 步骤207、卸载挂接到文件系统中的USB磁盘,转向步骤204。
当磁盘中有特定需要复制的文件时,系统会自动实现复制其有效内容。
另外,上述所有对USB磁盘的操作以及错误信息,都可以由声音提供,目前主要的声音提示有 一声短表明系统发现新的USB磁盘。
一声长表明文件复制成功或成功完成操作,没有发生任何错误。
三声短表明有效内容不完善,或者安全检测没有通过。
两长一短表明无法挂接USB磁盘到文件系统上。
一长两短表明无法获取USB磁盘的有效信息。
报警声表明错误严重,一般为磁盘损坏,无法读取内容。
有节奏的滴滴滴表明正在复制文件。
上述方法越过热插拨机制,可以支持不同的Linux发布版本,并且实现了不同内核版本和不同发行版本间完全兼容的USB磁盘的自动监测和自动复制有效内容的功能。
最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
权利要求
1、一种自动监测USB磁盘的方法,其特征在于,包括
读取已接入USB磁盘的第一设备文件;
当第一设备文件中表示接口类型的字段值为预定值时,对第一计数器的值进行累计;
读取新接入USB磁盘的第二设备文件;
当第二设备文件中表示接口类型的字段值为预定值时,对第二计数器的值进行累计;
当第一计数器的值小于第二计数器的值时,判定有新USB磁盘接入,并通过分区文件获得新接入的USB磁盘的名称,同时将第二计数器的值保存在第一设备文件的第一计数器中;
当第一计数器的值大于第二计数器的值时,判定已移除新USB磁盘,并将第二计数器的值保存在第一设备文件的第一计数器中;
当第一计数器的值等于第二计数器的值时,判定无新USB磁盘接入或移除。
2、根据权利要求1所述的自动监测USB磁盘的方法,其特征在于,在所述通过分区文件获得新接入的USB磁盘的名称之后还包括
读取并察看该新接入的USB磁盘的分区信息;
判断该分区信息是否满足预定条件,若满足,则将该新接入的USB磁盘挂接到文件系统中,否则,提示操作结束;
判断磁盘中是否有特定需要复制的文件,若有,则开始复制,否则,卸载挂接到文件系统中的USB磁盘,提示操作结束。
3、根据权利要求2所述的自动监测USB磁盘的方法,其特征在于,所述读取并察看该新接入的USB磁盘的分区信息具体为读取并察看该新接入的USB磁盘的分区容量、分区类型、卷标、序列号。
4、根据权利要求3所述的自动监测USB磁盘的方法,其特征在于,所述判断该分区信息是否满足预定条件具体为将读取的新接入USB磁盘的分区容量与预定容量进行比较,若该分区容量大于预定容量,则判定该分区信息满足预定条件,否则,判定该分区信息不满足预定条件。
5、根据权利要求3所述的自动监测USB磁盘的方法,其特征在于,所述判断该分区信息是否满足预定条件具体为判断读取的新接入USB磁盘的分区类型是否为预定类型,若是,则满足预定条件,否则不满足预定条件。
6、根据权利要求3所述的自动监测USB磁盘的方法,其特征在于,所述判断该分区信息是否满足预定条件具体为判断读取的新接入USB磁盘中是否含有特定标记,若含有,则判定该分区信息满足预定条件,否则,判定该分区信息不满足预定条件。
全文摘要
本发明涉及一种自动监测USB磁盘的方法,包括读取已接入USB磁盘的第一设备文件;当第一设备文件中表示接口类型的字段值为预定值时,对第一计数器的值进行累计;读取新接入USB磁盘的第二设备文件;当第二设备文件中表示接口类型的字段值为预定值时,对第二计数器的值进行累计;当第一计数器的值小于第二计数器的值时,判定有新USB磁盘接入;当第一计数器的值大于第二计数器的值时,判定已移除新USB磁盘。该方法越过热插拨机制,可以支持不同的Linux发布版本,实现了不同内核版本和不同发行版本间完全兼容的USB磁盘的自动监测和自动复制有效内容的功能。
文档编号G06F13/10GK101398791SQ20071012238
公开日2009年4月1日 申请日期2007年9月25日 优先权日2007年9月25日
发明者赵鑫磊 申请人:神州亿品科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1