CN101876898B - 一种com组件的注册方法及装置 - Google Patents
一种com组件的注册方法及装置 Download PDFInfo
- Publication number
- CN101876898B CN101876898B CN 200910237856 CN200910237856A CN101876898B CN 101876898 B CN101876898 B CN 101876898B CN 200910237856 CN200910237856 CN 200910237856 CN 200910237856 A CN200910237856 A CN 200910237856A CN 101876898 B CN101876898 B CN 101876898B
- Authority
- CN
- China
- Prior art keywords
- message
- log
- system architecture
- com component
- component
- 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.)
- Active
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种组件式对象模型COM组件的注册方法及装置,所述方法包括:使用COM组件的系统架构初始化时,所述系统架构在所属的操作系统中查找得到COM组件所对应的组件文件;系统架构从操作系统获取COM组件的注册信息;所述注册信息由操作系统从查找得到的所述组件文件中获取得到;所述系统架构保存获取到的所述注册信息。所述方法及装置在使用COM组件的系统架构初始化时自动注册COM组件,提高了注册效率。
Description
技术领域
本发明涉及组件集成技术,尤其涉及一种COM(COMponent ObjectModel,组件式对象模型)组件的注册方法及装置。
背景技术
COM提供了一种在不同的应用程序和语言之间共享二进制代码的规范。COM规范定义了软件组件互相通讯的方式。作为一种二进制和网络标准,COM允许任意两个组件互相通讯,而不管所述任意两个组件是在什么计算机上运行(只要计算机是相连的),也不管计算机运行的是什么操作系统(只要该操作系统支持COM),也不管该组件是用什么语言编写的。COM还提供了位置透明性,即:所述COM组件可以是进程内Dll、本地exe或者也可以是位于其他计算机上的组件等。
COM不是一种面向对象的语言,而是一种与源代码无关的二进制标准。COM所建立的是一个软件模块与另一个软件模块之间的链接,而当这种链接建立之后,模块间就可以通过称之为“接口”的机制来进行通信。COM标准增加了保障系统和组件完整的安全机制,并扩展到分布式环境,例如,基于分布式环境下的COM被称为DCOM(Distributed COM,分布式组件对象模型)等。
在操作系统如Windows下,在使用某COM组件之前,一般需要手工运行相应的外部程序如regsvr32.exe,所述外部程序调用Windows的API函数DllRegisterServer,将COM组件的注册信息写入注册表中,之后,当需要使用COM组件时,操作系统根据注册表中的注册信息构建实例化组件进行使用。
通过以上描述可知:现有技术中需要手动进行COM组件的注册,注册效率低。
发明内容
有鉴于此,本发明要解决的技术问题是,提供一种COM组件的注册方法及装置,在使用COM组件的系统架构初始化时自动注册COM组件,提高了注册效率。
为此,本发明实施例采用如下技术方案:
本发明实施例提供一种组件式对象模型COM组件的注册方法,包括:
使用COM组件的系统架构初始化时,所述系统架构从系统架构所属的操作系统中查找得到COM组件所对应的组件文件;
所述系统架构从操作系统获取COM组件的注册信息;所述注册信息由操作系统从查找得到的所述组件文件中获取得到;
所述系统架构保存获取到的所述注册信息。
其中,所述查找与所述获取之间进一步包括:
系统架构加载查找到的所述COM组件所对应的组件文件,得到COM组件对应的实例化函数,将所述实例化函数对应的实例化函数接口添加到所述注册信息中。
所述注册信息包括:COM组件的类型、注册类型以及实例化函数接口。
所述系统架构保存获取到的所述注册信息具体为:
所述系统架构将所述注册信息写入所述系统架构的组件信息表中,所述组件信息表用于为系统架构构建COM组件提供相应的注册信息。
所述系统架构从操作系统获取COM组件的注册信息具体为:
系统架构接收操作系统发来的函数名称,其中,所述函数名称对应的函数由操作系统根据操作系统获取到的所述COM组件的注册信息建立;
系统架构根据所述函数名称查找得到该函数名称对应的函数,从该函数中获取COM组件的注册信息。
所述系统架构为:应用程序。
本发明实施例还提供一种COM组件的注册装置,包括:
查找单元,用于在所述装置所属的系统架构初始化时,从所述系统架构所属的操作系统中查找得到COM组件所对应的组件文件;
获取单元,用于从操作系统获取COM组件的注册信息,所述注册信息由操作系统从查找得到的所述组件文件中获取得到;
存储单元,用于保存获取到的所述注册信息。
其中,还包括:
加载单元,用于加载查找到的所述COM组件所对应的组件文件,得到COM组件对应的实例化函数,将所述实例化函数对应的实例化函数接口添加到所述注册信息中。
所述注册信息包括:COM组件的类型、注册类型以及实例化函数接口。
所述存储单元具体用于:将所述注册信息写入所述系统架构的组件信息表中,所述组件信息表用于为系统架构构建com组件提供相应的注册信息。
所述获取单元具体用于:接收操作系统发来的函数名称,根据所述函数名称查找得到相应的函数,从该函数中获取COM组件的注册信息,其中,所述函数名称对应的函数由操作系统根据操作系统获取到的所述COM组件的注册信息建立。
对于上述技术方案的技术效果分析如下:
使用COM组件的系统架构在初始化时,查找COM组件对应的组件文件,进而从操作系统获取COM组件的注册信息并保存,从而实现了COM组件的自动注册,无需如现有技术般在使用COM组件时手工注册,提高了注册效率,简化了用户操作。
附图说明
图1为本发明实施例一种COM组件的注册方法流程示意图;
图2为本发明实施例另一种COM组件的注册方法流程示意图;
图3为本发明实施例一种COM组件的注册装置结构示意图。
具体实施方式
以下,结合附图详细说明本发明实施例COM组件的注册方法及装置的实现。
图1为本发明实施例COM组件的注册方法流程示意图,如图1所示,包括:
步骤101:使用COM组件的系统架构初始化时,在所述系统架构所属的操作系统中查找得到COM组件所对应的组件文件。
所述使用COM组件的系统架构可以为使用COM组件的应用程序等。所述系统架构所属的操作系统可以为:Windows、Linux等操作平台等,这里并不限定,只要该操作平台支持COM即可。
步骤102:系统架构从操作系统获取COM组件的注册信息;所述注册信息由操作系统从查找得到的所述组件文件中获取得到。
步骤103:所述系统架构保存获取到的所述注册信息。
图1所示的本发明实施例中,由使用COM组件的系统架构在初始化时,查找对应的组件文件,进而从操作系统获取COM组件的注册信息并保存,从而实现了COM组件的自动注册,无需如现有技术般在使用COM组件时手工注册,提高了注册效率,简化了用户操作。
图2为本发明实施例另一种COM组件的注册方法流程示意图,如图2所示,包括:
步骤201:使用COM组件的系统架构(下文简称为:系统架构)在初始化时,所述系统架构在所属的操作系统中查找得到COM组件所对应的组件文件。
其中,所述查找可以通过系统架构调用操作系统中相应的API函数完成。另外,可以将所有COM组件的组件文件保存于同一目录下,之后,当查找某一COM组件的组件文件时,系统架构只需调用相应的API函数到所述同一目录下查找特定文件即可。
另外,所述组件文件可以设置特定的后缀,以与其他类型的文件进行区分。例如:可以将所述组件文件的后缀设置为po等。
步骤202:系统架构加载查找到的所述组件文件,得到COM组件对应的实例化函数,将所述实例化函数对应的实例化函数接口添加到所述注册信息中。
其中,所述加载可以为:系统架构读取组件文件到对应的内存中,并将所述组件文件转换为可执行程序,形成COM组件对应的实例化函数。
步骤203:操作系统从查找到的所述组件文件中获取所述COM组件的注册信息,将获取到的所述注册信息发送给所述系统架构。
所述注册信息主要包括:组件类型、注册类型(关键字)、实例化的函数接口,还可以包括:可能的附加参数。所述注册信息在COM组件的组件文件中可以以注册宏的形式存在,注册宏具体可以为定义的一种组件的数据结构。
其中,所述组件类型、注册类型等可以通过字符串、整数值等表征,例如,注册一种用于视频解码的组件,其组件类型为:视频解码组件;注册类型则设定为具体能解码的流类型,可以通过具体的整数值来进行不同流类型的区分。实例化函数接口是实例化组件的地址,向所述系统架构指示相应的实例化组件,该实例化函数接口值在步骤202执行后根据步骤202转换得到的实例化函数确定。
所述操作系统在将注册信息发送给系统架构时,可以先将注册信息组成一个数据结构,形成注册信息块,将该组件的所有注册信息形成链表形式,之后,将该链表的函数名(例如PoModuleMakerList)发送给系统架构。
步骤204:系统架构获取操作系统发来的所述COM组件的注册信息并保存。
具体的,当操作系统通过例如PoModuleMakerList的函数名向系统架构返回注册信息时,本步骤中所述获取操作系统发来的所述COM组件的注册信息具体可以为:系统架构通过调用操作系统相应的API函数查找该函数名的接口,从而查找到对应的函数,通过调用该函数获得COM组件的注册信息。
系统架构可以建立用于保存COM组件注册信息的组件信息表,此时,本步骤中系统架构将会将接收到的注册信息写入该组件信息表中。
之后,系统架构即可以根据所述注册信息构建并使用相应的COM组件了。例如上述的视频解码组件注册完成后,系统架构可以根据注册信息中的流类型以及实例化的函数接口等信息,直接调用所述实例化函数,传入附加参数即可获得构造好的视频解码实例化组件。
图3为本发明实施例COM组件的自动注册装置结构示意图,如图3所示,包括:
查找单元310,用于所述装置所属的系统架构初始化时,在所述系统架构所属的操作系统中查找得到COM组件所对应的组件文件;
获取单元320,用于从操作系统获取COM组件的注册信息;所述注册信息由操作系统从查找得到的所述组件文件中获取得到;
存储单元330,用于保存获取到的所述注册信息。
优选地,如图3所示,该装置还可以进一步包括:
加载单元340,用于加载查找到的所述COM组件所对应的组件文件,得到COM组件对应的实例化函数。
优选地,所述获取单元320具体可以用于:接收操作系统发来的函数名称,调用操作系统相应的API函数根据所述函数名称查找得到相应的函数,从该函数中获取COM组件的注册信息;所述函数名称对应的函数由操作系统在从所述组件文件中获取到COM组件的注册信息后根据所述注册信息建立。
优选地,所述存储单元330具体可以用于:将所述注册信息写入所述系统架构的组件信息表中,以为系统架构构建com组件提供相应的注册信息。
图3所示的注册装置,由查找单元310使用COM组件的系统架构在初始化时,查找对应的组件文件,获取单元320从操作系统获取COM组件的注册信息后由存储单元330进行保存,从而实现了COM组件的自动注册,无需如现有技术般在使用COM组件时手工注册,提高了注册效率,简化了用户操作。
本领域普通技术人员可以理解,实现上述实施例COM组件注册方法的过程可以通过程序指令相关的硬件来完成,所述的程序可以存储于可读取存储介质中,该程序在执行时执行上述方法中的对应步骤。所述的存储介质可以如:ROM/RAM、磁碟、光盘等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (9)
1.一种组件式对象模型COM组件的注册方法,其特征在于,包括:
使用COM组件的系统架构初始化时,所述系统架构从系统架构所属的操作系统中查找得到COM组件所对应的组件文件;
所述系统架构从操作系统获取COM组件的注册信息;所述注册信息由操作系统从查找得到的所述组件文件中获取得到;所述系统架构从操作系统获取COM组件的注册信息具体为:
系统架构接收操作系统发来的函数名称,其中,所述函数名称对应的函数由操作系统根据操作系统获取到的所述COM组件的注册信息建立;
系统架构根据所述函数名称查找得到该函数名称对应的函数,从该函数中获取COM组件的注册信息;
所述系统架构保存获取到的所述注册信息。
2.根据权利要求1所述的方法,其特征在于,所述查找与所述获取之间进一步包括:
系统架构加载查找到的所述COM组件所对应的组件文件,得到COM组件对应的实例化函数,将所述实例化函数对应的实例化函数接口添加到所述注册信息中。
3.根据权利要求2所述的方法,其特征在于,所述注册信息包括:COM组件的类型、注册类型以及实例化函数接口。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述系统架构保存获取到的所述注册信息具体为:
所述系统架构将所述注册信息写入所述系统架构的组件信息表中,所述组件信息表用于为系统架构构建COM组件提供相应的注册信息。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述使用COM组件的系统架构为使用COM组件的应用程序。
6.一种组件式对象模型COM组件的注册装置,其特征在于,包括:
查找单元,用于在所述装置所属的系统架构初始化时,从所述系统架构所属的操作系统中查找得到COM组件所对应的组件文件;
获取单元,用于从操作系统获取COM组件的注册信息,所述注册信息由操作系统从查找得到的所述组件文件中获取得到;
所述获取单元具体用于:接收操作系统发来的函数名称,根据所述函数名称查找得到相应的函数,从该函数中获取COM组件的注册信息,其中,所述函数名称对应的函数由操作系统根据操作系统获取到的所述COM组件的注册信息建立;
存储单元,用于保存获取到的所述注册信息。
7.根据权利要求6所述的装置,其特征在于,还包括:
加载单元,用于加载查找到的所述COM组件所对应的组件文件,得到COM组件对应的实例化函数,将所述实例化函数对应的实例化函数接口添加到所述注册信息中。
8.根据权利要求7所述的装置,其特征在于,所述注册信息包括:COM组件的类型、注册类型以及实例化函数接口。
9.根据权利要求6至8任一项所述的装置,其特征在于,所述存储单元具体用于:将所述注册信息写入所述系统架构的组件信息表中,所述组件信息表用于为系统架构构建COM组件提供相应的注册信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910237856 CN101876898B (zh) | 2009-11-12 | 2009-11-12 | 一种com组件的注册方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910237856 CN101876898B (zh) | 2009-11-12 | 2009-11-12 | 一种com组件的注册方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101876898A CN101876898A (zh) | 2010-11-03 |
CN101876898B true CN101876898B (zh) | 2013-11-06 |
Family
ID=43019460
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910237856 Active CN101876898B (zh) | 2009-11-12 | 2009-11-12 | 一种com组件的注册方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101876898B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103034477B (zh) * | 2011-09-29 | 2016-06-29 | 北京新媒传信科技有限公司 | 一种组件式开放架构模型实现方法 |
CN106681838A (zh) * | 2016-12-30 | 2017-05-17 | 北京天健源达科技有限公司 | 主线程com对象的管理方法和终端设备 |
CN108196900B (zh) * | 2017-12-08 | 2021-11-09 | 五八有限公司 | 组件的注册方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493766A (zh) * | 2009-02-24 | 2009-07-29 | 浪潮集团山东通用软件有限公司 | 一种解决active x组件版本冲突的轻量级虚拟化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100435095C (zh) * | 2006-12-01 | 2008-11-19 | 上海科泰世纪科技有限公司 | 一种命名服务方法 |
-
2009
- 2009-11-12 CN CN 200910237856 patent/CN101876898B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493766A (zh) * | 2009-02-24 | 2009-07-29 | 浪潮集团山东通用软件有限公司 | 一种解决active x组件版本冲突的轻量级虚拟化方法 |
Non-Patent Citations (1)
Title |
---|
赵新昱等."COM组件属性、方法的自动提取和调度".《计算机工程》.2000,第26卷(第11期), |
Also Published As
Publication number | Publication date |
---|---|
CN101876898A (zh) | 2010-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541572B (zh) | 一种实现操作系统内核引导的方法、系统及装置 | |
CN111538521B (zh) | 智能合约部署、交易方法及装置 | |
CN104050080B (zh) | 用户态调试linux内核的方法及系统 | |
US20150195346A1 (en) | Open platform, open platform access system, storage medium, and method for allowing third party application to access open platform | |
CN107577477B (zh) | 一种基于dtb文件的多平台软件版本自适应方法及系统 | |
CN109471668B (zh) | 跨平台显卡固件翻译执行方法、装置、设备及可读介质 | |
CN103853535B (zh) | 修改中间件的方法和装置 | |
CN102246157A (zh) | 隔离由插件代码主存的应用程序 | |
CN109656844B (zh) | 一种AT24xx EEPROM驱动方法和装置 | |
CN114721719B (zh) | 一种在集群中容器化部署异构应用的方法和系统 | |
JP2005537533A (ja) | ソフトウエアのアトム化 | |
CN114138372B (zh) | 前端组件加载方法及装置 | |
US20090144046A1 (en) | Method to encapsulate an option rom for operation in multiple firmware and platform architectures | |
CN114116134A (zh) | 智能合约部署和执行方法、设备及存储介质 | |
CN108334784A (zh) | 一种漏洞扫描方法和装置 | |
CN111796860A (zh) | 微前端方案实现方法及装置 | |
CN102236573A (zh) | 用于类型化程序设计语言的名称绑定可扩展性 | |
CN101894028A (zh) | Linux内核镜像数据支持多种CPU的实现方法及装置 | |
CN101876898B (zh) | 一种com组件的注册方法及装置 | |
CN1963782A (zh) | 嵌入式文件系统的测试方法及系统 | |
CN116522368A (zh) | 一种物联网设备固件解密解析方法、电子设备、介质 | |
US8719637B2 (en) | System and method for acquiring basic input/output system debug codes | |
CN114840214A (zh) | 程序编译和启动方法、设备及存储介质 | |
US10353700B1 (en) | Code base sharing between standalone and web-based versions of an application via an emulated network communication channel | |
Ray | An overview of webassembly for iot: Background, tools, state-of-the-art, challenges, and future directions |
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 | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20220726 Granted publication date: 20131106 |