修改USB设备驱动匹配信息的方法及装置转让专利

申请号 : CN200910249779.X

文献号 : CN101702143A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 蒋文春薛贵荧

申请人 : 深圳华为通信技术有限公司

摘要 :

本发明的实施例公开了一种修改USB设备驱动匹配信息的方法及装置,涉及USB设备领域,在设备的PID或者端口编号改变后,不用修改驱动匹配文件同样可以确定与该设备对应的驱动程序。本发明包括:当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求,并所述查询设备信息请求发送给所述枚举驱动;所述过滤驱动接收所述枚举驱动根据所述查询设备信息请求返回的设备信息,并根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串;将所述组成的设备驱动匹配字符串发送给所述即插即用管理器。本发明实施例主要用于设备驱动匹配的过程中。

权利要求 :

1.一种修改USB设备驱动匹配信息的方法,其特征在于,包括:

当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求,并将截获的所述查询设备信息请求发送给所述枚举驱动;

所述过滤驱动接收所述枚举驱动根据所述查询设备信息请求返回的设备信息,并根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串;

将所述组成的设备驱动匹配字符串发送给所述即插即用管理器。

2.根据权利要求1所述的方法,其特征在于,在所述过滤驱动根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串之前,该方法还包括:所述过滤驱动向所述物理设备对象发送查询设备兼容信息请求,获取所述设备的兼容信息,所述设备兼容信息为字符串的形式包括设备类型、设备子类型以及设备协议类型。

3.根据权利要求1所述的方法,其特征在于,在将截获的所述查询设备信息请求发送给所述枚举驱动之前,该方法进一步包括:为截获的所述查询设备信息请求注册一个完成回调函数,以便在所述枚举驱动根据所述查询设备信息请求返回设备信息时,调用注册的完成回调函数,执行所述根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串。

4.根据权利要求1所述的方法,其特征在于,在过滤驱动截获所述查询设备信息请求之前,该方法还包括:当即插即用管理器下发的查询设备列表请求时,所述过滤驱动截获所述查询设备列表请求,并将截获的所述查询设备列表请求发送给枚举驱动;

所述过滤驱动接收所述枚举驱动根据所述查询设备列表请求返回的设备列表,根据所述设备列表为所述设备列表中的每一个设备创建一个过滤设备对象,并将创建的所述过滤设备对象添加到对应的子设备栈中,以便所述过滤驱动根据子设备栈中的过滤设备对象列表截获所述查询设备信息请求。

5.根据权利要求1至4中任一项所述的方法,其特征在于,所述设备信息为字串的形式,包括设备厂商标识、产品标识和产品端口编号。

6.一种修改USB设备驱动匹配信息的装置,其特征在于,包括:

信息请求获取模块,用于当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求;

信息请求发送模块,用于将所述信息请求获取模块截获的所述查询设备信息请求发送给所述枚举驱动;

信息接收模块,用于所述过滤驱动接收所述枚举驱动根据所述查询设备信息请求返回的设备信息;

组成模块,用于根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串;

字符串发送模块,用于将所述组成模块组成的设备驱动匹配字符串发送给所述即插即用管理器。

7.根据权利要求6所述的装置,其特征在于,该装置还包括:

兼容信息获取模块,用于在所述过滤驱动根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串之前,向所述物理设备对象发送查询设备兼容信息请求,获取所述设备的兼容信息,所述设备兼容信息为字符串的形式包括设备类型、设备子类型以及设备协议类型。

8.根据权利要求6所述的装置,其特征在于,该装置还包括:

注册模块,用于在所述信息请求发送模块将截获的所述查询设备信息请求发送给枚举驱动之前,为所述查询设备信息请求注册一个完成回调函数,以便在所述枚举驱动根据所述查询设备信息请求返回设备信息时,调用注册的完成回调函数,执行所述根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串。

9.根据权利要求6所述的装置,其特征在于,该装置还包括:

列表请求获取模块,用于在过滤驱动截获所述查询设备信息请求之前,当即插即用管理器下发的查询设备列表请求时,所述过滤驱动截获所述查询设备列表请求;

