Windows平台上自动弹出指定光驱设备的方法

文档序号:6581200阅读:249来源:国知局
专利名称:Windows平台上自动弹出指定光驱设备的方法
技术领域
本发明涉及一种在Windows操作系统的平台上实现自动弹出指定光驱设备的方法。
背景技术
目前TD-SCDMA数据卡在和计算机的USB 口第一次连通后,数据卡在计算机上首先
会枚举成光驱设备,光驱中存储了的数据卡的安装执行程序和自运行程序,若计算机允许
自动运行,自动运行程序会直接运行,判断是否安装过驱动,若没有,则调用光盘中的安装
执行程序。安装执行程序实际上是个打包安装程序,当被执行时,首先解包把一些源文件拷
贝到系统中指定的目录下,然后进行驱动程序的安装,接着调用拷贝到本地的执行程序进
行弹出控制,实现数据卡从光驱设备到数据卡设备的切换,并进行客户端的安装和启动。当
数据卡第二次和计算机联通时,此时已经安装好了所有需要安装的程序和客户端软件,因
此自动运行程序会直接调用此前安装到本地的执行程序去弹出光驱设备并启动客户端。光
驱设备被弹出后,数据卡会切换到数据卡设备,通过客户端实现上网等功能。 中国移动集团公司对入库的TD-SCDMA数据卡产品具有一定的要求,不仅要能自
动安装驱动程序和客户端软件,还要能自动弹出光驱设备,切换到数据卡设备。 但是,如果客户的电脑禁止自动运行程序的执行,那么数据卡第一次和计算机联
通时,需要客户手动运行光驱中的自运行程序,进行数据卡驱动和客户端软件的安装,并在
安装后弹出光驱,切换到数据卡状态。以后每次数据卡插入电脑后,除非客户手动执行光盘
里的自运行程序,否则数据卡就会一直停留在光驱状态,无法切换到正常的数据卡设备。这
就需要使用一种技术手段在系统禁止自动运行时去弹出光驱,由于中国移动集团在规范中
禁止使用守护进程这种技术方法,所以本发明考虑采用光驱类过滤驱动的技术方案。

发明内容
本发明要解决的技术问题是提供一种Windows平台上自动弹出指定光驱设备的方法,无论客户的电脑是否开启了程序自动运行的功能,在首次使用数据卡并且安装好程序之后再次使用数据卡时,都能把数据卡设备从光驱设备状态切换到数据卡设备状态,让客户的操作更人性化、简洁化。 本发明的技术方案是一种Windows平台上自动弹出指定光驱设备的方法,包括如下步骤 步骤SI :在第一次使用数据卡时,由计算机自动运行或人工手动运行光驱设备中的自动运行程序,安装数据卡驱动程序、光驱类设备过滤驱动程序和客户端软件,并主动弹出光驱设备;安装完成后,光驱类过滤驱动的信息会保存在计算机的注册表中,所述光驱类过滤驱动的信息包含了支持自动弹出功能的光驱设备ID名称的列表和默认的光驱弹出时间;若非第一次使用数据卡,则直接执行步骤S2 ; 步骤S2 :再次使用数据卡时,Windows系统加载所有与光驱设备相关的驱动程序,包括光驱类设备过滤驱动程序;在过滤驱动被加载到内存并执行该驱动后,首先从注册表中读取过滤驱动支持自动弹出功能的光驱设备ID名称列表和默认光驱弹出时间的信息;
步骤S3 :光驱类过滤驱动在创建设备对象前,向Windows系统自带的光驱设备的功能驱动程序请求获取当前光驱设备ID名称,并和支持自动弹出功能的光驱设备ID名称进行比较,若符合,则为该光驱设备创建过滤驱动设备对象,将该过滤驱动对象添加到光驱的设备堆栈中,并返回成功信息给PNP管理器,执行步骤S4 ;若不符合,则返回失败的信息给PNP管理器,告知系统程序加载驱动不成功,系统把过滤驱动卸载,从内存中删除;
步骤S4 :PNP管理器收到加载成功的信息,会启动当前光驱设备,在启动设备的过程中开启弹出定时器,若到达注册表中的默认弹出时间时,该光驱设备还存在,且在此定时
时间内自动运行程序没有运行,那么过滤驱动向其下层的光驱设备的功能驱动程序发送弹出请求,实现光驱设备的弹出。 进一步的,在步骤S4中,若在默认的自动弹出时间内,系统自动运行或人工手动运行光驱设备中的自动运行程序,则自动运行程序会发送控制指令给过滤驱动程序,过滤驱动程序便终止定时器的计时,过滤驱动不会再主动的发送弹出请求包给下层的光驱设备功能驱动程序实现光驱设备的弹出,该光驱设备的弹出由光驱中的自动运行程序控制实现。 进一步的,所述过滤驱动的下层光驱设备功能驱动程序为Windows系统自带的光驱设备的功能驱动程序。 进一步的,对于插入多个数据卡的情况,在第一个光驱设备插入后,系统加载驱动
文件到内存中,在系统没有把过滤驱动卸载并从内存中删除之前,若又有光驱设备插入,则重复执行步骤S3的操作,若该光驱设备为支持自动弹出的设备,继续执行步骤S4,若为不支持自动弹出的设备,返回错误信息给PNP管理器;当没有任何光驱设备在使用过滤驱动时,系统把过滤驱动卸载并从内存中删除;当还有光驱设备在使用过滤驱动时,则等到所有支持自动弹出的光驱设备被弹出后,系统才卸载光驱过滤驱动并从内存中删除。
本发明的优点是使用本方法后,无论客户的电脑是否开启了程序自动运行的功能,在首次使用数据卡并且安装好程序之后再次使用数据卡时,都能从光驱设备切换到数据卡设备,不会出现数据卡停留在光驱设备阶段的情况,让客户的操作更人性化、简洁化,且完全符合中国移动集团公司对数据卡产品的要求。 本发明由于使用了 Windows过滤驱动的技术,在目前的大多Windows平台上使用需要经过专业的测试并且获得微软的安全认证证书,增强客户的安全性,并且只对指定的光驱设备进行加载,避免了对其它光驱设备使用造成影响,并且与光驱设备的自运行程序之间有信息交互避免了彼此间对弹出功能的冲突。 本发明在Windows XP 32位系统、Windows7的32位和64位系统,以及Vista的32位和64位系统上都已成功实现,并正常运行,达到了预期的效果。


