具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明设备连接处理方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
步骤101、在与主机设备插接后,接收所述主机设备发送的设备描述符修改指令。
具体来说,本实施例的主机设备上可以安装一监控程序,该监控程序可以通过组合设备的光盘安装,也可以通过组合设备映射出虚拟的光盘或者U盘进行安装。本实施例中的监控程序功能较为单一,其仅需要负责监控组合设备已经从主机设备中移除但是网络连接没有释放的情况即可。
现有技术中,在将组合设备从主机设备上移除时,如果组合设备的SD卡正在被访问,则主机设备可以检测到SD卡资源没有释放,从而使得RNDIS设备所对应的网络连接也不会被释放。而当再次插入该组合设备时,主机设备由于检测到该组合设备中RNDIS设备所对应的网络连接没有释放,则主机设备不会再为该RNDIS设备创建新的网络连接,但是本次插入的组合设备又与上一次插入时建立的网络连接不匹配,因此,该组合设备无法使用RNDIS设备访问网络。
本实施例中,组合设备在与主机设备插接后,可以将其默认的设备描述符发送给主机设备,而主机设备的监控程序可以获知该组合设备在上一次从主机设备移除时是否释放网络连接,如果未释放网络连接,则主机设备可以向组合设备发送设备描述符修改指令。该设备描述符修改指令可以用于指示组合设备将默认的设备描述符修改为不同于上次插入主机设备时向主机设备发送的设备描述符。
步骤102、根据所述设备描述符修改指令,修改设备描述符并进行设备重新接入处理。
组合设备在接收到该设备描述符修改指令后,可以对其默认的设备描述符进行修改,从而使得修改后的描述符不同于其默认的设备描述符,也即不同于其上次插入主机设备时向主机设备发送的设备描述符。而且,为了将修改后的设备描述符发送给主机设备,该组合设备还需要进行设备重新接入处理。该重新接入处理既可以是组合设备自己完成的,也可以是主机设备通过模拟组合设备的重新接入过程完成的,该重新接入过程可以采用现有技术实现,此处不再赘述。
需要说明的是,本实施例并不限定组合设备对设备描述符的具体修改,本领域技术人员可以理解的是,本实施例只要使修改后的设备描述符不同于其上次插入主机设备时向主机设备发送的设备描述符即可。
步骤103、将修改后的设备描述符发送给所述主机设备,以使所述主机设备根据所述修改后的设备描述符建立新的网络连接。
组合设备在完成设备描述符的修改之后,由于其进行了设备的重新上报,因此,组合设备可以将修改后的设备描述符发送给主机设备。
当主机设备接收到该修改后的设备描述符后,即可认为该组合设备是一个新的组合设备,从而为该组合设备建立新的网络连接。
本实施例中,主机设备可以在确定组合设备在上一次移除时网络连接没有释放的情况下,向组合设备发送设备描述符修改指令,指示组合设备在本次插入时重新上报修改后的设备描述符,从而使主机设备根据该修改后的设备描述符认为该组合设备是新的组合设备,从而为其建立新的网络连接,进而使得用户可以使用该组合设备中的RNDIS设备访问网络。本实施例无需用户重新启动主机设备,便于用户操作。
图2为本发明设备连接处理方法实施例二的流程图,如图2所示,本实施例是主机设备执行的与图1所示组合设备所执行的过程相对应的过程,本实施例的方法可以包括:
步骤201、在组合设备接入后,若所述组合设备上一次移除后的网络连接未释放,则向所述组合设备发送设备描述符修改指令。
在组合设备接入主机设备后,主机设备可以确定该组合设备上一次移除后的网络连接是否释放,如果未释放,则主机设备可以向所述组合设备发送设备描述符修改指令。该设备描述符修改指令可以用于指示组合设备将默认的设备描述符修改为不同于上次插入主机设备时向主机设备发送的设备描述符。
步骤202、接收所述组合设备根据所述设备描述符修改指令修改并发送的设备描述符。
组合设备在接收到该设备描述符修改指令后,可以对其默认的设备描述符进行修改,从而使得修改后的描述符不同于其默认的设备描述符,也即不同于其上次插入主机设备时向主机设备发送的设备描述符。而且,为了将修改后的设备描述符发送给主机设备,该组合设备还需要进行设备重新接入处理。该重新接入处理既可以是组合设备自己完成的,也可以是主机设备通过模拟组合设备的重新接入过程完成的,该重新接入过程可以采用现有技术实现,此处不再赘述。需要说明的是,本实施例并不限定组合设备对设备描述符的具体修改,本领域技术人员可以理解的是,本实施例只要使修改后的设备描述符不同于其上次插入主机设备时向主机设备发送的设备描述符即可。
组合设备在完成设备描述符的修改之后,由于其进行了设备的重新上报,因此,组合设备可以将修改后的设备描述符发送给主机设备。
步骤203、根据修改后的设备描述符,为所述组合设备建立新的网络连接。
主机设备接收到该修改后的设备描述符后,即可根据该修改后的设备描述符确定该组合设备是一个新的组合设备,从而可以为该组合设备建立新的网络连接。
本实施例中,主机设备可以在确定组合设备在上一次移除时网络连接没有释放的情况下,向组合设备发送设备描述符修改指令,指示组合设备在本次插入时重新上报修改后的设备描述符,从而使主机设备根据该修改后的设备描述符认为该组合设备是新的组合设备,从而为其建立新的网络连接,进而使得用户可以使用该组合设备中的RNDIS设备访问网络。本实施例无需用户重新启动主机设备,便于用户操作。
下面采用一个具体实施例对本发明的技术方案进行详细说明。
图3为本发明设备接入处理方法实施例三的流程图,如图3所示,本实施例的方法可以包括:
步骤301、组合设备从主机设备中移除。
本实施例可以假设组合设备由RNDIS设备和SD卡组合而成。在组合设备从主机设备上移除时,SD卡正处于访问状态,因此,RNDIS设备所对应的网络连接不会被释放。
步骤302、主机设备确定该组合设备的网络连接未释放,修改该组合设备的异常状态标识。
具体来说,组合设备在通过RNDIS设备访问网络时,会在设备树上生成设备节点,并在内存中生成网络适配器的相应功能。在主机设备确定该组合设备在移除时是否释放网络连接时,主机设备可以判断网络适配器列表中是否存在组合设备的标识信息且设备树上是否存在组合设备的标识信息,若网络适配器列表中存在组合设备的标识信息且设备树上不存在组合设备的标识信息,则将异常状态标识修改为组合设备移除后的网络连接未释放的标识信息。
在具体实现时,主机设备可以通过IpHelper中的api函数GetAdaptersInfo确定网络连接中是否存在与该组合设备对应的网络连接的标识信息,若存在,则可以在注册表中查找该网络连接的标识信息对应的注册表项。该注册表项中包括了实际设备节点的实例ID,通过实例ID可以判断是否是当前的RNDIS设备,如果是,则进一步调用API查看该RNDIS设备的状态是接入还是未接入,从而可以判断出设备是否已经移除,若移除其网络连接是否释放。
步骤303、组合设备插入,并向主机设备发送设备描述符。
该组合设备再次插入时,其向主机设备发送的设备描述符仍然是上一次插入主机设备时上报给主机设备的设备描述符。
步骤304、主机设备根据该组合设备的异常状态标识,确定该组合设备上一次移除后的网络连接未释放。
此时,主机设备即可根据该组合设备的异常状态标识,确定该组合设备在步骤301移除后,其网络连接未释放。
此时,主机设备不能为该组合设备建立网络连接,因此,该组合设备中的RNDIS设备无法访问网络。
步骤305、主机设备向该组合设备发送设备描述符修改指令。
由于此时RNDIS设备没有建立网络连接,因此,主机设备无法向RNDIS设备发送该设备描述符修改指令,但是可以向组合设备中的其它设备发送该设备描述符修改指令。如果组合设备中只有RNDIS设备和SD卡,则主机设备只能向SD卡发送该设备描述符修改指令,如果组合设备中还有其它设备,如人工接口设备(Human Interface Device,以下简称:HID),则主机设备可以通过HID设备的端口向组合设备发送该设备描述符修改指令。
本实施例以主机设备向SD卡端口发送设备描述符修改指令为例进行说明,但是并不仅限于向SD卡端口发送该设备描述符修改指令。由于SD卡使用的是小型机系统接口(Small Computer System Interface,以下简称:SCSI)命令与主机设备进行通信,因此主机设备可以使用SCSI命令作为设备描述符修改指令,通知组合设备修改设备描述符。该SCSI命令的操作码或者该命令的参数需要能被组合设备唯一识别,即主机设备不会发送同样的SCSI命令给组合设备的SD卡。举例来说,本实施例中的SCSI命令可以为0x11,当然SCSI命令也可以是任何其它能够与主机设备发送的命令区分开的命令。
为了能够保证连续多次插拔组合设备之后,主机设备仍能使组合设备通过RNDIS设备访问网络,本实施例可以引入分别表示多个描述符修改方式的操作码,这些操作码可以表示改变设备的供应商标识(vendor ID,以下简称:VID)的修改方式、表示改变设备的产品标识(Product ID,以下简称:PID)修改方式,或者代表改变设备的版本标识的修改方式,或者这些修改方式的任意组合。这些描述符修改方式既可以由组合设备维护,也可以由主机设备维护。如果由组合设备进行维护,则主机设备发送的设备描述符修改指令中可以包括本次修改方式的索引,从而使得组合设备可以根据该索引获知设备描述符的修改方式;如果由主机设备进行维护,则主机设备发送的设备描述符修改指令中可以包括本次修改方式的具体的操作码。另外,主机设备需要记录哪些修改方式的索引或者哪些操作码已经被使用过,从而使得主机设备可以指示组合设备将设备描述符修改不同于上次使用的设备描述符。
步骤306、组合设备修改设备描述符,并在重新接入主机设备后向主机设备发送修改后的设备描述符。
若主机设备发送的设备描述符修改指令中包含描述符修改方式的索引信息,则组合设备可以通过查询其自己维护的索引信息与修改方式的对照表,确定如何对设备描述符进行修改。举例来说,若该设备描述符修改指令中包含的索引信息为“01”,则组合设备可以根据该“01”获知需要对设备描述符的PID进行修改。因此,组合设备即可对步骤303上报的设备描述符中的PID进行修改,从而使得修改后的设备描述符不同于步骤303上报的设备描述符。
若主机设备发送的设备描述符修改指令中包含描述符修改方式的操作码,则组合设备可以直接根据该操作码对设备描述符进行修改。举例来说,若该设备描述符修改指令中包含的操作码为“11”且该操作码代表的描述符修改方式为修改设备描述符中的设备版本标识,则组合设备即可对步骤303上报的设备描述符中的设备版本标识进行修改,从而使得修改后的设备描述符不同于步骤303上报的设备描述符。
需要说明的是,主机设备和组合设备可以预先约定主机设备是采用索引方式还是操作码方式指示组合设备。另外,本实施例也并不限定主机设备仅指示组合设备进行上述几种描述符修改方式,本领域技术人员根据需要可以设计任意描述符修改方式,使本次上报的设备描述符不同于步骤303上报的设备描述符。
该组合设备还需要进行设备重新接入处理。该重新接入处理既可以是组合设备自己完成的,也可以是主机设备通过模拟组合设备的重新接入过程完成的,该重新接入过程可以采用现有技术实现,此处不再赘述。
一旦组合设备完成重新接入处理,组合设备即可将修改后的设备描述符上报给主机设备。
步骤307、主机设备根据该修改后的设备描述符为该组合设备建立新的网络连接。
主机设备接收到该修改后的设备描述符后,即可根据该修改后的设备描述符确定该组合设备是一个新的组合设备,从而可以为该组合设备建立新的网络连接。
本实施例中,主机设备可以在确定组合设备在上一次移除时网络连接没有释放的情况下,向组合设备发送设备描述符修改指令,该设备描述符修改指令即可采用描述符修改方式的索引形式又可以采用描述符修改方式的操作码形式指示组合设备在本次插入时重新上报修改后的设备描述符,例如修改设备的VID、PID或者版本标识等,从而使主机设备根据该修改后的设备描述符认为该组合设备是新的组合设备,为其建立新的网络连接,进而使得用户可以使用该组合设备中的RNDIS设备访问网络。本实施例无需用户重新启动主机设备,便于用户操作。
图4为本发明组合设备实施例一的结构示意图,如图4所示,本实施例的组合设备可以包括:第一接收模块11、第一修改模块12和第一发送模块13,第一接收模块11用于在与主机设备插接后,接收所述主机设备发送的设备描述符修改指令;第一修改模块12用于根据所述设备描述符修改指令,修改设备描述符并进行设备重新接入处理;第一发送模块13用于将修改后的设备描述符发送给所述主机设备,以使所述主机设备根据所述修改后的设备描述符建立新的网络连接。
本实施例的组合设备可以为由RNDIS设备与SD卡组合而成,也可以由RNDIS设备与其它设备组合而成。其中,第一接收模块11和第一发送模块13的功能可以采用该组合设备本身的收发单元实现,该第一修改模块12可以采用该组合设备本身的处理单元实现。
本实施例的组合设备用于执行图1所示方法实施例的方法,其实现原理和实现效果类似,此处不再赘述。
图5为本发明组合设备实施例二的结构示意图,如图5所示,本实施例的组合设备在图4所示设备结构的基础上,进一步地,第一接收模块11包括第一接收单元111和第二接收单元112,第一修改模块12包括第一修改单元121和第二修改单元122,其中第一接收单元111用于接收所述主机设备发送的设备描述符修改指令,所述设备描述符修改指令中包含描述符修改方式的索引信息;第二接收单元112用于接收所述主机设备发送的设备描述符修改指令,所述设备描述符修改指令中包含描述符修改方式的操作码;第一修改单元121用于根据所述索引信息对应的操作码修改所述设备描述符;第二修改单元122用于根据所述设备描述符修改指令中的操作码修改所述设备描述符。
需要说明的是,在可选的实施例中,第一接收模块11也可以只包括第一接收单元111,第一修改模块12可以只包括第一修改单元121,在另一可选的实施例中,第一接收模块11也可以只包括第二接收单元112,第一修改模块12可以只包括第二修改单元122。
本实施例的组合设备用于执行图3所示方法实施例的方法,其实现原理和实现效果类似,此处不再赘述。
图6为本发明主机设备实施例一的结构示意图,如图6所示,本实施例的主机设备可以包括:第二发送模块21、第二接收模块22以及连接建立模块23,其中,第二发送模块21用于在组合设备接入后,若所述组合设备上一次移除后的网络连接未释放,则向所述组合设备发送设备描述符修改指令;第二接收模块22用于接收所述组合设备根据所述设备描述符修改指令修改并发送的设备描述符;连接建立模块23用于根据修改后的设备描述符,为所述组合设备建立新的网络连接。
本实施例的主机设备可以是PC、上网本等任意可以插接组合设备的主机设备,本实施例的主机设备中,第二发送模块21以及第二接收模块22均可以采用现有主机设备本身的收发模块实现,连接建立模块可以采用现有主机设备本身的网络连接模块实现。
本实施例的主机设备用于执行图2所示方法实施例的方法,其实现原理和实现效果类似,此处不再赘述。
图7为本发明主机设备实施例二的结构示意图,如图7所示,本实施例的主机设备在图6所示主机设备的基础上,进一步地,还包括:确定模块24和第二修改模块25,其中,确定模块24用于在所述第二发送模块21向所述组合设备发送设备描述符修改指令之前,根据所述组合设备的异常状态标识,确定所述组合设备上一次移除后的网络连接是否释放;并且在组合设备上一次移除之后本次接入之前,用于确定网络适配器列表中是否存在所述组合设备的标识信息以及设备树上是否存在所述组合设备的标识信息;第二修改模块25用于若所述网络适配器列表中存在所述组合设备的标识信息且所述设备树上不存在所述组合设备的标识信息,则将所述异常状态标识修改为所述组合设备上一次移除后的网络连接未释放的标识信息。
本实施例的主机设备用于执行图3所示方法实施例的方法,其实现原理和实现效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。