确定移动设备连接状态的方法及装置与流程

文档序号:12462884阅读:393来源:国知局
确定移动设备连接状态的方法及装置与流程

本发明涉及计算机优化技术领域,尤其涉及一种确定移动设备连接状态的方法及装置。



背景技术:

Windows操作系统是一个基于消息机制的系统,消息可以由系统或者应用程序产生。系统在发生输入事件时产生消息。比如,当用户敲键,移动鼠标或者单击控件。系统也产生消息以响应由应用程序带来的变化,比如应用程序改变系统字体改变窗体大小。应用程序可以产生消息使窗体执行任务,或者与其他应用程序中的窗口通讯。

在Windows系统内核中所有的消息处理都是通过消息中转函数来中转。现有的应用程序通常是在中转函数对所述消息进行中转后才能获得所述消息,这样所述应用程序在获取所述消息时,在时间上有延迟,影响了所述应用程序对所述移动设备的处理。



技术实现要素:

有鉴于此,本发明实施例提供一种确定移动设备连接状态的方法及装置,能够快速准确地获取移动设备的连接状态。

第一方面,本发明实施例提供一种确定移动设备连接状态的方法,包括:

对Windows操作系统中的消息中转函数的调用进行监视;

判断当前要中转的消息是否是设备连接变更通知消息;

若当前要中转的消息是设备连接变更通知消息,则根据设备连接变更通知消息确定移动设备的连接状态。

结合第一方面,在第一方面的第一种可实施方式中,所述对Windows操作 系统中的消息中转函数的调用进行监视,包括:通过钩子函数对所述消息中转函数的调用进行监视;其中,所述钩子函数包含在应用程序的驱动中。

结合第一方面的第一种可实施方式中,在第一方面的第二种可实施方式中,所述判断当前要中转的消息是否是设备连接变更通知消息,包括:通过所述钩子函数判断当前要中转的消息的类型参数是否是预定的参数值,若是,则确定当前要中转的消息是设备连接变更通知消息,否则,则确定当前要中转的消息不是设备连接变更通知消息。

结合第一方面的第二种可实施方式中,在第一方面的第三种可实施方式中,所述若当前要中转的消息是设备连接变更通知消息,则根据设备连接变更通知消息确定移动设备的连接状态,包括:若当前要中转的消息是设备连接变更通知消息,所述钩子函数则获取与所述设备连接变更通知消息相关的信息,并根据所述信息确定移动设备的连接状态。

结合第一方面、以及第一方面的第一种至第三种可实施方式中的任一种可可实施方式,在第一方面的第四种可实施方式中,所述移动设备的连接状态包括:插入设备、拔出设备、设备已经插入和/或设备已经拔出。

结合第一方面的第四种可实施方式中,在第一方面的第五种可实施方式中,在确定所述移动设备的连接状态之后,所述方法还包括:

对所述移动设备进行相关处理;

在对所述移动设备进行相关处理之后,所述钩子函数调用所述消息中转函数对所述消息进行中转。

结合第一方面的第五种可实施方式中,在第一方面的第六种可实施方式中,若确定所述移动设备的连接状态为插入设备,则对所述移动设备进行相关处理,包括:在所述移动设备打开之前,对所述移动设备中的文件进行病毒扫描处理。

第二方面,本发明实施例提供一种确定移动设备连接状态的装置,包括:监视模块,用于对Windows操作系统中的消息中转函数的调用进行监视;第一 判断模块,用于判断当前要中转的消息是否是设备连接变更通知消息;第二判断模块,用于若当前要中转的消息是设备连接变更通知消息,则根据设备连接变更通知消息确定移动设备的连接状态。

结合第二方面,在第二方面的第一种可实施方式中,所述监视模块设于应用程序的驱动模块中。

