具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明工作模式切换方法实施例一的流程图,如图1所示,本实施例的方法可以包括:
步骤101、在与主机设备连接后,根据主机设备注册表中的osvc键值,确定所述主机设备已安装第二工作模式的驱动程序。
USB设备在与主机设备,例如PC连接后,可以根据主机设备注册表中的osvc键值,确定主机设备是否已安装第二工作模式的驱动程序。
本实施例中的第二工作模式为需要在主机设备上安装驱动程序后,USB设备才能使用的工作模式,例如网卡模式,而第一工作模式则为预先将驱动程序集成在操作系统中而无需再安装驱动程序,USB设备即可使用的工作模式,例如光盘模式。
具体来说,USB设备在首次连接到主机设备后,主机设备可以查询注册表获知该USB设备对应的osvc键值为空,然后,主机设备可以向USB设备发送微软操作系统(Microsoft Operation System,以下简称:MSOS)支持查询命令,该MSOS支持查询命令用于在USB设备首次连接时查询USB设备的兼容标识,从而确认该USB设备是否支持MSOS。USB设备即可响应该MSOS支持查询命令,向主机设备发送支持响应命令,该支持响应命令中可以包含该USB设备支持MSOS的标识信息以及表示USB设备默认工作在第一工作模式的标识信息。
举例来说,USB设备在首次与主机设备连接后,主机设备即可向USB设备查询索引(以下简称:index)为0xEE的字符串描述符,如果USB设备支持MSOS,则可以向主机设备返回一个字符串,该字符串中即可包括例如“FE”的字节,该“FE”可以表示USB设备当前默认工作在第一工作模式,例如可以默认工作在光盘模式。然后,主机设备即可将该“FE”写入主机设备的注册表中的osvc键值中。该注册表的位置为HKLM\System\CurrentControlSet\Control\UsbFlags\VVVVPPPPXXXX,其中VVVV为设备的供应商表示(vendor ID,以下简称:VID),PPPP为设备的产品标识(Product ID,以下简称:PID),XXXX为设备的版本,如12D118120000,其中,“12D1”为VID,“1812”为PID,“0000”为设备的版本。
osvc键值为2个字节BINARY类型的数据,第一个字节表示是否支持MSOS的描述符,第二个字节为MSOS描述符的命令码。主机设备在接收包含“FE”的字符串后,即可以对应地将表示该USB设备支持MSOS的字节“01”写入osvc键值的第一个字节,将“FE”写入osvc键值的第二个字节。
若用户需要使该USB设备工作在需要安装驱动程序才能使用的第二工作模式下,例如网卡模式等,则主机设备可以安装第二工作模式的驱动程序,在该第二工作模式的驱动程序安装完成后,该主机设备可以修改osvc键值,例如对上述“01FE”进行修改,该修改后的osvc键值可以使得USB设备获知主机设备已经可以支持第二工作模式。需要说明的是,本实施例并不限定主机设备在安装第二工作模式的驱动程序后,对osvc键值进行修改的具体实现方式,只要能够使USB设备获知主机设备已经可以支持第二工作模式即可。
在主机设备已经安装第二工作模式的驱动程序并修改注册表中的osvc键值之后,若该USB设备再与主机设备连接,该USB设备即可根据修改后的osvc键值获知主机设备已经安装了第二工作模式的驱动程序。
步骤102、将USB设备工作状态从当前的第一工作模式切换到所述第二工作模式。
在USB设备获知主机设备已经可以支持第二工作模式时,该USB设备的工作状态即可从默认的第一工作模式切换到第二工作模式,例如从默认的光盘模式切换到网卡模式。
需要说明的是,本实施例中,USB设备既可以自主地进行工作模式的切换,例如USB设备在确定主机设备已安装第二工作模式的驱动程序后可以通过重启进行工作状态切换;USB设备也可以在主机设备的控制下进行工作模式的切换,例如主机设备可以模拟USB设备的断电再上电过程,从而对USB设备进行工作模式的切换控制,使得USB设备进行工作状态切换。该USB设备更为具体的切换操作可以采用现有技术实现,此处不再赘述。
本实施例中,主机设备在完成第二工作模式的驱动程序的安装后,即可修改注册表中的osvc键值,从而使得修改后的osvc键值可以作为USB设备判断主机设备是否已安装第二工作模式的驱动程序的依据,从而使得USB设备可以根据修改后的osvc键值进行工作状态的切换。本实施例并不需要开发特殊的辅助程序或者额外的驱动程序,方案简单便于实现,且不会存在不兼容的问题。
图2为本发明工作模式切换方法实施例二的流程图,如图2所示,本实施例的方法是与图1所示USB设备执行的方法相对应的主机设备执行的方法,本实施例的方法可以包括:
步骤201、安装USB设备的第二工作模式的驱动程序。
当用户需要使USB设备工作在第二工作模式下时,主机设备可以安装USB设备的第二工作模式的驱动程序。主机设备安装第二工作模式的驱动程序的过程可以采用现有技术实现,此处不再赘述。
步骤202、对注册表中与所述USB设备对应的osvc键值进行修改,以使所述USB设备在连接到主机设备后,根据修改后的osvc键值,确定所述主机设备已安装第二工作模式的驱动程序。
在主机设备完成第二工作模式的驱动程序的安装处理后,主机设备可以对其注册表中与该USB设备对应的osvc键值进行修改,该修改后的osvc键值可以使得USB设备获知主机设备已经可以支持第二工作模式。
具体来说,USB设备在首次连接到主机设备后,主机设备可以查询注册表获知该USB设备对应的osvc键值为空,然后,主机设备可以向USB设备发送MSOS支持查询命令。USB设备即可响应该MSOS支持查询命令,向主机设备发送支持响应命令,该支持响应命令中可以包含表示该USB设备支持MSOS的标识信息以及表示USB设备默认的第一工作模式的标识信息。主机设备即可将表示USB设备支持MSOS的标识信息以及表示USB设备默认的第一工作模式的标识信息写入osvc键值中。举例来说,在USB首次与主机设备连接后,osvc键值可以为“01FE”。其中,“01”即为表示USB设备支持MSOS的标识信息,“FE”即为表示USB设备默认的第一工作模式的标识信息。
在步骤201完成之后,主机设备可以修改osvc键值,例如对上述“01FE”进行修改,该修改后的osvc键值可以使得USB设备获知主机设备已经可以支持第二工作模式。若该USB设备再与主机设备连接时,该USB设备即可根据修改后的osvc键值获知主机设备已经安装了第二工作模式的驱动程序,从而可以将当前的工作状态从默认的第一工作模式切换到第二工作模式。
本实施例中,主机设备在完成第二工作模式的驱动程序的安装后,即可修改注册表中的osvc键值,从而使得修改后的osvc键值可以作为USB设备判断主机设备是否已安装第二工作模式的驱动程序的依据,从而使得USB设备可以根据修改后的osvc键值进行工作状态的切换。本实施例并不需要开发特殊的辅助程序或者额外的驱动程序,方案简单便于实现,且不会存在不兼容的问题。
上述实施例一和实施例二并不限定主机设备具体采用何种方式修改osvc键值,本领域技术人员可以根据需要自行设定,只要能够通过该修改后的osvc键值使USB设备获知主机设备已经完成第二工作模式的驱动程序的安装,也即该USB设备已经可以将工作状态从默认的第一工作模式切换到第二工作模式即可。而且,上述实施例一和实施例二中的USB设备可以采用任何具有USB连接器的设备,例如数据卡,此处不再赘述。
下面采用两个具体实施例对本发明的技术方案进行详细说明。下面两个实施例均以第一工作模式为光盘模式,第二工作模式为网卡模式为例进行说明。需要说明的是,下述实施例并不限定该第一工作模式和第二工作模式具体是哪种工作模式。本领域技术人员可以自行设定该第一工作模式为驱动程序已经集成在操作系统中的工作模式,该第二工作模式为需要安装驱动程序USB设备才能使用的工作模式。
图3为本发明工作模式切换方法实施例三的流程图,如图3所示,本实施例的方法可以包括:
步骤301、USB设备首次连接到主机设备。
步骤302、主机设备向USB设备发送MSOS支持查询命令。
USB设备在首次连接到主机设备后,主机设备可以查询注册表获知该USB设备对应的osvc键值为空,然后,主机设备可以向USB设备发送MSOS支持查询命令。
步骤303、USB设备向主机设备发送支持响应命令。
该支持响应命令中包含表示支持MSOS的标识信息以及当前工作在光盘模式的标识信息。
举例来说,表示支持MSOS的标识信息可以为“01”,表示当前工作在光盘模式的标识信息可以为“FE”,则该支持响应命令中可以包含“01FE”。
步骤304、主机设备将表示支持MSOS的标识信息以及当前工作在光盘模式的标识信息写入osvc键值。
主机设备在接收该支持响应命令后,即可将其中的“01FE”写入osvc键值中。
步骤305、主机设备安装USB设备的网卡模式的驱动程序。
步骤306、主机设备将注册表中osvc键值的光盘模式的标识信息修改为网卡模式的标识信息。
在该网卡模式的驱动程序安装完成后,该主机设备可以修改osvc键值。
在本实施例中,主机设备例如可以将上述“01FE”修改为“010F”,其中“0F”表示主机设备已经可以支持网卡模式。
在具体实现时,主机设备中可以维护工作模式与标识信息之间的对应关系。表1即为一种对应关系的示意,其中,BINARY1即为osvc键值的第一个字节,BINARY2即为osvc键值的第二个字节,配置为对应的驱动程序。若主机设备安装配置2对应的驱动程序,则主机设备可以将osvc键值修改为“0101”。本领域技术人员可以根据需要改变表1中的内容和形式。
表1
步骤307、主机设备控制所述USB设备进行重新接入。
为了使主机设备可以将修改后的osvc键值发送给USB设备,主机设备需要控制USB设备重新接入主机设备,例如主机设备可以先删除该USB设备,然后再控制该USB设备接入主机设备,从而完成一次USB设备的重新接入。该步骤307也可以通过USB设备自行重启来实现USB设备的重新接入。
步骤308、主机设备向所述USB设备发送MSOS描述符。
在USB设备重新接入USB设备后,由于osvc键值不为空,则主机设备可以向USB设备发送MSOS描述符,该MSOS描述符可以为“C00F”,其中的MSOS命令码“0F”即为osvc键值中的第二个字节,也即表示主机设备已经可以支持网卡模式。
步骤309、USB设备根据MSOS描述符中的MSOS命令码,将工作状态从光盘模式切换到网卡模式。
在USB设备接收到该MSOS描述符后,即可根据其中的命令码“0F”获知主机设备已经可以支持网卡模式,因此,USB设备可以从当前的光盘模式切换到网卡模式。
本实施例中,主机设备在完成网卡模式的驱动程序的安装后,即可将注册表中的osvc键值的第二个字节修改为网卡模式的标识,从而使得修改后的osvc键值可以作为USB设备判断主机设备是否已安装网卡模式的驱动程序的依据,从而使得USB设备可以根据修改后的osvc键值进行工作状态的切换。本实施例并不需要开发特殊的辅助程序或者额外的驱动程序,方案简单便于实现,且不会存在不兼容的问题。
图4为本发明工作模式切换方法实施例四的流程图,如图4所示,本实施例的方法可以包括:
步骤401、USB设备首次连接到主机设备。
步骤402、主机设备向USB设备发送MSOS支持查询命令。
步骤403、USB设备向主机设备发送支持响应命令。
步骤404、主机设备将表示支持MSOS的标识信息以及当前工作在光盘模式的标识信息写入osvc键值。
步骤405、主机设备安装USB设备的网卡模式的驱动程序。
上述步骤401~405与图3所示步骤301~305的实现原理相同,此处不再赘述。
步骤406、将osvc键值中表示支持MSOS的标识信息修改为表示不支持MSOS的标识信息。
本实施例与图3所示实施例三的区别在于,实施例三是将osvc键值的第二个字节中表示光盘模式的标识信息修改为网卡模式的标识信息,并向USB设备发送包含该网卡模式的标识信息的MSOS描述符,从而明确指示USB设备可以进行模式切换。而本实施例中,主机设备在网卡模式的驱动程序安装完成后,将osvc键值中表示支持MSOS的标识信息修改为表示不支持MSOS的标识信息,也即对osvc键值的第一个字节进行修改,例如将“01FE”修改为“00FE”或者“0000”,从而使得修改后的osvc键值表示USB设备不支持MSOS。
步骤407、主机设备控制所述USB设备进行重新接入。
为了使主机设备可以将修改后的osvc键值发送给USB设备,主机设备需要控制USB设备重新接入主机设备,例如主机设备可以先删除该USB设备,然后再控制该USB设备接入主机设备,从而完成一次USB设备的重新接入。
步骤408、USB设备未接收到主机设备发送的MSOS描述符,则确定所述主机设备已安装网卡模式的驱动程序。
在USB设备重新接入USB设备后,尽管osvc键值不为空,但是osvc键值的第一个字节表示USB不支持MSOS,因此,主机设备不向USB设备发送MSOS描述符。由于正常情况下,在USB设备非首次接入主机设备时,osvc键值不为空,主机设备应当向USB设备发送MSOS描述符。但是,在本实施例中,正是由于主机设备在安装网卡模式的驱动程序后将osvc键值的第一个字节修改为表示USB不支持MSOS,因此主机设备不会再向USB设备发送MSOS描述符,以此来隐含指示USB设备其已经安装了网卡模式的驱动程序,因此USB设备在应当收到主机设备发送的MSOS描述符而事实上却没有收到该MSOS描述符的情况下,即可确定主机设备已经安装了网卡模式的驱动程序。
步骤409、USB设备将工作状态切换到网卡模式。
若USB设备没有接收到该MSOS描述符,则USB设备可以从当前的光盘模式切换到网卡模式。
在具体实现时,USB设备可以设定一个阈值,若等待时间超过该阈值,则确定没有收到该MSOS描述符,从而确定主机设备已经安装了网卡模式的驱动程序,从而可以从当前的光盘模式切换到网卡模式。
本实施例中,主机设备在完成网卡模式的驱动程序的安装后,即可将注册表中的osvc键值的第一个字节修改为表示不支持MSOS的标识信息,使得USB设备无法接收到主机设备发送的MSOS描述符,从而使得USB设备可以将工作状态当前的光盘模式切换到网卡模式。本实施例并不需要开发特殊的辅助程序或者额外的驱动程序,方案简单便于实现,且不会存在不兼容的问题。
图5为本发明USB设备实施例一的结构示意图,如图5所示,本实施例的USB设备可以包括:确定模块11和切换模块12,其中,确定模块11用于在与主机设备连接后,根据主机设备注册表中的osvc键值,确定所述主机设备已安装第二工作模式的驱动程序;切换模块12用于将USB设备工作状态从当前的第一工作模式切换到所述第二工作模式。
本实施例的USB设备可以用于执行图1所示方法实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图6为本发明USB设备实施例二的结构示意图,如图6所示,本实施例的USB设备在图5所示USB设备结构的基础上,进一步地,还包括:第一收发模块13和第一处理模块14,确定模块11可以包括:接收单元111和第一确定单元112。其中,第一收发模块13用于接收所述主机设备发送的MSOS支持查询命令,并向所述主机设备发送支持响应命令,所述支持响应命令中包含表示支持MSOS的标识信息以及当前工作在第一工作模式的标识信息;第一处理模块14用于在所述主机设备安装第二工作模式的驱动程序并对所述osvc键值进行修改之后,重新接入所述主机设备;接收单元111用于接收所述主机设备发送的MSOS描述符,所述MSOS描述符中的MSOS命令码为所述osvc键值中表示所述主机设备已安装所述第二工作模式的驱动程序的标识信息;第一确定单元112用于根据所述第二工作模式的驱动程序的标识信息确定所述主机设备已安装第二工作模式的驱动程序。
本实施例的USB设备可以用于执行图3所示方法实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图7为本发明USB设备实施例三的结构示意图,如图7所示,本实施例的USB设备在图5所示USB设备结构的基础上,进一步地,还包括:第一收发模块13和第一处理模块14,确定模块11可以包括:判断单元113和第二确定单元114,其中,第一收发模块13用于接收所述主机设备发送的MSOS支持查询命令,并向所述主机设备发送支持响应命令,所述支持响应命令中包含表示支持MSOS的标识信息以及当前工作在第一工作模式的标识信息;第一处理模块14用于在所述主机设备安装第二工作模式的驱动程序并对所述osvc键值进行修改之后,重新接入所述主机设备;判断单元113用于判断是否接收到所述主机设备发送的MSOS描述符;第二确定单元114用于若判断单元判断未接收到所述主机设备发送的MSOS描述符,则确定所述主机设备已安装第二工作模式的驱动程序。
本实施例的USB设备可以用于执行图4所示方法实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图8为本发明主机设备实施例一的结构示意图,如图8所示,本实施例的主机设备可以包括:安装模块21和修改模块22,其中,安装模块21用于安装USB设备的第二工作模式的驱动程序;修改模块22用于对注册表中与所述USB设备对应的osvc键值进行修改,以使所述USB设备在连接到主机设备后,所述USB设备根据修改后的osvc键值,确定所述主机设备已安装第二工作模式的驱动程序。
本实施例的主机设备可以用于执行图2所示方法实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图9为本发明主机设备实施例二的结构示意图,如图9所示,本实施例的主机设备在图8所示主机设备的基础上,进一步地,还包括:第二收发模块23和第二处理模块24,修改模块22进一步包括第一修改单元221,其中,第二收发模块23用于向所述USB设备发送MSOS支持查询命令;接收所述USB设备发送的包含表示支持MSOS的标识信息以及当前工作在第一工作模式的标识信息的支持响应命令;第二处理模块24用于将所述表示支持MSOS的标识信息以及当前工作在第一工作模式的标识信息写入所述osvc键值,并在对与所述USB设备对应的osvc键值进行修改之后,控制所述USB设备进行重新接入;第一修改单元221用于将所述osvc键值的第一工作模式的标识信息修改为所述第二工作模式的标识信息,并向所述USB设备发送MSOS描述符,所述MSOS描述符中的MSOS命令码为所述osvc键值中表示所述主机设备已安装所述第二工作模式的驱动程序的标识信息。
本实施例的主机设备可以用于执行图3所示方法实施例的方法,其实现原理和技术效果类似,此处不再赘述。
图10为本发明主机设备实施例三的结构示意图,如图10所示,本实施例的主机设备在图8所示主机设备的基础上,进一步地,还包括:第二收发模块23和第二处理模块24,修改模块22进一步包括第二修改单元222,其中,第二收发模块23用于向所述USB设备发送MSOS支持查询命令;接收所述USB设备发送的包含表示支持MSOS的标识信息以及当前工作在第一工作模式的标识信息的支持响应命令;第二处理模块24用于将所述表示支持MSOS的标识信息以及当前工作在第一工作模式的标识信息写入所述osvc键值;在所述安装模块安装USB设备的第二工作模式的驱动程序,所述修改模块对注册表中与所述USB设备对应的osvc键值进行修改之后,控制所述USB设备进行重新接入;第二修改单元222用于将所述osvc键值中表示支持MSOS的标识信息修改为表示不支持MSOS的标识信息。
本实施例的主机设备可以用于执行图4所示方法实施例的方法,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。