一种添加格式列表的方法及usb设备的制作方法

文档序号:6471300阅读:145来源:国知局
专利名称:一种添加格式列表的方法及usb设备的制作方法
技术领域
本发明涉及一种添加格式列表的方法及USB设备,尤其涉及一种动态的 添加格式列表的方法及USB设备。
背景技术
微软在其DDK ( Device Drivers Kit,设备驱动程序开发包)中,提供了新 一代视频捕获设备的驱动架构AV Stream ( Audio and Video Stream,视频和音 频流)的解决方案。在解决方案中,AV Stream架构的驱动是通过创建过滤器 实现的,而过滤器的创建是在设备初始化时完成的。由于初始化时设备还没有 完成加载,因此,必须提供驱动支持的数据格式列表。驱动所支持的格式列表 (包括图像格式、尺寸、帧率等),是在驱动程序中静态添加的,是硬编码在 代码中声明的。因此,每次要改变接入系统的USB设备所支持的格式列表时, 都需要重新开发代码,这给驱动程序的开发增加了很多工作量。

发明内容
本发明的目的是提供一种添加格式列表的方法及USB设备,以解决每次 改变接入系统的USB设备所支持的格式列表时,都需要重新开发驱动程序代 码的问题。本发明的添加格式列表的方法包括以下步骤
设备初始化时,将设备描述符中的过滤器描述符设置为空;
设备初始化完成,并接入系统后,读取预先存储的设备所支持的格式信息;
根据读取的所述格式信息构造过滤器描述符;
根据所述过滤器描述符创建过滤器。
所述设备的驱动架构为微软的视频和音频流驱动架构。
所述格式信息为树型结构。
所述格式信息存储在注册表或二进制文件中。本发明还提供了一种USB设备,包括
过滤器描述符设置模块,用于在设备初始化时,将设^^描述符中的过滤器 描述符设为空;
读取模块,用于在设备初始化完成,并接入系统后,读取预先存储的设备 所支持的格式信息;
过滤器描述符构造模块,用于根据读取的所述格式信息构造过滤器描述
付;
过滤器创建^f莫块,用于根据构造的所述过滤器描述符创建过滤器。
所述格式信息为树型结构。
所述格式信息存储在注册表或二进制文件中。
所述USB设备的驱动架构为微软的视频和音频流驱动架构。 与现有技术相比,本发明具有以下有益效果
利用本发明的动态加载格式列表的方法,在设备初始化时将过滤器描述符 设置为空,在设备加载完成后,用户可以通过用户模式(UserMode)层的软件 随时修改系统注册表或修改二进制文件中的格式信息,从而使驱动可以动态的 提供不同格式的数据流,而不需要重新开发编译代码,减少了开发驱动程序的 工作量,并加快了开发进度。而且,由于始终只有一份驱动程序文件,因此, 可以大幅减少驱动申净艮MicrosoftDTM (驱动程序测试管理器,Driver Test Manager)进行Windows操作系统硬件品质实验室(WHQL, Windows Hardware Quality Labs)测试的次H从而节省开支。