结合第二方面的第一种可实施方式,在第二方面的第二种可实施方式中,所述第一判断模块,包括:第一获取子模块,用于获取当前要中转的消息的类型参数;第一判断子模块,用于判断所述类型参数是否是预定的参数值,若是,则确定当前要中转的消息是设备连接变更通知消息,否则,则确定当前要中转的消息不是设备连接变更通知消息;第一通知子模块,用于若当前要中转的消息是设备连接变更通知消息,则通知所述第二判断模块。

结合第二方面的第二种可实施方式,在第二方面的第三种可实施方式中,所述第二判断模块,包括:第二获取子模块,用于若当前要中转的消息是设备连接变更通知消息,则获取与所述设备连接变更通知消息相关的信息;第二判断子模块,用于根据所述与设备连接变更通知消息相关的信息,确定移动设备的连接状态。

结合第二方面、以及第二方面的第一种至第三种可实施方式中的任一种可可实施方式,在第二方面的第四种可实施方式中,所述移动设备的连接状态包括:插入设备、拔出设备、设备已经插入和/或设备已经拔出。

结合第二方面的第四种可实施方式,在第二方面的第五种可实施方式中,所述的确定移动设备连接状态的装置,还包括:处理模块,用于在确定所述移动设备的连接状态之后,对所述移动设备进行相关处理;调用模块,用于在对所述移动设备进行相关处理之后,调用所述消息中转函数对所述消息进行中转。

结合第二方面的第五种可实施方式,在第二方面的第六种可实施方式中,所述处理模块,包括:扫描子模块,用于若确定所述移动设备的连接状态为插入设备,则在所述移动设备打开之前,对所述移动设备中的文件进行病毒扫描 处理;提醒子模块,用于在确定所述移动设备中存在病毒或恶意软件时,对用户进行提醒。

本发明实施例提供的确定移动设备连接状态的方法及装置,通过对Windows操作系统中的消息中转函数的调用进行监视,当有消息需要中转时,判断当前要中转的消息是否是设备连接变更通知消息,若是,则可根据设备连接变更通知消息确定移动设备的连接状态,这样能够在消息中转函数对设备连接变更通知消息进行中转处理前,即可捕获到设备连接变更通知消息,从容能够快速准确地获得移动设备的连接状态。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

图1为本发明确定移动设备连接状态的方法实施例一的流程示意图;

图2为本发明确定移动设备连接状态的方法实施例二的流程示意图;

图3为本发明确定移动设备连接状态的装置实施例一的结构示意图;

图4为本发明确定移动设备连接状态的装置实施例二的结构示意图。

具体实施方式

下面结合附图对本发明实施例一种确定移动设备连接状态的方法及装置进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明防护的范围。

图1为本发明确定移动设备连接状态的方法实施例一的流程示意图。参看 图1,本发明确定移动设备连接状态的方法实施例,包括如下步骤:

S101、对Windows操作系统中的消息中转函数的调用进行监视。

本实施例中,所述移动设备,也被称为行动装置(Mobile device)、流动装置、手持装置(handheld device)等,是一种口袋大小的计算设备,通常有一个小的显示萤幕,触控输入,或是小型的键盘。

移动设备的类型有很多,比如手机,U盘等。对于安装有Windows操作系统的计算机设备,当有移动设备插入和拔出时,Windows操作系统都会产生消息,这个消息定义为WM_DEVICECHANGE,值为0x0219。

在Windows操作系统内核中,所有的消息处理都是通过消息中转函数,即NtUserMessageCall函数来中转的。本实施例中,通过对NtUserMessageCall函数的调用进行监视,能够及时捕获设备连接变更通知消息。

S102、判断当前要中转的消息是否是设备连接变更通知消息。

本实施例中,可通过获取当前要中转的消息的类型参数,根据该类型参数判断当前要中转的消息是否是设备连接变更通知消息。

S103、若当前要中转的消息是设备连接变更通知消息,则根据设备连接变更通知消息确定移动设备的连接状态。

本实施例中,若当前要中转的消息是设备连接变更通知消息,则可根据与设备连接变更通知消息相关的信息确定移动设备的连接状态。

