CN1470988A - 进程间调用门技术 - Google Patents
进程间调用门技术 Download PDFInfo
- Publication number
- CN1470988A CN1470988A CNA021253250A CN02125325A CN1470988A CN 1470988 A CN1470988 A CN 1470988A CN A021253250 A CNA021253250 A CN A021253250A CN 02125325 A CN02125325 A CN 02125325A CN 1470988 A CN1470988 A CN 1470988A
- Authority
- CN
- China
- Prior art keywords
- service
- function
- call
- client
- space
- 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
- Stored Programmes (AREA)
Abstract
进程间调用门技术能够使一个进程的对象可以直接调用另外一个进程中的对象的函数,在最终执行时不需要依赖于注册表,而且可以把单实例的程序通过多进程实现多实例,这是组件对象模型(以下简称COM)所没有的。同时可以在客户端不用实现动态链接库(DLL)存根,而是直接实现存根,客户端和服务器端对开发者都是完全透明的,从而开发者有更大的参与控制过程的机会。大多数以前用C语言开发的应用程序多是单实例和非对象化的。如果采用COM技术改造这些程序,则其成本将是巨大的,而且有时也是不可能的。通过调用门技术,可以很容易的解决这一问题。调用门技术只需对原有的程序作不大的改动,就可以通过多进程的方法实现多实例和对象化。
Description
1技术领域
本发明涉及一种用于把原有的非对象化的模块对象化,把单实例模块多实例化的方法。并特别涉及一种新颖而有效的进程通信的软件技术(调用门技术),具体地,涉及一种把函数调用参数打成统一的数据格式,并用单一的传送接口来实现进程间的实时通信的技术。
2技术背景
近年来,软件技术飞速发展,软件产品的更新速度也越来越快。软件产品与网络的结合已是一种基本趋势。而许多公司原有的软件产品(或模块)是非对象化的和单实例化的,这阻碍了它在网络和多用户方面的应用,以及相应产品的更新换代。
在软件产品的对象化设计方面,MICROSOFT的组件对象模型(以下简称COM)技术是一个很好的选择。但是,如果完全按照COM规范重写这些模块,其代价将是巨大的。
调用门技术可以很好的解决这一问题。采用这一技术,只需对原有的应用作较少的修改,就可以使其对象化和多实例化。
通过动态链接库(DLL)实现进程内的应用户程序接口(以下简称API)函数定义和调用是很通用的技术。用可执行文件(如EXE)实现进程间的API函数定义和调用的方法有多种,如本地过程调用(LPC)和远程过程调用(RPC)等,这些方法的机理对于开发者而言不透明,而且不能实现对另一个进程内的API函数的直接调用。
3发明内容
调用门技术通过一定的方法使得一个进程的对象可以直接调用另外一个进程中的对象的函数。它是从操作系统的相关技术延伸而来,它的很多思想方法与COM是一样的,但是最终执行的时候不需要依赖于注册表,而且可以把单实例的程序通过多进程来实现多实例,这是COM所没有的。同时可以在客户端不用实现DLL存根,而是直接实现存根,客户端和服务器端对开发者都是完全透明的,从而开发者有最大的参与控制过程的机会。
本发明的内容如下:
(1)通过调用门,客户进程空间中的对象可以创建和关闭指定服务进程;
(2)通过调用门,客户进程空间中的对象可以在服务进程空间中创建一个指定
的服务对象,并获得该对象的句柄;
(3)通过调用门,客户进程空间中的对象可以调用服务进程空间的一个指定的
对象的函数,并获得该函数的返回值;
本发明可以解决的问题如下:
(1)用可执行文件(如EXE)的方法实现API函数接口,通过调用门实现另
一个进程对这些API函数的直接调用;
(2)通过调用门,可以创建进程外服务程序;
(3)通过调用门,可以把单实例的程序通过多进程来实现多实例。
4附图说明
图1给出了客户进程空间的对象与服务进程空间的对象通过调用门进行通信的过程。调用门作为中转,把来自于客户进程空间的对象的函数调用(或其它请求)翻译并传送到服务进程空间,然后在服务进程空间中调用相应的函数,并且最后把返回值传回到客户进程空间。
图2给出了调用门处理客户进程空间的对象的函数调用的过程。
图3给出了客户端的运行过程简图。
图4给出了服务端的运行过程简图。
图5给出了客户端对象调用服务端对象的函数时所发生的事件及其过程。
5具体实施方式
本发明通过一定的机制使客户端对象可以直接调用服务器端的对象的函数,并得到相应的返回值。它的基本思想是:
●客户端及服务器端的对象派生于相同的虚基类,从而它们有相同的虚
函数表(以下简称VTABLE),这样当客户端对象把函数的相对地址
(相对于客户端对象)和服务器端对象的地址传送到服务器端的进程
中,则服务器端进程把服务器对象句柄加上相对地址,就可以得到客
户端要调用的函数;
●通过共享内存在服务器端与服务器传送调用参数及信息;
●通过事件完成进程间的函数调用的同步;
客户端及服务器端对象处于不同的地址空间中,它们之间不知道对方的地址,而且它们的函数分别处于不同的地址空间中,因此不能直接互相调用。客户端与服务器端可以共享同一个动态库,从而它们共享相同的代码段,但是,操作系统并不一定把动态库映射到不同进程空间的相同地址段中,因此,不能直接通过这些地址调用相应的函数。
所有的COM对象都派生于类IUnknown,IUnknown是一个纯虚基类。这样,所有COM对象的VTABLE的前三个接口都相同的,从而所有的对象可以通过相同的接口QueryInterface查寻其它的接口。类IUnknown中的函数调用方法服从标准WINDOWS函数调用(以下简称STDCALL)调用规则。这种调用规则只发传送固定数目的参数,它不能传送变参数的情况,因此,本发明定义了自己的纯虚基类IBase,它不采用COM的STDCALL调用规则,而是采用C调用规则,这样可以传送不定个数的函数参数。
IBase定义如下:
#ifdef_cplusplus class IBase { <dp n="d2"/> public: virtual HRESULT QueryInterface(REFIID iid,void** ppvObject)=0; virtual ULONG AddRef(void)=0; virtual ULONG Release(void)=0; }; #endif #ifdef_cplusplus typedef int(IBase∷*LPCLASSAPI)(...); #else typedef int(*LPCLASSAPI)(); #endif
服务器端对象与客户端对象派生于相同的接口,它可以是IBase接口,也可以是IBase的派生接口。这样客户端对象和服务器对象具有相同的VTABLE,而且都是服从C调用规则。
当客户端对象要调用服务器端对象的函数时,客户端把服务器端对象指针和对象函数以及参数通过CallGateFunc()转变成针对服务器端对象的调用从而实现进程间的对象调用。图2中给出调用门API接口函数CallGateFunc定义。由于两端对象有相同的VTABLE,所以,这种调用是可行的。
图1给出的是客户进程空间的对象与服务进程空间的对象通过调用门进行通信的过程。图3和图4给的是客户端及服务器端的运行过程。
如果客户端对象需要服务器端对象的服务,则其可以通过调用门库的API函数
HANDLE APIENTRY CreateServer(LPSTR lpExeFile,LPGUID lpSvrID)创建指定的服务进程,其中lpExeFile是进程的路径,lpSvrID为服务对象的标识,它是一个统一标识(以下简称GUID)标识。该函数返回服务进程的进程句柄。
当不需要指定的进程时,它可以调用API函数关闭指定的进程,该API函数定义如下:
INT APIENTRY DeleteServer(HANDLE Handle);
在服务端进程的入口点函数main或者WinMain里,调用API函数
INT APIENTRY BeginServer(LPEXEGETCLASSOBJECT
lpGetClassObject,
LPEXECANEXITNOW lpExeCanExitNow,LPGUID lpSvrID)通知调用门库自己已经启动,同时,把传入自己的三个信息:
第一个lpGetClassObject是进程自己用于创建对象的函数指针,它的定义如下:
typedef INT(APIENTRY*LPEXEGETCLASSOBJECT)(REFCLSID rclsid,
REFIID riid,LPVOID*ppv);
第二个lpExeCanExitNow是进程自己控制退出的函数指针,它的定义如下:
typedef VOID(APIENTRY*LPEXECANEXITNOW)(VOID);
第三个lpSvrID是进程的GUID标识,它用来唯一标识自己。
当服务进程结束时,调用API函数EndServer通知调用门库自己已经关闭,该函数的定义如下:
VOID APIENTRY EndServer(VOID);
调用门库知道了服务进程的进程标识lpSvrID,进程句柄,创建服务对象的函数指针lpGetClassObject和控制服务关闭的函数指针lpExeCanExitNow,这样它应可以有效的控制服务进程为客户进程服务。
当客户进程对象需要服务对象时,它可以调用API函数CreateObjectInstance来通知调用门库创建指定的服务对象,CreateObjectInstance的定义如下:
INT APIENTRY CreateObjectInstance(HANDLE Handle,REFCLSID rclsID,
REFIID riID,LPVOID*lppv);
其中Handle是服务进程对象的句柄,rclsID为服务对象类ID,riId是服务对象ID,lppv是接受服务对象指针的地址指针。
调用门库通过lpGetClassObject函数指针创建指定的对象。正如前述,所有的服务器端对象和客户端对象都实现IBase接口,并且有相同的VTABLE,通过调用门库,客户端对象对接口函数的调用可以很好的转换成对服务器端接口的调用。
调用门API函数CallGateFunc只能传送指针类型和整数类型,如果调用函数要传送字串或者其它类型,则可以采用共享内存方式。在客户调用端,创建一个共享内存,拷贝要传送的信息到共享内存中,然后把共享内存的句柄通过CallGateFunc传送到服务器端;服务器端得到这一内存句柄后,可以取出相应的数据,并调用相应的接口函数,以完成客户端的调用;当服务器端完成任务后,客户端可以去除共享内存。
客户端对服务端的对象的调用通过调用门和宏定义实现。例如,客户端对象A调用服务端对象B的QueryInterface方法可以通过如下的宏定义进行转换:
#define A_QueryInterface(B,iid,lppv)\
CallGateFunc(hServer,(sizeof(iid)+sizeof(lppv))/4,
(LPCLASSAPI)B->QueryInterface,lpObject,iid,lppv))
图1给出了客户端进程与服务器端进程的交互过程。客户进程调用API函数CreateServer请求创建一个进程(图1中的(1)),它传给调用门要创建的进程的路径及要创建进程的标识GUID;调用门获得这一请求后,调用系统API函数CreateProcess创建指定的进程(图1中的(2)),并得到这一进程的句柄;在服务进程启动的过程中,它会调用API函数BeginServer向调用门注册自己,注册的内容包括创建服务对象的函数指针LPEXEGETCLASSOBJECT、建议服务进程关闭的函数指针LPEXECANEXITNOW和进程的GUID标识。这样调用门就知道服务进程的情况,并且通过这些函数可以创建服务对象和控制服务进程。
客户端创建对象成功后,可以调用API函数CreateObjectInstance在服务器端创建一个服务对象(图1中的(3)),调用门得到这一请求后(图1中的(4和5)),调用相应的进程的LPEXEGETCLASSOBJECT函数指针,创建一个服务对象,并返回给客户端。
当客户端要调用服务对象的一个函数时(图1中的(6)),客户端通过API函数CallGateFunc把被调用进程的句柄、调用参数的个数、被调用的函数和参数列表传送到服务进程(图1中的(7));调用门在服务进程中调用指定的函数并把返回值传回调用者(图1中的(8))。这样就完成一次跨进程的函数调用。
如果客户端不再需要服务对象,则可以调用函数的方法,把服务端对象释放(图1中的(9、10和11))。
如果客户端要关闭服务进程,则可以调用API函数DeleteServer关闭服务进程(图1中的(12和13))。当服务进程关闭时,会调用API函数EndServer通知调用门自己已经关闭。
图3和图4分别给出的是客户端和服务器端的运行过程。图2给出了调用门处理客户进程空间的对象的函数调用的过程。API函数CallGateFunc可以传送任意多的整型参数,参数从左向右压栈(图2中的(14)),接着服务对象句柄压栈((图2中的(15)),然后在服务进程空间直接调用服务对象对应的函数(图2中的(16)),最后调用门把函数的返回值传送回客户进程(图2中的(17))。
图5给出的是客户端对象调用服务端对象的函数的过程。调用过程如下:
(1)客户端对象发起对服务器端对象的函数3的调用(图5中的(18));
(2)在进入调用门之前客户端对象对调用参数进行打包(图5中的(19));
(3)接着进入调用门(图5中的(20)),调用门把函数调用的参数传入服务进
程;
(4)调用门起动服务对象的函数3,该函数进行参数解包(图5中的(21));
(5)服务对象的函数3执行((图5中的(22));
(6)服务对象的函数3把返回值进行打包(图5中的(23));
(7)调用门取得服务对象的函数3的打包好的返回值(图5中的(24)),并传
送给客户端对象;
(8)客户端对象把调用门传回的返回值进行解包(图5中的(25));
(9)客户端得到服务端的对象的返回值(图5中的(26)),至此,客户端对象
成功的完成了一次对服务器端对象的调用过程。
调用门技术在实现进程外服务方面与COM技术有着同样优良的表现,它可以使开发者最大程度的控制开发流程。同时,它可以解决COM技术不能解决的问题,前面已经指出,大多数以前用C开发的应用程序多是单实例和非对象化的。如果采用COM技术改造这些程序,则其成本将是巨大的,而且有时也是不可能的。通过调用门技术,可以很容易的解决这一问题。
调用门技术只需对原有的程序作不大的改动,就可以通过多进程的方法实现多实例和对象化。其改动的基本思想是:
每个实例就是一个服务进程,它可以创建一个服务对象;当客户进程需要创建多个服务对象时,就可以创建多个服务进程为客户服务。这样,对于客户进程来说,就相当于服务进程是多实例的。
比如说,已有一个运动图象专家组(MPEG)的MPEG1流的解码器,它是单实例的。打开一个进程只能播放一个MPEG1格式的流。如果要用这个解码器实现监控系统,桌面上要求有16个监视终端。对于这个单实例的播放器来说,如果要用它,则要创建16个播放进程,这16个进程将是独立的。开发者如果不用本发明的调用门技术,他将面临控制这16个进程的播放窗口的技术挑战。如果采用本发明的调用门技术,只需对原有的MPEG1解码器做很少的修改,使其可以创建一个服务对象。另外新写一个客户端对象,这个对象是多实例的,它的每个实例都相应的创建一个服务进程对象。再用这个客户端对象实现监控系统,将会更易控制。开发者在实现这一系统时,只需专注于对客户端的控制即可。通过这一方法,不需要再花费精力开发一个新的支持多实例的MPEG播放器。
Claims (5)
1.进程间调用门技术通过一定的方法使得一个进程的对象可以直接调用另外一个进程中的对象的函数。该方法包括步骤:
根据客户进程对象的请求信息,服务进程对象的路径和服务对象的统一标识(以下简称GUID),调用门创建指定的服务进程;
服务进程在启动时,通知调用门自己的状态信息(创建服务对象的函数指针,通知服务进程关闭的函数指针和服务进程自己的进程GUID);
根据客户进程对象的创建服务对象的请求信息(服务进程的句柄、服务对象的GUID和接收服务对象句柄的指针),调用门在服务进程空间创建服务对象;
根据客户进程对象的调用服务对象的函数的请求信息(服务进程的句柄、服务对象的句柄、被调用的函数、函数参数的个数及函数参数的列表),调用门在服务进程空间调用服务对象为客户服务,并返回被调用函数的返回值;
根据客户进程对象的释放服务对象请求,调用门在服务进程空间释放服务对象并关闭服务进程;
服务进程在关闭时,通知调用门自己正在关闭。
2.根据权利要求1的方法,其中根据客户进程对象的创建服务对象的请求信息,调用门在服务进程空间中创建服务对象的步骤包括步骤:调用门分析客户对象的请求信息,在其缓冲区中查找指定的进程对象及其创建服务对象的函数指针,切换环境到服务进程空间,运行该函数以在服务进程创建指定的服务对象,再次切换环境到客户进程空间,并把服务对象的句柄传送给相应客户对象。
3.根据权利要求2的方法,其中切换进程空间的步骤包括步骤:
调用门被同时加载到服务进程空间和客户进程空间;
当要切换进程空间时,调用门的在客户进程中的代码通过事件通知服务进程空间中的调用门代码运行,这样调用门在服务进程空间的服务部分被运行;
反过来,当服务进程空间的函数运行完后,服务进程中的调用门代码把返回值传送到客户进程空间,并通过事件通知客户进程运行中的调用门代码;
通过这种方式可以实现进程间的切换。
4.根据权利要求1的方法,还包括把原有非对象化的接口对象化,把单实例的程序通过多进程来实现多实例的方法,该方法包括步骤:
每个实例就是一个服务进程,它可以创建一个服务对象;
当客户进程需要创建多个服务对象时,就可以创建多个服务进程为客户服务。这样,对于客户进程来说,就相当于服务进程是多实例的;
把原来的单实例的程序中的功能抽象出一个虚基类,其中的函数服从C调用规则,并在此基础上创建服务程序;
客户端对象也是由该虚基类的派生类设计而得。当要创建多个客户端对象时,每个客户端对象创建一个服务进程和一个服务对象为客户服务。这样通过多进程实现多实例。
5.权利要求1的方法还包括,用可执行文件(如EXE)的方法实现API函数接口,通过调用门实现另一个进程对这些应用程序开发接口(以下简称API)函数的直接调用;该方法包括步骤:
调用端对调用参数进行打包,然后通过调用门传送到被调用端;
被调用API函数解包调用参数,并执行;
被调用API函数打包自己的执行的返回结果;
调用门把被调用的API函数的的打包好的返回结果传送给调用端;
调用端解包,以得到被调用API函数的返回值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02125325 CN1257455C (zh) | 2002-07-25 | 2002-07-25 | 进程间调用门技术 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 02125325 CN1257455C (zh) | 2002-07-25 | 2002-07-25 | 进程间调用门技术 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1470988A true CN1470988A (zh) | 2004-01-28 |
CN1257455C CN1257455C (zh) | 2006-05-24 |
Family
ID=34142841
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 02125325 Expired - Fee Related CN1257455C (zh) | 2002-07-25 | 2002-07-25 | 进程间调用门技术 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1257455C (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008110111A1 (fr) * | 2007-03-13 | 2008-09-18 | Huawei Technologies Co., Ltd. | Procédé et dispositif pour appeler une bibliothèque dynamique et serveur de bibliothèque dynamique et dispositif mettant en œuvre un programme maître |
CN1949179B (zh) * | 2005-10-13 | 2010-06-30 | 国际商业机器公司 | 利用只读进程组件对服务进程建模的方法和系统 |
CN101902458A (zh) * | 2010-02-21 | 2010-12-01 | 中国联合网络通信集团有限公司 | 跨主机进程间通信的方法、装置及系统 |
CN102103526A (zh) * | 2011-02-14 | 2011-06-22 | 博视联(苏州)信息科技有限公司 | 服务端和客户端间通过服务管理进行进程间通信的方法及系统 |
CN102591726A (zh) * | 2011-12-31 | 2012-07-18 | 青岛海信宽带多媒体技术有限公司 | 一种多进程通信方法 |
CN102662778A (zh) * | 2012-04-28 | 2012-09-12 | 杭州格畅科技有限公司 | 在线应用平台上应用间通信的回调应答方法、应用及在线应用平台 |
CN102981896A (zh) * | 2011-05-19 | 2013-03-20 | 国际商业机器公司 | 用于管理和广播事件上下文的方法和系统 |
CN103309730A (zh) * | 2012-03-15 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 跨进程回调的方法及装置 |
CN103324542A (zh) * | 2013-07-17 | 2013-09-25 | 天脉聚源(北京)传媒科技有限公司 | 一种模块间调用的方法及装置 |
CN103502940A (zh) * | 2011-12-21 | 2014-01-08 | 华为技术有限公司 | 一种分布式系统中处理事务的方法、相关设备及系统 |
CN101853174B (zh) * | 2009-04-03 | 2014-03-12 | 中兴通讯股份有限公司 | 一种字符串资源定义与调用的同步方法及装置 |
CN103841134A (zh) * | 2012-11-22 | 2014-06-04 | 阿里巴巴集团控股有限公司 | 基于api发送、接收信息的方法、装置及系统 |
CN104410909A (zh) * | 2014-11-28 | 2015-03-11 | 江苏银河电子股份有限公司 | Linux系统软件模块在TVOS系统中的使用方法 |
CN104516740A (zh) * | 2013-09-26 | 2015-04-15 | 腾讯科技(深圳)有限公司 | 一种函数调用方法、装置及移动终端 |
CN104536839A (zh) * | 2014-12-26 | 2015-04-22 | 北京奇虎科技有限公司 | 进程间进行方法调用的方法及装置 |
CN110245027A (zh) * | 2018-09-21 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN112631815A (zh) * | 2021-03-10 | 2021-04-09 | 国能信控互联技术有限公司 | 基于com跨进程调用和共享内存的进程间通信方法和系统 |
-
2002
- 2002-07-25 CN CN 02125325 patent/CN1257455C/zh not_active Expired - Fee Related
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1949179B (zh) * | 2005-10-13 | 2010-06-30 | 国际商业机器公司 | 利用只读进程组件对服务进程建模的方法和系统 |
WO2008110111A1 (fr) * | 2007-03-13 | 2008-09-18 | Huawei Technologies Co., Ltd. | Procédé et dispositif pour appeler une bibliothèque dynamique et serveur de bibliothèque dynamique et dispositif mettant en œuvre un programme maître |
CN101853174B (zh) * | 2009-04-03 | 2014-03-12 | 中兴通讯股份有限公司 | 一种字符串资源定义与调用的同步方法及装置 |
CN101902458A (zh) * | 2010-02-21 | 2010-12-01 | 中国联合网络通信集团有限公司 | 跨主机进程间通信的方法、装置及系统 |
CN102103526A (zh) * | 2011-02-14 | 2011-06-22 | 博视联(苏州)信息科技有限公司 | 服务端和客户端间通过服务管理进行进程间通信的方法及系统 |
CN102981896A (zh) * | 2011-05-19 | 2013-03-20 | 国际商业机器公司 | 用于管理和广播事件上下文的方法和系统 |
US9003323B2 (en) | 2011-05-19 | 2015-04-07 | International Business Machines Corporation | Method for management and broadcasting an event context |
CN103502940A (zh) * | 2011-12-21 | 2014-01-08 | 华为技术有限公司 | 一种分布式系统中处理事务的方法、相关设备及系统 |
CN102591726B (zh) * | 2011-12-31 | 2014-04-09 | 青岛海信宽带多媒体技术有限公司 | 一种多进程通信方法 |
CN102591726A (zh) * | 2011-12-31 | 2012-07-18 | 青岛海信宽带多媒体技术有限公司 | 一种多进程通信方法 |
CN103309730A (zh) * | 2012-03-15 | 2013-09-18 | 腾讯科技(深圳)有限公司 | 跨进程回调的方法及装置 |
CN103309730B (zh) * | 2012-03-15 | 2016-03-16 | 腾讯科技(深圳)有限公司 | 跨进程回调的方法及装置 |
CN102662778A (zh) * | 2012-04-28 | 2012-09-12 | 杭州格畅科技有限公司 | 在线应用平台上应用间通信的回调应答方法、应用及在线应用平台 |
CN103841134A (zh) * | 2012-11-22 | 2014-06-04 | 阿里巴巴集团控股有限公司 | 基于api发送、接收信息的方法、装置及系统 |
CN103841134B (zh) * | 2012-11-22 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 基于api发送、接收信息的方法、装置及系统 |
CN103324542A (zh) * | 2013-07-17 | 2013-09-25 | 天脉聚源(北京)传媒科技有限公司 | 一种模块间调用的方法及装置 |
CN103324542B (zh) * | 2013-07-17 | 2017-04-12 | 天脉聚源(北京)传媒科技有限公司 | 一种模块间调用的方法及装置 |
CN104516740A (zh) * | 2013-09-26 | 2015-04-15 | 腾讯科技(深圳)有限公司 | 一种函数调用方法、装置及移动终端 |
CN104516740B (zh) * | 2013-09-26 | 2019-07-16 | 腾讯科技(深圳)有限公司 | 一种函数调用方法、装置及移动终端 |
CN104410909A (zh) * | 2014-11-28 | 2015-03-11 | 江苏银河电子股份有限公司 | Linux系统软件模块在TVOS系统中的使用方法 |
CN104410909B (zh) * | 2014-11-28 | 2018-01-09 | 江苏银河电子股份有限公司 | Linux系统软件模块在TVOS系统中的使用方法 |
CN104536839A (zh) * | 2014-12-26 | 2015-04-22 | 北京奇虎科技有限公司 | 进程间进行方法调用的方法及装置 |
CN104536839B (zh) * | 2014-12-26 | 2019-02-01 | 北京奇虎科技有限公司 | 进程间进行方法调用的方法及装置 |
CN110245027A (zh) * | 2018-09-21 | 2019-09-17 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN110245027B (zh) * | 2018-09-21 | 2024-05-14 | 浙江大华技术股份有限公司 | 一种进程间通信的方法和设备 |
CN112631815A (zh) * | 2021-03-10 | 2021-04-09 | 国能信控互联技术有限公司 | 基于com跨进程调用和共享内存的进程间通信方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN1257455C (zh) | 2006-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1257455C (zh) | 进程间调用门技术 | |
CN1049058C (zh) | 输入/输出方法、控制图形终瑞的处理系统及计算机系统 | |
CN1205537C (zh) | 用于为远程执行链接程序的方法 | |
KR101625276B1 (ko) | QoS 기반 바이너리 변환 및 애플리케이션 스트리밍 | |
JPH1069394A (ja) | オブジェクト指向言語プログラム由来の中間コードデータストリーム、またはマルチメディアデータストリームの処理システム及び方法 | |
CN1991768A (zh) | 与不同种类的资源通信的基于指令系统结构的内定序器 | |
CN1776610A (zh) | 用于把同步接口转换为异步接口的设备、系统、和方法 | |
US20080216064A1 (en) | Method, Architecture and Software of Meta-Operating System, Operating Systems and Applications For Parallel Computing Platforms | |
CN1809068A (zh) | Web应用程序架构 | |
CN101056385A (zh) | 视频通信方法、视频合成处理器、终端及服务器 | |
CN1632771A (zh) | 直接存储访问控制装置和图像处理系统以及传输方法 | |
CN1567301A (zh) | 访问数据库的方法及装置 | |
CN1503188A (zh) | 仿真方法和仿真装置 | |
US20120278814A1 (en) | Shared Drivers in Multi-Core Processor | |
Su | Architecting the future through heterogeneous computing | |
CN1811703A (zh) | 实时转换java应用程序的可视化外观的设备和方法 | |
CN1264090C (zh) | 调用构件对象功能的智能指针的封装方法 | |
CN1955933A (zh) | 数据处理设备和方法 | |
CN1956445A (zh) | 一种面向Web服务的门户组件的实现方法 | |
CN1320456C (zh) | 智能仪表界面自动生成方法 | |
CN101059804A (zh) | 提供网页的系统、方法及电脑可读取的媒体 | |
CN1656447A (zh) | 在corba环境中保证uml模型与其实现之间链接的软件开发工具 | |
CN1414492A (zh) | 基于移动Agent的资源封装和网络化集成方法 | |
CN1261873C (zh) | 一种控制外部程序的方法 | |
CN1123825C (zh) | 工具栏功能的扩充方法 |
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 | ||
C57 | Notification of unclear or unknown address | ||
DD01 | Delivery of document by public notice |
Addressee: Song Junshan Document name: payment instructions |
|
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |