CN102096622A - 基于事件驱动实时获取系统中进程信息的方法及系统 - Google Patents
基于事件驱动实时获取系统中进程信息的方法及系统 Download PDFInfo
- Publication number
- CN102096622A CN102096622A CN2010106005335A CN201010600533A CN102096622A CN 102096622 A CN102096622 A CN 102096622A CN 2010106005335 A CN2010106005335 A CN 2010106005335A CN 201010600533 A CN201010600533 A CN 201010600533A CN 102096622 A CN102096622 A CN 102096622A
- Authority
- CN
- China
- Prior art keywords
- event
- tabulation
- initial processes
- progress information
- buffer memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明揭示了一种基于事件驱动实时获取系统中进程信息的方法及系统,所述方法包括:获取初始进程列表及进程相关信息,设置状态信息,生成初始进程列表缓存;当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置状态信息,更新初始进程列表缓存;输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。本发明提出的基于事件驱动实时获取系统中进程信息的方法及系统,基于事件驱动的进程快照方法只在特定事件发生时进行处理,可以大大减小CPU占有率。同时,本发明可以很好的解决受第三方软件保护的进程在事件发生瞬间不能获得其信息的问题。
Description
技术领域
本发明属于计算机技术领域,涉及一种进程信息获取,尤其涉及一种基于事件驱动实时获取系统中进程信息的方法;同时,本发明还涉及一种基于事件驱动实时获取系统中进程信息的系统。
背景技术
基于Windows系统平台编写系统级别程序时,经常要实现“实时监测系统中进程信息”此类功能。
Windows任务管理器就是实现了此功能的一个Windows系统自带的应用程序。Windows任务管理器能够列出系统中运行的所有进程,通过它也可以查看到目前刚打开或关闭的进程。
目前,有多种方法可以实现此功能;如:
方法1、调用进程状态API(Process Status API,PSAPI)创建进程快照的接口,获得进程信息;
方法2、调用PSAPI枚举进程的接口,获取进程列表;
方法3、调用Windows终端服务API(Windows Terminal Services API,WTSAPI)枚举进程接口,获取进程列表;
方法4、调用ntdll.dll中的ZwQuerySystemInformation函数来枚举系统进程,获取进程列表;
方法5、使用Windows管理规范(Windows Management Instrumentat ion,WMI)获取进程列表。
欲实时获得新打开或关闭的进程信息,目前都是通过定时轮询的方式获得新打开或关闭的进程信息。定时轮询模式虽然实现方式简单,但是存在以下问题,在某些场景下,甚至会严重影响用户体验。
(1)轮询时间很难兼顾各种配置的用户终端。在一些低配机器上,会出现CPU占有率高的情况,从而影响用户体验
(2)定时轮询会丢失或延迟获得新打开或关闭的进程信息。
(3)定时轮训效率比较低下。
此外,通过WMI标准异步事件方法可以接近实时地获取进程信息。但是,当一些受第三方软件保护(如在用户中广泛使用的360保险箱等)的进程发生打开或关闭事件时,通过WMI标准异步事件将不能获得进程信息。
发明内容
本发明所要解决的技术问题是:提供一种基于事件驱动实时获取系统中进程信息的方法,可以大大减小CPU占有率。。
此外,本发明进一步提供一种基于事件驱动实时获取系统中进程信息的系统,可以大大减小CPU占有率。
为解决上述技术问题,本发明采用如下技术方案:
一种基于事件驱动实时获取系统中进程信息的方法,所述方法包括如下步骤:
步骤S1、调用CoInitializeEx初始化COM库;
步骤S2、调用CoInitializeSecurity初始化COM进程安全属性;
步骤S3、调用CoCreateInstance创建WMI实例;
步骤S4、调用ConnectServer连接到本地命名空间;
步骤S5、调用CoSetProxyBlanket设置代理安全级别;
步骤S6、执行异步查询并接收事件通知;
步骤S7、通过WMI技术获取初始进程列表及进程相关信息,设置状态信息,状态信息包括打开状态、存在状态、关闭状态;生成初始进程列表缓存;
步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表;与初始进程列表缓存进行比较,设置状态信息,状态信息包括打开状态、存在状态、关闭状态;更新初始进程列表缓存;
步骤S9、输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
一种基于事件驱动实时获取系统中进程信息的方法,所述方法包括如下步骤:
步骤S7、获取初始进程列表及进程相关信息,设置状态信息,生成初始进程列表缓存;
步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置状态信息,更新初始进程列表缓存;
步骤S9、输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。
作为本发明的一种优选方案,所述方法在步骤S7之前还包括:
步骤S1、初始化组件对象模型库;
步骤S2、初始化组件对象模型进程安全属性;
步骤S3、创建WMI实例;
步骤S4、连接到本地;
步骤S5、设置代理安全级别;
步骤S6、执行异步查询并接收事件通知。
作为本发明的一种优选方案,步骤S7中、通过WMI技术获取初始进程列表及进程相关信息,设置状态信息,生成初始进程列表缓存。
作为本发明的一种优选方案,步骤S8中、当打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表。
一种基于事件驱动实时获取系统中进程信息的系统,所述系统包括:
初始进程列表生成模块,用以获取初始进程列表及进程相关信息,设置状态信息,生成初始进程列表并缓存;
初始进程列表更新模块,用以在打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表并缓存;
进程信息输出模块,用以输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
作为本发明的一种优选方案,所述初始进程列表生成模块通过WMI技术获取进程信息,生成初始进程列表并缓存。
作为本发明的一种优选方案,所述初始进程列表更新模块在打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表。
作为本发明的一种优选方案,所述进一步系统包括:
组件对象模型库初始化模块,用以初始化组件对象模型库;
进程安全属性初始化模块,用以初始化组件对象模型进程安全属性;
实例创建模块,用以创建WMI实例;
连接模块,用以连接到本地;
代理安全级别设置模块,用以设置代理安全级别;
异步查询模块,用以执行异步查询并接收事件通知。
本发明的有益效果在于:本发明提出的基于事件驱动实时获取系统中进程信息的方法及系统,基于事件驱动的进程快照方法只在特定事件发生时进行处理,可以大大减小CPU占有率。同时,本发明可以很好的解决受第三方软件保护的进程在事件发生瞬间不能获得其信息的问题。
附图说明
图1为本发明进程信息获取方法的流程图。
具体实施方式
下面结合附图详细说明本发明的优选实施例。
实施例一
本发明揭示了一种基于事件驱动的进程快照,实时获取系统中正在打开或关闭的进程信息的方法。
请参阅图1,本发明基于事件驱动实时获取系统中进程信息的方法包括如下步骤:
步骤S1、调用CoInitializeEx初始化COM库;
步骤S2、调用CoInitializeSecurity初始化COM进程安全属性;
步骤S3、调用CoCreateInstance创建WMI实例;
步骤S4、调用ConnectServer连接到本地root\cimv2名字空间(本地命名空间);
步骤S5、调用CoSetProxyBlanket设置代理安全级别;
步骤S6、执行异步查询并接收事件通知;
步骤S7、通过WMI技术获取初始进程列表及进程相关信息,设置进程状态信息,状态信息包括打开状态、存在状态、关闭状态;生成初始进程列表缓存;
步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表;与初始进程列表缓存进行比较,设置状态信息,状态信息包括打开状态、存在状态、关闭状态;更新初始进程列表缓存;
步骤S9、输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
实施例二
本实施例中,本发明基于事件驱动实时获取系统中进程信息的方法包括如下步骤:
步骤S7、获取进程信息,生成初始进程列表并缓存。本实施例中,可通过WMI技术获取进程信息,生成初始进程列表并缓存。
步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表并缓存。其中,获取进程列表的方法可以通过WMI技术获取。
步骤S9、输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。
优选地,所述方法在步骤S7之前还包括:
步骤S1、初始化组件对象模型库(COM库);
步骤S2、初始化组件对象模型COM进程安全属性;
步骤S3、创建WMI实例;
步骤S4、连接到本地;
步骤S5、设置代理安全级别;
步骤S6、执行异步查询并接收事件通知。
以上介绍了本发明基于事件驱动实时获取系统中进程信息的方法,本发明在揭示上述方法的同时,还揭示一种基于事件驱动实时获取系统中进程信息的系统,所述系统包括:初始进程列表生成模块、初始进程列表更新模块、进程信息输出模块。
初始进程列表生成模块用以获取进程信息,生成初始进程列表并缓存。
初始进程列表更新模块用以在打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表并缓存。
进程信息输出模块用以输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
优选地,所述进一步系统包括:组件对象模型库初始化模块、进程安全属性初始化模块、实例创建模块、连接模块、代理安全级别设置模块、异步查询模块。
所述组件对象模型库初始化模块用以初始化组件对象模型库。在Windows系统中,可通过调用CoInitializeEx初始化COM库。
所述进程安全属性初始化模块用以初始化组件对象模型进程安全属性。在Windows系统中,可通过调用CoInitializeSecurity初始化COM进程安全属性。
所述实例创建模块用以创建WMI实例。在Windows系统中,可通过调用CoCreateInstance创建WMI实例。
所述连接模块用以连接到本地。在Windows系统中,可通过调用ConnectServer连接到本地root\cimv2名字空间。
所述代理安全级别设置模块用以设置代理安全级别。在Windows系统中,可通过调用CoSetProxyBlanket设置代理安全级别。
所述异步查询模块用以执行异步查询并接收事件通知。
综上所述,本发明提出的基于事件驱动实时获取系统中进程信息的方法及系统,基于事件驱动的进程快照方法只在特定事件发生时进行处理,可以大大减小CPU占有率。同时,本发明可以很好的解决受第三方软件保护的进程在事件发生瞬间不能获得其信息的问题。
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
Claims (9)
1.一种基于事件驱动实时获取系统中进程信息的方法,其特征在于,所述方法包括如下步骤:
步骤S1、调用CoInitializeEx初始化COM库;
步骤S2、调用CoInitializeSecurity初始化COM进程安全属性;
步骤S3、调用CoCreateInstance创建WMI实例;
步骤S4、调用ConnectServer连接到本地命名空间;
步骤S5、调用CoSetProxyBlanket设置代理安全级别;
步骤S6、执行异步查询并接收事件通知;
步骤S7、通过WMI技术获取初始进程列表及进程相关信息,设置状态信息,状态信息包括打开状态、存在状态、关闭状态;生成初始进程列表缓存;
步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表;与初始进程列表缓存进行比较,设置状态信息,状态信息包括打开状态、存在状态、关闭状态;更新初始进程列表缓存;
步骤S9、输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
2.一种基于事件驱动实时获取系统中进程信息的方法,其特征在于,所述方法包括如下步骤:
步骤S7、设置事件通知的方式获取进程信息,生成初始进程列表并缓存;
步骤S8、当打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置进程状态信息,更新初始进程列表缓存;
步骤S9、输出初始进程列表缓存中,状态信息标志为打开或关闭的进程信息。
3.根据权利要求2所述的基于事件驱动实时获取系统中进程信息的方法,其特征在于:
所述方法在步骤S7之前还包括:
步骤S1、初始化组件对象模型库;
步骤S2、初始化组件对象模型进程安全属性;
步骤S3、创建WMI实例;
步骤S4、连接到本地;
步骤S5、设置代理安全级别;
步骤S6、执行异步查询并接收事件通知。
4.根据权利要求2所述的基于事件驱动实时获取系统中进程信息的方法,其特征在于:
步骤S7中、通过WMI技术获取进程信息,生成初始进程列表并缓存。
5.根据权利要求2所述的基于事件驱动实时获取系统中进程信息的方法,其特征在于:
步骤S8中、当打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表。
6.一种基于事件驱动实时获取系统中进程信息的系统,其特征在于,所述系统包括:
初始进程列表生成模块,用以获取进程信息,生成初始进程列表并缓存;
初始进程列表更新模块,用以在打开或关闭进程事件发生时,响应打开和关闭事件并获取进程列表;与初始进程列表缓存进行比较,设置状态信息,更新初始进程列表并缓存;
进程信息输出模块,用以输出初始进程列表缓存中状态信息标志为打开或关闭的进程信息。
7.根据权利要求6所述的基于事件驱动实时获取系统中进程信息的系统,其特征在于:
所述初始进程列表生成模块通过WMI技术获取进程信息,生成初始进程列表并缓存。
8.根据权利要求6所述的基于事件驱动实时获取系统中进程信息的系统,其特征在于:
所述初始进程列表更新模块在打开或关闭进程事件发生时,响应打开和关闭事件并通过WMI技术获取进程列表。
9.根据权利要求6所述的基于事件驱动实时获取系统中进程信息的系统,其特征在于:
所述进一步系统包括:
组件对象模型库初始化模块,用以初始化组件对象模型库;
进程安全属性初始化模块,用以初始化组件对象模型进程安全属性;
实例创建模块,用以创建WMI实例;
连接模块,用以连接到本地;
代理安全级别设置模块,用以设置代理安全级别;
异步查询模块,用以执行异步查询并接收事件通知。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010600533.5A CN102096622B (zh) | 2010-12-21 | 2010-12-21 | 基于事件驱动实时获取系统中进程信息的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010600533.5A CN102096622B (zh) | 2010-12-21 | 2010-12-21 | 基于事件驱动实时获取系统中进程信息的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102096622A true CN102096622A (zh) | 2011-06-15 |
CN102096622B CN102096622B (zh) | 2016-08-03 |
Family
ID=44129726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010600533.5A Expired - Fee Related CN102096622B (zh) | 2010-12-21 | 2010-12-21 | 基于事件驱动实时获取系统中进程信息的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102096622B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819478A (zh) * | 2012-07-20 | 2012-12-12 | 中国科学院西安光学精密机械研究所 | 一种无代理的数据处理系统监控与管理方法 |
CN103902428A (zh) * | 2014-03-24 | 2014-07-02 | 可牛网络技术(北京)有限公司 | 一种应用管理方法、装置及移动设备 |
CN106250766A (zh) * | 2016-07-27 | 2016-12-21 | 北京金山安全软件有限公司 | 信息安全处理方法、装置及终端 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007148688A1 (ja) * | 2006-06-19 | 2007-12-27 | Visionarts, Inc. | 別ドメインの情報を取得する方法並びにこの方法に用いるサーバシステム及びサーバ用プログラム |
CN101246536A (zh) * | 2008-03-06 | 2008-08-20 | 北京鼎信高科信息技术有限公司 | 基于进程监控对计算机文件进行加解密的方法 |
-
2010
- 2010-12-21 CN CN201010600533.5A patent/CN102096622B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007148688A1 (ja) * | 2006-06-19 | 2007-12-27 | Visionarts, Inc. | 別ドメインの情報を取得する方法並びにこの方法に用いるサーバシステム及びサーバ用プログラム |
CN101246536A (zh) * | 2008-03-06 | 2008-08-20 | 北京鼎信高科信息技术有限公司 | 基于进程监控对计算机文件进行加解密的方法 |
Non-Patent Citations (3)
Title |
---|
MILLER, N. 等: "Collecting network status information for network-aware applications", 《INFOCOM 2000. NINETEENTH ANNUAL JOINT CONFERENCE OF THE IEEE COMPUTER AND COMMUNICATIONS SOCIETIES. PROCEEDINGS. IEEE》 * |
刘燕生 等: "监控系统中获取进程信息的算法实现", 《四川大学学报》 * |
雷涛 等: "基于WMI的计算机监控系统的设计与实现", 《计算机技术与发展》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819478A (zh) * | 2012-07-20 | 2012-12-12 | 中国科学院西安光学精密机械研究所 | 一种无代理的数据处理系统监控与管理方法 |
CN102819478B (zh) * | 2012-07-20 | 2015-09-02 | 中国科学院西安光学精密机械研究所 | 一种无代理的数据处理系统监控与管理方法 |
CN103902428A (zh) * | 2014-03-24 | 2014-07-02 | 可牛网络技术(北京)有限公司 | 一种应用管理方法、装置及移动设备 |
CN106250766A (zh) * | 2016-07-27 | 2016-12-21 | 北京金山安全软件有限公司 | 信息安全处理方法、装置及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN102096622B (zh) | 2016-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103176789A (zh) | 一种实现开放平台功能扩展的方法及系统 | |
CN105975277A (zh) | 一种基于模板的混合云弹性伸缩组构建方法 | |
CN106250107A (zh) | 一种数据统计方法及系统 | |
CN106201466B (zh) | 一种基于heat的模板管理方法 | |
CN104767741A (zh) | 一种基于轻型虚拟机的计算服务分离与安全保护系统 | |
US20180253313A1 (en) | Operation instruction response control method and terminal for human-machine interface | |
CN104063303B (zh) | 一种获取和释放root权限的方法 | |
CN102096622A (zh) | 基于事件驱动实时获取系统中进程信息的方法及系统 | |
CN103177028A (zh) | 一种信息交互的方法和系统 | |
CN115794313A (zh) | 一种虚拟机调试方法、系统、电子设备及存储介质 | |
CN103037153A (zh) | 一种基于摄像头的监测方法及具有摄像头的电子设备 | |
CN112835639B (zh) | 一种Hook实现方法、装置、设备、介质及产品 | |
CN102109981A (zh) | 实时通讯通用插件 | |
CN103761096B (zh) | 基于IBinder机制实现的自动输入方法及装置 | |
CN106878082B (zh) | 一种虚拟网卡热迁移方法及其装置 | |
CN101963939A (zh) | 嵌入式电子装置及在嵌入式电子装置中程序执行校验方法 | |
US9239720B2 (en) | Device and method for generating application model based on layered structure | |
CN107453959B (zh) | 一种网卡的管理方法及其装置 | |
CN106231232A (zh) | 远程监护方法及装置 | |
CN113326172B (zh) | 一种运维知识的处理方法、装置及设备 | |
CN104484227A (zh) | 一种硬件资源使用率的管理方法及系统 | |
CN105551500B (zh) | 一种音频信号处理方法及装置 | |
WO2014094443A1 (zh) | 一种用于虚拟桌面接入的机顶盒、客户端、系统及方法 | |
CN102455981A (zh) | 基于qte环境下的usb设备热插拔的实现方法 | |
CN106293620A (zh) | intel平台检测Flash Rom中参数的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160803 Termination date: 20191221 |
|
CF01 | Termination of patent right due to non-payment of annual fee |