一种调用com对象中多个接口的方法

文档序号:6381981阅读:782来源:国知局
专利名称:一种调用com对象中多个接口的方法
—种调用COM对象中多个接口的方法
技术领域
本发明涉及计算机通讯领域,尤其涉及一种调用COM对象中多个接口的方法。背景技术
组件对象模型,英文为Component Object Model,缩写COM,是一种跨应用和语言共享二进制代码的方法。COM组件是遵循COM规范编写、以Win32动态链接库(DLL)或可执行文件(EXE)形式发布的可执行二进制代码,能够满足对组件架构的所有需求。一个COM组件,也被称为一个模块,它可以是一个动态连接库(DLL),被称为进程内组件(in-of-process component),也可以是一个可执行程序(EXE),被称为进程外组件(out-of-process component)。一个COM组件(也称组件程序)可以包含一个或多个COM对象,因为COM是以COM对象为基本单元的模型,所以在COM组件与COM组件之间进行通信时,通信的双方应该是COM对象,而COM组件是提供COM对象的代码载体。COM对象是一个使用COM规格的、可以重复使用的软件模块,其能够暴露任意数量的接口,一个接口是一组能够执行指定操作的方法;其中,COM对象必须暴露IUnknown接口,IUnknow 接口有三个函数:QueryInterface, AddRef (),Release ()。目前,使用COM对象的应用(或另一个COM对象)称为客户,当客户要使用某一COM组件中的某一 COM对象的某个接口时,首先必须调用COM库中的API函数调用出该某一 COM对象,然后使用其IUnknow接口的QueryInterface函数查询到所需接口并调用,由所需接口所定义的方法进行运算,并反馈返回值给上述客户。由于,一次使用IUnknow接口的指令中只能查一个其他接口,如果想对某一 COM对象的多个接口进行调用,就必须等客户收到上一个接口的反馈值再来查询并调用下一个接口,这样的效率是非常低的,特别是在跨COM组件的调用COM对象的情况下。结合图1,例如,第一 COM对象暴露了包括下面五个标准接口:IUnknow接口、+接口、-接口、X接口、+接口,其中,+接口、-接口、X接口、+接口分别对应定义:加运算方法(方法名为Add)、减运算(方法名为Subtract)、乘运算、除运算。假设客户现在要计算:1+2,1-2,I X 2,I + 2,先调用出第一 COM对象,客户输出使用指令“Querylnterface (“Add”,1,2) ”,通过第一 COM对象的IUnknow接口的QueryInerface函数去查询“+接口 ”, “+接口”所定义的方法计算出返回值,第一 COM对象将返回值回传给客户;然后再输出使用指令“Querylntefface ( “Subtract”, 1,2) ”去查询接口”以得到第二个返回值,如此类推,耗时的操作是4次。

发明内容本发明提供一种调用COM对象中多个接口的方法,其能解决调用速度慢的问题。上述技术问题通过以下技术方案实现:
一种调用COM对象中多个接口的方法,包括以下步骤:
(I)预先对在所需调用的COM对象内进行创建自定义接口,并对该自定义接口定义方法:在COM对象内部调用所述多个接口 ;(2)当需要调用COM对象中所述多个接口时,调用COM库中的API函数调用出所述COM对象,然后直接查询并调用所述自定义接口 ;(3)所述自定义接口在执行过程中调用多个接口。进一步的方案是,对在所需调用的COM对象内进行创建自定义接口,具体为,创建实现自定义接口定义方法并满足接口要求的dl I,然后注册加载到所需调用的COM对象中。由上述方案可见,本发明通过嵌入至软件内部执行代码(即对在所需调用的COM对象内进行创建自定义接口),实现将原来的外部多次使用COM对象中的IUnknow接口来调用多个接口变成了外部一次使用COM对象中的IUnknow接口来调用多个接口,有效地提高数据处理速度,特别是在跨COM组件的调用COM对象的情况下,非常节省时间。同时,本方法并没有改变COM对象原有的标准接口,因为通常的商业公司开发的COM对象是不允许其他人修改其原有的标准接口。