本发明实施例提供的确定移动设备连接状态的方法,通过对Windows操作系统中的消息中转函数的调用进行监视,当有消息需要中转时,判断当前要中转的消息是否是设备连接变更通知消息,若是,则可根据设备连接变更通知消息确定移动设备的连接状态,这样能够在消息中转函数对设备连接变更通知消息进行中转处理前,即可捕获到设备连接变更通知消息,从容能够快速准确地获得移动设备的连接状态。

图2为本发明确定移动设备连接状态的方法实施例二的流程示意图。参看 图2,本发明确定移动设备连接状态的方法实施例,包括如下步骤:

S201、通过钩子函数对所述消息中转函数的调用进行监视;其中,所述钩子函数包含在应用程序的驱动中。

本实施例中,所述移动设备,也被称为行动装置(Mobile device)、流动装置、手持装置(handheld device)等,是一种口袋大小的计算设备,通常有一个小的显示萤幕,触控输入,或是小型的键盘。

移动设备的类型有很多,比如手机,U盘等。对于安装有Windows操作系统的计算机设备,当有移动设备插入和拔出时,Windows操作系统都会产生消息,这个消息定义为WM_DEVICECHANGE,值为0x0219。

在Windows操作系统内核中,所有的消息处理都是通过消息中转函数,即NtUserMessageCall函数来中转的。本实施例中,通过对NtUserMessageCall函数的调用进行监视,能够及时捕获设备连接变更通知消息。

在本步骤之前,可由编程人员在应用程序的驱动中,比如在金山毒霸的防御驱动中,建立钩子(HOOK)函数。

钩子函数实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子函数就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。

本实施例中,将NtUserMessageCall函数的原始入口地址修改为本实施例中的钩子函数的入口地址。Windows操作系统在调用NtUserMessageCall函数时,由于NtUserMessageCall函数的原始入口地址已被修改为本实施例的钩子函数的入口地址,通过对NtUserMessageCall函数的调用,即可跳至本实施例的钩子函数的执行,由此实现对NtUserMessageCall函数的监视。

为了实现对NtUserMessageCall函数的回调,在将NtUserMessageCall函 数的原始入口地址修改为本实施例中的钩子函数的入口地址之前,需要对NtUserMessageCall函数的原始入口地址进行保存。

S202、判断当前要中转的消息的类型参数是否是预定的参数值。

本实施例中,通过所述钩子函数判断当前要中转的消息的类型参数是否是预定的参数值,即判断当前要中转的消息的类型参数是否是0x0219,若是,则执行步骤S203,否则,执行步骤S205。

S203、获取与所述设备连接变更通知消息相关的信息,并根据所述信息确定移动设备的连接状态。

通过所述钩子函数获取与所述设备连接变更通知消息相关的信息,并根据所述信息确定移动设备的连接状态。

本实施例中,与设备连接变更通知消息相关的信息有很多,优选地,本实施例只关心如下三种信息:

(1)、DBT_DEVICEARRIVAL,值为0x8000,表示设备到达信息,即插入设备;

(2)、DBT_DEVICEREMOVECOMPLETE,值为0x8004,表示设备删除信息,即拨出设备;

(3)、DBT_DEVNODES_CHANGED,值为0x0007,表示设备信息发生变化,即设备已经插入或者已经拨出。

本实施例中,可根据与设备连接变更通知消息相关的信息参数值,确定移动设备的连接状态。

本实施例中,通过判断与设备连接变更通知消息相关的信息,如果是前面三种中的一种,则执行步骤S204,如果不是前面三种中的一种,则执行步骤S205。

S204、对所述移动设备进行相关处理。

本实施例中,在确定所述移动设备的连接状态之后,可对所述移动设备进行相关处理。

比如,若确定所述移动设备的连接状态为插入设备,则在所述移动设备打开之前,对所述移动设备中的文件进行病毒扫描处理。如果有发现病毒等恶意软件,则可提醒用户进行查杀。