列表请求发送模块,用于将所述列表请求获取模块截获的所述查询设备列表请求发送给枚举驱动;

列表接收模块,用于所述过滤驱动接收所述枚举驱动根据所述查询设备列表请求返回的设备列表;

创建模块,用于所述过滤驱动根据所述列表接收模块接收到的设备列表,为所述设备列表中的每一个设备创建一个过滤设备对象;

添加模块,用于将所述创建模块创建的所述过滤设备对象添加到对应的子设备栈中,以便所述过滤驱动根据子设备栈中的过滤设备对象列表截获所述查询设备信息请求。

10.根据权利要求6-9中任一项所述的装置,其特征在于,所述设备信息为字串的形式,包括设备厂商标识、产品标识和产品端口编号。

说明书 :

技术领域

本发明涉及USB设备领域,尤其涉及一种修改USB设备驱动匹配信息的方法及装置。

背景技术

根据USB(Universal Serial Bus,通用串行总线)规范,USB设备的驱动匹配字符串主要有以下三中格式:第1种,由vid(vendor identification,厂商标识)、PID(product identification,产品标识)以及产品端口编号组成,表示为如下形式,vid_xxxx&pid_yyyy&mi_zz;第2种,由vid、subclass(设备子类型)以及设备protocol(协议类型)组成,表示为如下形式,vid_xxxx&subclass_yy&prot_zz;第3种,由class(设备类型)、subclass以及设备protocol组成,表示为如下形式,class_xx&subclass_yy&prot_zz。
其中,第1种和第2种可以通过Vid标识不同的厂商,但是由于windows系统不支持第2种格式,第3种格式不能标识各个厂商,于是各OEM(originalequipment manufacturer,原始设备制造商)制造的USB设备驱动匹配字符串大都采用第1种格式的驱动匹配字符串。并且各厂商通常是一套驱动适用于所有同类产品,而各同类产品间采用不同的PID加以区分。
为使设备驱动能够正确的匹配,需要在操作系统中预设对应于该种设备的驱动匹配字符串表,当设备需要驱动时,仅需要获取所述设备的驱动匹配字符串,并到所述驱动匹配字符串表中查找与对该驱动匹配字符串对应的设备驱动即可。
在实现上述设备匹配驱动的过程中,发明人发现现有技术中至少存在如下问题:第1种格式的缺陷在于设备驱动匹配字符串受限于设备的PID,只要PID更改,就必须修改驱动匹配文件,从而增加维护和认证的成本。

发明内容