图1为目前调用COM对象中多个接口的示意图;图2为本发明的流程图;图3为本发明调用COM对象中多个接口的示意图。
具体实施方式结合图2和图3 所示,,一种调用COM对象中多个接口的方法,包括以下步骤:(I)预先对在所需调用的COM对象内进行创建自定义接口,并对该自定义接口定义方法:在COM对象内部调用所述多个接口 ;(2)当需要调用COM对象中所述多个接口时,调用COM库中的API函数调用出所述COM对象,然后直接查询并调用所述自定义接口 ;(3)所述自定义接口在执行过程中调用多个接口。在COM标准中,每个接口都在完成被调用后都会反馈一返回值;自定义接口在一次性调用完多个接口并获取它们的返回值,再将所有的返回值一起给到调用者。对在所需调用的COM对象内进行创建自定义接口,具体是:创建实现自定义接口定义方法并满足接口要求的dll,然后注册加载到所需调用的COM对象中以在所需调用的COM对象内形成自定义接口。当所需调用的COM对象在运行时,上述dl I就会同时被加载到内存中,以被调用,具体可按所需调用的COM对象.0bject.新增对象方法来调用。当然,上述所需调用的COM对象对外暴露一可加载其他dll的机制。下面通过一实际使用例子来进一步描述本发明:第一 COM对象暴露了包括下面五个标准接口:IUnknow接口、+接口、-接口、X接口、+接口,其中,+接口、-接口、X接口、+接口分别对应定义:加运算方法(方法名为Add)、减运算(方法名为Subtract)、乘运算、除运算;假设现在要计算:1+2,1-2,1X2,
I+ 2 ;首先,预先要对第一 COM对象所在的软件程序进行改造,具体是在第一 COM对象中创建一个自定义接口,该自定义接口定义了以下方法,方法名为CustomArithmetic:在第一COM对象内部调用+接口、-接口、X接口、+接口 ;然后,调用出第一 COM对象,客户输出使用指令“Querylnterface (“CustomArithmetic”,1,2) ”,通过第一 COM 对象的 IUnknow 接口的QueryInerface函数去查询自定义接口,自定义接口按其所定义的方法分别调用+接口、-接口、X接口、+接口,并收集它们的返回值,第一 COM对象将所有的返回值回传给客户;可见,客户只需调用一次第一COM对象的IUnknow接口,就可以一次获得所有返回值,处理速度非常快。本发明不局限于上述实施例,基于上述实施例的、未做出创造性劳动的简单替换,应当属于本发明揭露的范围。
权利要求
1.一种调用COM对象中多个接口的方法,其特征在于,包括以下步骤: (1)对在所需调用的COM对象内进行创建自定义接口,并对该自定义接口定义方法:在COM对象内部调用所述多个接口 ; (2)当需要调用COM对象中所述多个接口时,调用COM库中的API函数调用出所述COM对象,然后直接查询并调用所述自定义接口 ; (3)所述自定义接口在执行过程中调用所述多个接口。
2.按权利要求1所述的方法,其特征在于,对在所需调用的COM对象内进行创建自定义接口,具体为,创建实现自定义接口定义方法并满足接口要求的dl I,然后注册加载到所需调用的COM对象中。
全文摘要
本发明涉及一种调用COM对象中多个接口的方法,其特征在于,包括以下步骤(1)对在所需调用的COM对象内进行创建自定义接口,并对该自定义接口定义方法在COM对象内部调用所述多个接口;(2)当需要调用COM对象中所述多个接口时,调用COM库中的API函数调用出所述COM对象,然后直接查询并调用所述自定义接口;(3)所述自定义接口在执行过程中调用多个接口。本发明解决了调用速度慢的问题。
文档编号G06F9/46GK103092684SQ201210477299
公开日2013年5月8日 申请日期2012年11月21日 优先权日2012年11月21日
发明者孔贵生, 皮霞林, 佐伦 申请人:珠海金山办公软件有限公司, 北京金山办公软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1