若确定所述移动设备的连接状态为拔出设备,当存在所述移动设备中的文件处于打开状态时,可提醒用户先关闭打开的所述文件,然后再拔出移动设备。

若确定所述移动设备的连接状态为已经插入设备,则可自动将所述移动设备打开。

若确定所述移动设备的连接状态为已经拔出设备,则可取消对所述移动设备的盘符的显示。

以上,仅是对所述移动设备进行相关处理的举例性说明,本发明不限于此,也可以采用其它处理方式对所述移动设备进行处理。

S205、调用所述消息中转函数对所述消息进行中转。

本实施例中,在对所述移动设备进行相关处理之后,所述钩子函数调用所述消息中转函数对所述消息进行中转。

本实施例中,所述钩子函数根据预先保存的NtUserMessageCall函数的原始入口地址,调用NtUserMessageCall函数,通过NtUserMessageCall函数完成对所述消息的中转。

本发明实施例提供的确定移动设备连接状态的方法,通过建立在应用程序的驱动中的钩子函数,对NtUserMessageCall函数的调用进行监视,能够在windows操作系统的内核层对NtUserMessageCall函数的调用进行监视,快速准确地捕获到移动设备的连接状态,并可在移动设备插入后尚未打开之前,对移动设备中的文件进行预先扫描处理,如果有发现病毒等恶意软件,则可提醒用户进行查杀。

图3为本发明确定移动设备连接状态的装置实施例一的结构示意图。参看图3,本发明确定移动设备连接状态的装置实施例,包括:监视模块31、第一 判断模块32和第二判断模块33;其中,

监视模块31,用于对Windows操作系统中的消息中转函数的调用进行监视。

本实施例中,所述移动设备,也被称为行动装置(Mobile device)、流动装置、手持装置(handheld device)等,是一种口袋大小的计算设备,通常有一个小的显示萤幕,触控输入,或是小型的键盘。

移动设备的类型有很多,比如手机,U盘等。对于安装有Windows操作系统的计算机设备,当有移动设备插入和拔出时,Windows操作系统都会产生消息,这个消息定义为WM_DEVICECHANGE,值为0x0219。

在Windows操作系统内核中,所有的消息处理都是通过消息中转函数,即NtUserMessageCall函数来中转的。本实施例中,通过对NtUserMessageCall函数的调用进行监视,能够及时捕获设备连接变更通知消息。

第一判断模块32,用于判断当前要中转的消息是否是设备连接变更通知消息。本实施例中,可通过获取当前要中转的消息的类型参数,根据该类型参数判断当前要中转的消息是否是设备连接变更通知消息。

第二判断模块33,用于若当前要中转的消息是设备连接变更通知消息,则根据设备连接变更通知消息确定移动设备的连接状态。本实施例中,若当前要中转的消息是设备连接变更通知消息,则可根据与设备连接变更通知消息相关的信息确定移动设备的连接状态。

本发明实施例提供的确定移动设备连接状态的装置,通过对Windows操作系统中的消息中转函数的调用进行监视,当有消息需要中转时,判断当前要中转的消息是否是设备连接变更通知消息,若是,则可根据设备连接变更通知消息确定移动设备的连接状态,这样能够在消息中转函数对设备连接变更通知消息进行中转处理前,即可捕获到设备连接变更通知消息,从容能够快速准确地获得移动设备的连接状态。

本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原 理和技术效果类似,此处不再赘述。

图4为本发明确定移动设备连接状态的装置实施例二的结构示意图。本实施例中,所述监视模块设于应用程序的驱动模块中。参看图4,本实施例的装置在图3所示装置结构的基础上,进一步地,所述第一判断模块32,可以包括:第一获取子模块321、第一判断子模块322以及第一通知子模块323;其中,

第一获取子模块321,用于获取当前要中转的消息的类型参数。