本发明的实施例提供一种修改USB设备驱动匹配信息的方法及装置,使在设备的PID或者端口编号改变后,不用修改驱动匹配文件同样可以确定与所述设备对应的驱动,节约驱动维护和认证成本。
为达到上述目的,本发明的实施例采用如下技术方案:
一种修改USB设备驱动匹配信息的方法,包括:
当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求,并将截获的所述查询设备信息请求发送给所述枚举驱动;
所述过滤驱动接收所述枚举驱动根据所述查询设备信息请求返回的设备信息,并根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串;
将所述组成的设备驱动匹配字符串发送给所述即插即用管理器。
一种修改USB设备驱动匹配信息的装置,包括:
信息请求获取模块,用于当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求;
信息请求发送模块,用于将所述信息请求获取模块截获的所述查询设备信息请求发送给所述枚举驱动;
信息接收模块,用于所述过滤驱动接收所述枚举驱动根据所述查询设备信息请求返回的设备信息;
组成模块,用于根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串;
字符串发送模块,用于将所述组成模块组成的设备驱动匹配字符串发送给所述即插即用管理器。
本发明技术方案中,在枚举驱动上增加一层过滤驱动,当即插即用管理器向物理设备对象发送查询设备信息请求,通过过滤驱动截获所述查询设备信息请求,并且在所述枚举驱动根据所述查询设备信息请求返回的设备信息后,根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,并将所述组成的设备匹配字符串发送给所述即插即用管理器,从而使操作系统可以根据所述设备驱动匹配字符串中的厂商标识、设备子类型以及设备协议类型信息实现设备驱动程序的匹配;与现有技术中相比,本发明技术方案中,针对一个设备厂商,仅需要根据设备子类型和设备协议类型编写设备驱动程序的匹配字符串,便可以实现同类设备的驱动程的匹配,后续无论同类设备的设备标识或者端口编号如何改变,都不用重新编写相应设备的驱动匹配字符串,做到同类产品同类端口的设备的驱动匹配字符串一次开发,重复使用,在大规模生产时可以极大的节约驱动维护和认证成本。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1修改USB设备驱动匹配信息的方法流程图;
图2为本发明实施例2修改USB设备驱动匹配信息的方法流程图;
图3为本发明实施例3修改USB设备驱动匹配信息的装置组成框图;
图4为本发明实施例4修改USB设备驱动匹配信息的装置组成框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本发明实施例提供一种修改USB设备驱动匹配信息的方法,如图1所示,该方法包括:
101、当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求,并将截获的所述查询设备信息请求发送给枚举驱动;所述过滤驱动为在所述枚举驱动上新增加的一层驱动程序。
其中,将截获的所述查询设备信息请求发送给枚举驱动,以便所述枚举驱动根据所述查询请求将所述设备信息返回,所述枚举驱动返回的设备信息为字符串格式,设备厂商标识、产品标识和产品端口编号,所述设备信息的标识形式如vid_xxxx&pid_yyyy&mi_zz。
102、所述过滤驱动接收所述枚举驱动根据所述查询设备信息请求返回的设备信息,并根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,该字符串可表示为:vid_xxxx&subclass_yy&prot_zz。
其中,所述设备的兼容信息为字符串的形式包括设备类型、设备子类型以及设备协议类型,其表示形式如class_xx&subclass_yy&prot_zz,需要在所述过滤驱动根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串之前,通过所述过滤驱动向所述物理设备对象发送查询设备兼容信息请求,获取所述设备的兼容信息。
103、将所述组成的设备驱动匹配字符串发送给所述即插即用管理器,以便所述即插即用管理器根据所述组成的设备驱动匹配字符串,查找到与所述设备匹配的驱动程序。
本发明实施例中,在枚举驱动上增加一层过滤驱动,当即插即用管理器向物理设备对象发送查询设备信息请求,通过过滤驱动截获所述查询设备信息请求,并且在所述枚举驱动根据所述查询设备信息请求返回的设备信息后,根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,并将所述组成的设备匹配字符串发送给所述即插即用管理器,从而使操作系统可以根据所述设备驱动匹配字符串中的厂商标识、设备子类型以及设备协议类型信息实现设备驱动程序的匹配;与现有技术中相比,本发明技术方案中,针对一个设备厂商,仅需要根据设备子类型和设备协议类型编写设备驱动程序的匹配字符串,便可以实现同类设备的驱动程的匹配,后续无论同类设备的设备标识或者端口编号如何改变,都不用重新编写相应设备的驱动匹配字符串,做到同类产品同类端口的设备的驱动匹配字符串一次开发,重复使用,在大规模生产时可以极大的节约驱动维护和认证成本。
实施例2
本发明实施例提供一种修改USB设备驱动匹配信息的方法,如图2所示,该方法包括:
201、当即插即用管理器下发的查询设备列表请求时,过滤驱动截获所述查询设备列表请求,并将截获的所述查询设备列表请求发送给枚举驱动;所述过滤驱动为在枚举驱动上新增加的一层驱动程序。
其中,所述将所述查询设备列表请求发送给枚举驱动,以便所述枚举驱动根据所述查询设备列表请求枚举所有的设备,并将所述枚举的所有设备的列表返回给即插即用管理器。进一步,为了使系统得知枚举驱动根据所述查询设备列表请求枚举所有的设备完成的操作,一般在截获所述查询设备列表请求后,为该请求注册一个完成回调函数。
202、当所述枚举驱动根据所述查询设备列表请求返回设备列表时,所述过滤驱动接收所述枚举驱动根据所述查询设备列表请求返回的设备列表,根据所述设备列表为所述设备列表中的每一个设备创建一个过滤设备对象,并将创建的所述过滤设备对象添加到对应的子设备栈中。
进一步,当所述枚举驱动根据所述查询设备列表请求返回设备列表时,由系统自动调用所述为查询设备列表请求注册的完成回调函数,执行所述根据枚举驱动返回的所述设备列表,为所述设备列表中的每一个设备创建一个过滤设备对象,并将创建的所述过滤设备对象添加到对应的子设备栈中。
其中,所述过滤驱动根据枚举驱动返回的设备列表,为所述设备列表中的每一个设备创建一个过滤设备对象,并将创建的所述过滤设备对象添加到对应的子设备栈中,目的是为了保证所述新添加的过滤驱动程序能够根据子设备栈中的过滤设备对象列表截获所述即插即用管理器下发的查询设备信息请求,并可以对所述枚举驱动返回的设备信息进行修改。
203、将所述枚举驱动返回的所述设备列表发送给所述即插即用管理器,以便所述即插即用管理器根据所述设备列表,向所述列表中的设备发送查询设备信息请求。
204、当即插即用管理器向物理设备对象发送查询设备信息请求时,所述过滤驱动截获所述查询设备信息请求,并将截获的所述查询设备信息请求发送给所述枚举驱动。
其中,将截获的所述查询设备信息请求发送给所述枚举驱动,以便所述枚举驱动根据所述查询请求将所述设备信息返回,所述枚举驱动返回的设备信息为字符串格式,设备厂商标识、产品标识和产品端口编号,所述设备信息的标识形式如vid_xxxx&pid_yyyy&mi_zz。进一步,为了使系统得知枚举驱动根据所述查询设备信息请求枚举所述设备信息完成的操作,一般在截获所述查询设备信息请求后,为该请求注册一个完成回调函数。
205、当所述枚举驱动根据所述查询设备信息请求返回的设备信息时,所述过滤驱动接收所述枚举驱动返回的所述设备信息,并根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,该字符串可表示为:vid_xxxx&subclass_yy&prot_zz。
进一步,当所述枚举驱动根据所述查询设备信息请求返回设备信息时,由系统自动调用所述为查询设备信息请求注册的完成回调函数,执行所述根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串。
其中,所述设备的兼容信息为字符串的形式包括设备类型、设备子类型以及设备协议类型,其表示形式如class_xx&subclass_yy&prot_zz,需要在所述过滤驱动根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串之前,所述过滤驱动向所述物理设备对象发送查询设备兼容信息请求,获取所述设备的兼容信息。
206、将所述组成的设备驱动匹配字符串发送给所述即插即用管理器,以便所述即插即用管理器根据所述组成的设备驱动匹配字符串,查找到与所述设备匹配的驱动程序。
本发明实施例中,在枚举驱动上增加一层过滤驱动,通过增加的过滤驱动截获即插即用管理器向物理设备对象发送查询设备信息请求,并且在所述枚举驱动根据所述查询设备信息请求返回的设备信息后,根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,并将所述组成的设备匹配字符串发送给所述即插即用管理器,从而使操作系统可以根据所述设备驱动匹配字符串中的厂商标识、设备子类型以及设备协议类型信息实现设备驱动程序的匹配;与现有技术中相比,本发明实施例中,针对一个设备厂商,仅需要根据设备子类型和设备协议类型编写设备驱动程序的匹配字符串,便可以实现同类设备的驱动程的匹配,后续无论同类设备的设备标识或者端口编号如何改变,都不用重新编写相应设备的驱动匹配字符串,做到同类产品同类端口的设备的驱动匹配字符串一次开发,重复使用,在大规模生产时可以极大的节约驱动维护和认证成本。
实施例3
本发明实施例提供一种修改USB设备驱动匹配信息的装置,如图3所示,该装置包括:信息请求获取模块31、信息请求发送模块32、信息接收模块33、组成模块34和字符串发送模块35。
信息请求获取模块31,用于当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求,所述过滤驱动为在枚举驱动上新增加的一层驱动程序;在截获所述查询设备信息请求后,信息请求发送模块32用于将所述信息请求获取模块31截获的所述查询设备信息请求发送给所述枚举驱动,以便所述枚举驱动根据所述查询请求将所述设备信息返回,所述枚举驱动返回的设备信息为字符串格式,设备厂商标识、产品标识和产品端口编号,所述设备信息的标识形式如vid_xxxx&pid_yyyy&mi_zz。
当枚举驱动接收到所述查询设备信息请求后,将所述设备信息返回时,信息接收模块33用于所述过滤驱动接收所述枚举驱动返回的所述设备信息;组成模块34用于根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,该字符串可表示为:vid_xxxx&subclass_yy&prot_zz;字符串发送模块35用于将所述组成模块34组成的设备驱动匹配字符串发送给所述即插即用管理器,以便所述即插即用管理器根据所述组成的设备驱动匹配字符串,查找到与所述设备匹配的驱动程序。
其中,所述设备的兼容信息为字符串的形式包括设备类型、设备子类型以及设备协议类型,其表示形式如class_xx&subclass_yy&prot_zz,需要在所述过滤驱动根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串之前,通过所述过滤驱动向所述物理设备对象发送查询设备兼容信息请求,获取所述设备的兼容信息。
本发明实施例中,在枚举驱动上增加一层过滤驱动,当即插即用管理器向物理设备对象发送查询设备信息请求,通过所述过滤驱动截获所述查询设备信息请求,并且在所述枚举驱动根据所述查询设备信息请求返回的设备信息后,根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,并将所述组成的设备匹配字符串发送给所述即插即用管理器,从而使操作系统可以根据所述设备驱动匹配字符串中的厂商标识、设备子类型以及设备协议类型信息实现设备驱动程序的匹配;与现有技术中相比,本发明实施例中,针对一个设备厂商,仅需要根据设备子类型和设备协议类型编写设备驱动程序的匹配字符串,便可以实现同类设备的驱动程的匹配,后续无论同类设备的设备标识或者端口编号如何改变,都不用重新编写相应设备的驱动匹配字符串,做到同类产品同类端口的设备的驱动匹配字符串一次开发,重复使用,在大规模生产时可以极大的节约驱动维护和认证成本。
实施例4
本发明实施例提供一种修改USB设备驱动匹配信息的装置,如图4所示,该装置包括:列表请求获取模块41、列表请求发送模块42、列表接收模块43、创建模块44、添加模块45、信息请求获取模块46、信息请求发送模块47、信息接收模块48、组成模块49、字符串发送模块410。
列表请求获取模块41用于当即插即用管理器下发的查询设备列表请求时,过滤驱动截获所述查询设备列表请求,所述过滤驱动为在枚举驱动上新增加的一层驱动程序;列表请求发送模块42用于将所述列表请求获取模块41截获的所述查询设备列表请求发送给枚举驱动,以便所述枚举驱动根据所述查询设备列表请求枚举所有的设备,并将所述枚举的所有设备的列表返回给即插即用管理器。为了使系统得知枚举驱动根据所述查询设备列表请求枚举所有的设备完成的操作,一般在截获所述查询设备列表请求后,为该请求注册一个完成回调函数。
当所述枚举驱动根据所述查询设备列表请求返回设备列表时,列表接收模块43用于所述过滤驱动接收所述枚举驱动根据所述查询设备列表请求返回的设备列表;创建模块44用于所述过滤驱动根据所述列表接收模块43接收到的设备列表,为所述设备列表中的每一个设备创建一个过滤设备对象;添加模块45将所述创建模块44创建的所述过滤设备对象添加到对应的子设备栈中;在将过滤设备对象添加到对应的子设备栈后,将所述枚举驱动返回的所述设备列表发送给所述即插即用管理器,以便所述即插即用管理器根据所述设备列表,向所述列表中的设备发送查询设备信息请求。当所述枚举驱动根据所述查询设备列表请求返回设备列表时,系统自动调用所述为查询设备列表请求注册的完成回调函数,执行所述根据所述返回的设备列表为所述设备列表中的每一个设备创建一个过滤设备对象,并将所述创建的所述过滤设备对象添加到对应的子设备栈中。
其中,所述过滤驱动根据所述枚举驱动返回的设备列表,为所述设备列表中的每一个设备创建一个过滤设备对象,并将创建好的过滤设备对象添加到对应的子设备栈中,目的是为了保证所述新添加的过滤驱动程序能够据子设备栈中的过滤设备对象列表截获所述即插即用管理器下发的查询设备信息请求,并可以对所述枚举驱动返回的设备信息进行修改。
信息请求获取模块46用于当即插即用管理器向物理设备对象发送查询设备信息请求时,过滤驱动截获所述查询设备信息请求;在截获所述信息请求后,信息请求发送模块47将所述信息请求获取模块46截获的所述查询设备信息请求发送给所述枚举驱动,以便所述枚举驱动根据所述查询请求将所述设备信息返回,所述枚举驱动返回的设备信息为字符串格式,设备厂商标识、产品标识和产品端口编号,所述设备信息的表示形式如vid_xxxx&pid_yyyy&mi_zz。
当所述枚举驱动根据所述查询设备信息请求返回时,信息接收模块48用于所述过滤驱动接收所述枚举驱动返回的所述设备信息;在接收到所述设备信息后,组成模块49用于根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,该字符串可表示为:vid_xxxx&subclass_yy&prot_zz。字符串发送模块410用于将所述组成模块49组成的设备驱动匹配字符串发送给所述即插即用管理器,以便所述即插即用管理器根据所述组成的设备驱动匹配字符串,查找到与所述设备匹配的驱动程序。
其中,所述设备的兼容信息为字符串的形式包括设备类型、设备子类型以及设备协议类型,其表示形式如class_xx&subclass_yy&prot_zz;在将接收到的枚举驱动返回的设备信息和所述设备的兼容信息组成新的设备驱动匹配字符串之前,该装置还进一步包括兼容信息获取模块411。所述兼容信息获取模块411用于所述过滤驱动向所述物理设备对象发送查询设备兼容信息请求,获取所述设备的兼容信息。
进一步,为了使系统得知枚举驱动根据所述查询设备信息请求枚举所述设备信息完成的操作,该装置还包括:注册模块412。注册模块412用于在所述信息请求获取模块46将截获的所述查询设备信息请求发送给枚举驱动之前,为所述查询设备信息请求注册一个完成回调函数,以便在所述枚举驱动根据所述查询设备信息请求返回设备信息时,系统自动调用所述注册的完成回调函,执行所述根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串。
本发明实施例中,在枚举驱动上增加一层过滤驱动,由所述增加的过滤驱动为枚举驱动枚举的每一个设备创建对应的过滤设备对象,并将所述创建的设备对象添加到对应的子设备栈中,从而使所述过滤驱动与设备对象之间建立联系;当即插即用管理器向物理设备对象发送查询设备信息请求,通过所述过滤驱动截获所述查询设备信息请求,并且在所述枚举驱动根据所述查询设备信息请求返回的设备信息后,根据所述返回的设备信息和所述设备的兼容信息,组成包含设备厂商标识、设备子类型以及设备协议类型的设备驱动匹配字符串,并将所述组成的设备匹配字符串发送给所述即插即用管理器,从而使操作系统可以根据所述设备驱动匹配字符串中的厂商标识、设备子类型以及设备协议类型信息实现设备驱动程序的匹配;与现有技术中相比,本发明实施例中,针对一个设备厂商,仅需要根据设备子类型和设备协议类型编写设备驱动程序的匹配字符串,便可以实现同类设备的驱动程的匹配,后续无论同类设备的设备标识或者端口编号如何改变,都不用重新编写相应设备的驱动匹配字符串,做到同类产品同类端口的设备的驱动匹配字符串一次开发,重复使用,在大规模生产时可以极大的节约驱动维护和认证成本。
本发明实施例仅描述使用过滤驱动来修改设备驱动匹配字符串的这个特例,但是通过这个方案可以修改所有在设备枚举驱动期间返回给即插即用管理器的信息,都属于本发明保护的范围。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。