图1为本发明的添加格式列表的方法流程图2为本发明的过滤器描述符的数据格式的结构示意图3为本发明的USB设备的结构框图4为本发明的实施例的动态的添加或删除过滤器描述符的示意图。
具体实施例方式
本发明提供了一种方法,可以动态的解决设备的格式列表的声明问题。本发明的方法将格式列表从驱动代码中抽取出来,使其独立于驱动程序,只需要 编辑外部文件或注册表即可修改格式列表,从而,当需要改变格式列表的信息 时,不需要重新编写驱动程序代码。
下面结合附图对本发明的具体实施方式
作进一步详细说明。
参考图1,图1为本发明的添加格式列表的方法流程图。图1中包括步骤 设备初始化时,将设备描述符中的过滤器描述符设置为空;
设备初始化完成,并接入系统后,读取预先存储的格式信息; 根据读取的所述格式信息构造过滤器描述符;
根据所述过滤器描述符创建过滤器。
下面以一个实施例来具体描述动态的添加或删除过滤器描述符的过程。本 实施例以微软提供的驱动程序开发的工具DDK为例,具体说明在AV Stream 驱动架构下,如何动态修改(Universal Serial Bus,通用串行总线)USB设备 的格式列表的问题。
微软现有的AV Stream架构的驱动程序开发中,过滤器是在设备初始化 时,由KsInitializeDriver创建的。这样必须在设备初始化时提供该驱动支持的 数据格式列表,但是,由于此时USB设备还没有完成加载,所以格式列表必 须在代码中声明。本发明避免了在USB设备初始化时即创建过滤器,而是在 设备初始化时,将设备描述符中的过滤器描述符设置为空。
当USB设备通过USB接口收到系统的AVStreamPNPStart消息后,表明 USB设备已经通过USB接口接入系统,USB设备加栽完成。驱动程序在被安 装后,系统会在注册表中提供一个固定的地址供驱动存储数据。在安装或者配 置过程中,用户可以在键值(上述固定地址的值)下写入格式信息。当驱动程 序加载后,在相应的键值下读取预先定义的设备所支持的格式信息即可。
然后,可以根据读取的注册表中的格式信息构造过滤器描述符(Filter descriptor),过滤器信息是通过过滤器描述符来表述的。
构造过滤器描述符的过程分配一块相应的内存区域,根据系统针对描述 符结构的定义,初始化相关的数据,其中某些项是代码中写入的固定值,某些 项是从注册表中读入的数据,另外一些是驱动中提供的一些函数的指针。初始 化完毕后将这块内存区域的地址传给系统,即构造完成过滤器描述符。构造完过滤器描述符之后,就可以根据过滤器描述符创建过滤器。
创建好过滤器之后,USB i殳备就可以通过现有的响应方法来响应用户查 询格式。
用户要更改接入系统的USB设备的格式列表中的参数值时,只要利用用 户模式下的格式修改软件,修改注册表中该参数对应的键值即可。这样,运行 在内核模式下的驱动程序提供给上层的数据格式就可以根据注册表中的键值 随时变化。用户只要修改注册表的键值,USB设备的驱动加载后就能够向系 统提供新格式的数据,而不需要重新开发驱动程序。
由于微软提供的数据格式一般为树型结构,因此本发明的过滤器描述符的 数据格式也设计为树型结构,参考图2所示,图2为本发明的过滤器描述符的 数据格式的结构示意图。图2中举了一些例子来说明描述符中各属性包括的内 容,当然也包括其他的内容。
USB设备所支持的格式列表中的数据既可以为视频数据也可以为音频数 据。当为视频数据时,存储在注册表中的信息包括图像格式、尺寸、帧率等。
当为音频数据时,存储在注册表中的信息包括音频格式、频率、幅度、 相位等。
参考图3和图4,分别为本发明的USB设备的结构框图和本发明的实施 例的动态的添加或删除过滤器描述符的示意图。图3中包括过滤器描述符设 置模块,读取模块,过滤器描述符构造模块和过滤器创建模块。设备初始化时, 过滤器描述符设置模块将设备描述符中的过滤器描述符设为空。设备初始化完 成,并接入系统后,由读取模块读取预先存储在注册表中的设备所支持的格式 信息。然后,过滤器描述符构造模块根据读取的格式信息构造过滤器描述符。 最后,由过滤器创建模块根据构造的所述过滤器描述符创建过滤器。
创建好过滤器之后,USB设备就可以通过一个接口模块(参考图4)来响 应运行在用户i^莫式下的应用程序。
利用用户模式下的格式修改软件,用户可以修改保存在注册表中的格式列 表的属性值,这样,读取模块从注册表中读取到修改后的格式列表的数据,然 后过滤器描述符构造模块根据修改后的格式列表来重新构造过滤器描述符,过 滤器创建模块根据重新构造的过滤器描述符来重新创建过滤器,重新创建的过滤器是不同于格式列表的属性值修改之前的过滤器。
从而,运行在内核模式下的USB设备的驱动程序提供给上层的数据格式 就可以根据注册表中的格式列表的属性值的变化而变化。用户只要修改注册表 中保存的格式列表的属性值,驱动加载后就能够向系统提供新格式的数据,而 不需要重新开发驱动程序。
上述实施例是以Windows的驱动程序开发工具DDK为例进4亍的说明,对 于其他驱动程序开发工具,例如Windriver等,在涉及到创建过滤器时,也可 以应用本 义明的方法来实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通 技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰, 这些改进和润饰也应^见为本发明的保护范围。
权利要求
1. 一种添加格式列表的方法,其特征在于,包括以下步骤设备初始化时,将设备描述符中的过滤器描述符设置为空;设备初始化完成,并接入系统后,读取预先存储的设备所支持的格式信息;根据读取的所述格式信息构造过滤器描述符;根据所述过滤器描述符创建过滤器。
2. 如权利要求1所述的添加格式列表的方法,所述设备的驱动架构为微 软的纟见频和音频流驱动架构。
3. 如权利要求1所述的添加格式列表的方法,其特征在于,所述格式信 息为树型结构。
4. 如权利要求1所述的添加格式列表的方法,其特征在于,所述格式信 息存储在注册表或二进制文件中。
5. —种USB设备,其特征在于,包括过滤器描述符设置模块,用于在设备初始化时,将设备描述符中的过滤器 描述符设为空;读取模块,用于在设备初始化完成,并接入系统后,读取预先存储的设备 所支持的格式信息;过滤器描述符构造模块,用于根据读取的所述格式信息构造过滤器描述符;过滤器创建模块,用于根据构造的所述过滤器描述符创建过滤器。
6. 如权利要求5所述的USB设备,其特征在于,所述格式信息为树型结构。
7. 如权利要求5所述的USB设备,其特征在于,所述格式信息存储在注 册表或二进制文件中。
8. 如权利要求5所迷的USB设备,其特征在于,所述USB设备的驱动 架构为樣Mt的^L频和音频流驱动架构。
全文摘要
本发明提供了一种添加格式列表的方法及USB设备,其中,添加格式列表的方法包括步骤设备初始化时,将设备描述符中的过滤器描述符设置为空;设备初始化完成,并接入系统后,读取预先存储的设备所支持的格式信息;根据读取的格式信息构造过滤器描述符;根据过滤器描述符创建过滤器。利用本发明的动态加载格式列表的方法,驱动可以动态的提供不同格式的数据流,而不需要重新开发编译代码,减少了开发驱动程序的工作量,并加快了开发进度。而且,由于始终只有一份驱动程序文件,因此,可以大幅减少驱动申报MicrosoftDTM进行WHQL测试的次数,从而节省开支。
文档编号G06F9/44GK101414285SQ200810227938
公开日2009年4月22日 申请日期2008年12月2日 优先权日2008年12月2日
发明者巍 唐 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1