第一判断子模块322,用于判断所述类型参数是否是预定的参数值,若是,则确定当前要中转的消息是设备连接变更通知消息,否则,则确定当前要中转的消息不是设备连接变更通知消息。

本实施例中,通过判断当前要中转的消息的类型参数是否是预定的参数值,即判断当前要中转的消息的类型参数是否是0x0219,若是,则确定当前要中转的消息是设备连接变更通知消息,否则,则确定当前要中转的消息不是设备连接变更通知消息。

第一通知子模块323,用于若当前要中转的消息是设备连接变更通知消息,则通知所述第二判断模块,若当前要中转的消息不是设备连接变更通知消息,则通知所述调用模块35。

本实施例中,进一步地,所述第二判断模块33,可以包括:第二获取子模块331和第二判断子模块332;其中,

第二获取子模块331,用于若当前要中转的消息是设备连接变更通知消息,则获取与所述设备连接变更通知消息相关的信息。

实施例中,与设备连接变更通知消息相关的信息有很多,优选地,本实施例只关心如下三种信息:

(1)、DBT_DEVICEARRIVAL,值为0x8000,表示设备到达信息,即插入设备;

(2)、DBT_DEVICEREMOVECOMPLETE,值为0x8004,表示设备删除信息,即拨出设备;

(3)、DBT_DEVNODES_CHANGED,值为0x0007,表示设备信息发生变化,即设备已经插入或者已经拨出。

第二判断子模块332,用于根据所述与设备连接变更通知消息相关的信息,确定移动设备的连接状态。

本实施例中,可根据与设备连接变更通知消息相关的信息参数值,确定移动设备的连接状态。

本实施例中,进一步地,所述的确定移动设备连接状态的装置,还包括:处理模块34和调用模块35;其中,

处理模块34,用于在确定所述移动设备的连接状态之后,对所述移动设备进行相关处理。本实施例中,在确定所述移动设备的连接状态之后,可对所述移动设备进行相关处理。

比如,若确定所述移动设备的连接状态为插入设备,则在所述移动设备打开之前,对所述移动设备中的文件进行病毒扫描处理。如果有发现病毒等恶意软件,则可提醒用户进行查杀。

若确定所述移动设备的连接状态为拔出设备,当存在所述移动设备中的文件处于打开状态时,可提醒用户先关闭打开的所述文件,然后再拔出移动设备。

若确定所述移动设备的连接状态为已经插入设备,则可自动将所述移动设备打开。

若确定所述移动设备的连接状态为已经拔出设备,则可取消对所述移动设备的盘符的显示。

以上,仅是对所述移动设备进行相关处理的举例性说明,本发明不限于此, 也可以采用其它处理方式对所述移动设备进行处理。

调用模块35,用于在对所述移动设备进行相关处理之后,调用所述消息中转函数对所述消息进行中转。

本实施例中,根据预先保存的NtUserMessageCall函数的原始入口地址,调用NtUserMessageCall函数,通过NtUserMessageCall函数完成对所述消息的中转。

本实施例中,进一步地,所述处理模块34,包括:扫描子模块341和提醒子模块342;其中,扫描子模块341,用于若确定所述移动设备的连接状态为插入设备,则在所述移动设备打开之前,对所述移动设备中的文件进行病毒扫描处理.提醒子模块342,用于在确定所述移动设备中存在病毒或恶意软件时,对用户进行提醒。

本发明实施例提供的确定移动设备连接状态的装置,通过对NtUserMessageCall函数的调用进行监视,能够在windows操作系统的内核层对NtUserMessageCall函数的调用进行监视,快速准确地捕获到移动设备的连接状态,并可在移动设备插入后尚未打开之前,对移动设备中的文件进行预先扫描处理,如果有发现病毒等恶意软件,则可提醒用户进行查杀。

本实施例的装置,可以用于执行图2所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。

以上所述,仅为本发明的具体实施方式,但本发明的防护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到 的变化或替换,都应涵盖在本发明的防护范围之内。因此,本发明的防护范围应以权利要求的防护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1