下面结合附图及实施例对本发明作进一步描述
图1为本发明的工作流程图; 图2为本发明的类过滤驱动在设备管理器中的示意图。
具体实施例方式
实施例本发明采用光驱类过滤驱动来实现Windows平台上自动弹出指定光驱设备的功能。过滤驱动分为高层过滤驱动和底层过滤驱动,对同一类别驱动程序加载的过滤驱动就是类过滤驱动。本发明就是面向所有光驱的光驱类高层过滤驱动,能被所有的光驱加载,加载在Windows系统自带的原有光驱类驱动之上,对发往光驱的输入输出请求包(IRP, I/O RequestPackage)进行拦截、过滤或者增加,可以对设备进行功能扩展,或数据加密等。本发明就是对光驱设备进行了功能上的扩展,不必修改Windows系统自带的光驱驱动程序,实现指定光驱的自动弹出功能。 TD-SCMDA数据卡所显示的虚拟光驱设备中包含自动运行执行文件autorun. exe和TD数据卡安装包执行文件tdriver. exe。 autorun. exe是Windows操作系统自动运行执行的程序,在这个程序中会判断是否安装了 TD数据卡驱动,若发现没有安装,则调用tdriver. exe进行安装。tdriver. exe是一个安装包执行文件,包含了所有需要安装的源文件和执行程序。在tdriver. exe的执行过程中,首先进行解包,把源文件拷贝到本地的C盘上,然后安装TD数据卡的驱动程序和光驱过滤驱动,然后异步调用此前拷贝到本地的执行程序CheckbExInstall. exe后退出tdriver. exe。 CheckbExInstall. exe判断客户端软件是否已经安装、是否是最新版本,是否需要重新安装等,并且负责把TD数据卡的光驱设备弹出,切换到数据卡设备,然后运行客户端软件后结束。若数据卡的驱动程序已经安装,那么autorun. exe直接调用本地的CheckbExInstall. exe把TD数据卡的光驱设备弹出,切换到数据卡设备,只是在Windows系统禁止自动运行时,autorun. exe无法被执行,所以不管有没有安装过驱动程序,都不会执行本地的CheckbExInstall. exe实现光驱设备到数据卡设备的切换。 本发明的工作流程图如图1所示。在第一次使用数据卡时,由计算机自动运行或人工手动运行光驱设备中的自动运行程序,安装数据卡驱动程序、光驱类设备过滤驱动程序和客户端软件,自运行程序autorun. exe能通过调用CheckbExInstall. exe实现光驱设备到数据卡设备的切换。安装完成后光驱类过滤驱动的信息被写入计算机的注册表中,所述光驱类过滤驱动的信息包含了支持光驱自动弹出功能的设备ID名称列表和默认的光驱弹出时间。 再次使用数据卡时,Windows系统会按照工作方式,加载所有与光驱设备相关的驱动程序,包括光驱类设备过滤驱动程序。在过滤驱动被加载到内存并执行该驱动后,首先从注册表中读取过滤驱动支持的设备ID列表和默认弹出时间的信息。 PNP管理器是Windows自带的一项技术,系统会自动侦测计算机周边设备和板卡并自动安装设备驱动程序,做到插上就能用,无须人工干预。PNP管理器负责所有的总线驱动程序的加载。总线驱动程序则负责遍历所有位于总线上的设备,并且为每个设备创建相应的设备对象。当PNP管理器发现一个设备对象,就查找该对象对应的驱动程序,并调用该驱动程序的AddDevice例程。如果驱动程序不在内存中,就先加载到内存中,然后调用AddDevice例程。IRP是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时,应用程序会发出1/0请求,操作系统将相应的1/0请求转换成相应的IRP,不同的IRP会根据类型被分派到不同的派遣例程中进行处理。
PNP(Plug and Play,即插即用)管理器调用AddDevice例程,首先向Windows自带的光驱设备的功能驱动程序cdrom. sys发送IRP(I/0 RequestPackage,输入输入请求包)请求获取当前光驱设备的ID名称,并和读取的支持自动弹出功能的光驱设备的ID名称进行比较,若符合,则为该光驱设备创建过滤驱动的设备对象,将该光驱设备的过滤驱动的设备对象添加到光驱设备的设备堆栈中,并返回成功信息给PNP管理器,那么,过滤驱动就和光驱设备建立起了联系,以后对于该光驱设备,系统对光驱设备发送的请求都会经过过滤驱动AutoEjectCD. sys后才会发送到下层的光驱设备的功能驱动cdrom. sys,过滤驱动AutoEjectCD. sys作为功能驱动cdrom. sys的上层驱动程序,所以可以在过滤驱动AutoEjectCD. sys内构造一个弹出光驱的IRP发送到功能驱动cdrom. sys实现光驱设备的弹出;若不符合,则返回失败的信息给计算机系统的PNP管理器,告诉系统程序加载过滤驱动不成功,系统把过滤驱动AutoEjectCD. sys卸载,从内存中删除,释放内存空间。对于支持自动弹出功能的光驱设备,在光驱类过滤驱动加载完成后,当在Windows系统的设备管理器中查看该光驱设备时,可以看到类过滤驱动和该设备的关联关系,如图2所示。
PNP管理器收到加载成功的信息,会启动这个光驱设备,在启动设备的过程中开启弹出定时器。若达到注册表中的默认自动弹出时间时,该光驱设备还存在,而且在这段定时时间内无自动运行程序运行,就在此光驱类过滤驱动中构造一个弹出光驱的IRP请求,发向其下层的光驱设备的功能驱动程序实现光驱设备的弹出。 若在默认的自动弹出时间内,系统自动运行或人工手动运行自动运行程序autor皿.exe,则自动运行程序会发送相关的控制指令给本光驱类过滤程序,终止定时器的计时,过滤驱动不会再主动的发送弹出请求包给下层光驱设备的功能驱动程序实现光驱设备的弹出,该光驱设备的弹出将由自动运行程序调用安装驱动程序时保存在本地的执行程序CheckbExInstall. exe来实现,从而避免了自动运行在执行的过程中,过滤驱动执行了弹出指令造成自动运行程序执行的异常终止。 本光驱在设计的时候充分考虑到多个支持的光驱设备同时插入的情况,在控制上能完全独立对10个光驱设备实现这个弹出的功能。 对于插入多个数据卡的情况,在第一个光驱设备插入后,系统加载驱动文件到内存中,在系统没有把过滤驱动AutoEjectCD. sys卸载并从内存中删除之前,若又有其他光驱设备插入,则重复对每一个插入的光驱设备进行是否支持自动弹出的判断,向下层光驱设备的功能驱动程序cdrom. sys请求获取光驱设备ID名称,并和支持自动弹出功能的光驱设备的ID名称进行比较,若为支持自动弹出的设备,则为该光驱设备创建过滤驱动设备对象,并将该光驱设备的过滤驱动设备对象添加到光驱的设备堆栈中,返回成功信息给PNP管理器,并启动这个光驱设备,在启动设备的过程中开启弹出定时器,若到达注册表中的默认弹出时间时,该光驱设备还存在,且在此定时时间内自动运行程序没有运行,那么过滤驱动发送弹出的请求包,实现光驱设备的弹出。若为不支持自动弹出的设备,返回错误信息给PNP管理器,告知系统程序加载过滤驱动不成功,系统把过滤驱动AutoEjectCD. sys卸载,从内存中删除。 当没有任何光驱设备在使用过滤驱动时,系统把过滤驱动卸载并从内存中删除;当还有光驱设备在使用过滤驱动时,则等到所有支持自动弹出的光驱设备被弹出后,系统才卸载光驱过滤驱动AutoEjectCD. sys并从内存中删除。
以上所述,仅为本发明的优选实施例,并不能以此限定本发明实施的范围,凡依本发明权利要求及说明书内容所作的简单的变换,皆应仍属于本发明覆盖的保护范围。
权利要求
一种Windows平台上自动弹出指定光驱设备的方法,其特征在于包括如下步骤步骤S1若为第一次使用数据卡,由计算机自动运行或人工手动运行光驱设备中的自动运行程序,安装数据卡驱动程序、光驱类设备过滤驱动程序和客户端软件,并主动弹出光驱设备;安装完成后,光驱类过滤驱动的信息会保存在计算机的注册表中,所述光驱类过滤驱动的信息包含了支持自动弹出功能的光驱设备ID名称的列表和默认的光驱弹出时间;若非第一次使用数据卡,则直接执行步骤S2;步骤S2再次使用数据卡时,Windows系统加载所有与光驱设备相关的驱动程序,包括光驱类设备过滤驱动程序;在过滤驱动被加载到内存并执行该驱动后,首先从注册表中读取过滤驱动支持自动弹出功能的光驱设备ID名称列表和默认光驱弹出时间的信息;步骤S3光驱类过滤驱动在创建设备对象前,向Windows系统自带的光驱设备的功能驱动程序请求获取当前光驱设备ID名称,并和支持自动弹出功能的光驱设备ID名称进行比较,若符合,则为该光驱设备创建过滤驱动设备对象,将该过滤驱动对象添加到光驱的设备堆栈中,并返回成功信息给PNP管理器,执行步骤S4;若不符合,则返回失败的信息给PNP管理器,告知系统程序加载驱动不成功,系统把过滤驱动卸载,从内存中删除;步骤S4PNP管理器收到加载成功的信息,会启动当前光驱设备,在启动设备的过程中开启弹出定时器,若到达注册表中的默认弹出时间时,该光驱设备还存在,且在此定时时间内自动运行程序没有运行,那么过滤驱动向其下层的光驱设备功能驱动程序发送弹出请求,实现光驱设备的弹出。
2. 根据权利要求1中所述的Windows平台上自动弹出指定光驱设备的方法,其特征在 于在步骤S4中,若在默认的自动弹出时间内,系统自动运行或人工手动运行光驱设备中 的自动运行程序,则自动运行程序会发送控制指令给过滤驱动程序,过滤驱动程序便终止 定时器的计时,过滤驱动不会再主动的发送弹出请求给下层的光驱设备功能驱动程序实现 光驱设备的弹出,该光驱设备的弹出由光驱中的自动运行程序控制实现。
3. 根据权利要求1或2中所述的Windows平台上自动弹出指定光驱设备的方法,其特 征在于所述过滤驱动下层的光驱设备功能驱动程序为Windows系统自带的光驱设备的功 能驱动程序。
4. 根据权利要求1或2中所述的Windows平台上自动弹出指定光驱设备的方法,其特 征在于对于插入多个数据卡的情况,在第一个光驱设备插入后,系统加载光驱驱动文件到 内存中,在系统没有把过滤驱动卸载并从内存中删除之前,若又有光驱设备插入,则重复执 行步骤S3的操作,若该光驱设备为支持自动弹出的设备,继续执行步骤S4,若为不支持自 动弹出的设备,返回错误信息给PNP管理器;当没有任何光驱设备在使用过滤驱动时,系统 把过滤驱动卸载并从内存中删除;当还有光驱设备在使用过滤驱动时,则等到所有支持自 动弹出的光驱设备被弹出后,系统才卸载光驱过滤驱动并从内存中删除。
全文摘要
本发明公开了一种Windows平台上自动弹出指定光驱设备的方法,采用光驱类过滤驱动,只对指定的光驱设备进行加载,避免了对其它光驱设备的使用造成影响,并且与光驱设备的自运行程序之间有信息交互,避免了彼此间对弹出功能的冲突。使用本发明后,无论客户的电脑是否开启了光盘自动运行的功能,在首次使用数据卡并且安装好程序之后再次使用数据卡时,都能从光驱设备切换到数据卡设备,不会出现数据卡停留在光驱设备阶段的情况,让客户的操作更人性化、简洁化,且完全符合中国移动集团公司对数据卡产品的要求。
文档编号G06F13/10GK101763322SQ200910186878
公开日2010年6月30日 申请日期2009年12月28日 优先权日2009年12月28日
发明者刘可靖, 张崇勇, 朱守寺, 李先锐, 邢大静 申请人:太仓市同维电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1