CN105159786B - 一种进程间通信的方法和装置 - Google Patents

一种进程间通信的方法和装置 Download PDF

Info

Publication number
CN105159786B
CN105159786B CN201510388364.6A CN201510388364A CN105159786B CN 105159786 B CN105159786 B CN 105159786B CN 201510388364 A CN201510388364 A CN 201510388364A CN 105159786 B CN105159786 B CN 105159786B
Authority
CN
China
Prior art keywords
call request
handling result
unique identifier
window
address information
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
Application number
CN201510388364.6A
Other languages
English (en)
Other versions
CN105159786A (zh
Inventor
葛山
杨涛
易洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510388364.6A priority Critical patent/CN105159786B/zh
Publication of CN105159786A publication Critical patent/CN105159786A/zh
Application granted granted Critical
Publication of CN105159786B publication Critical patent/CN105159786B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Small-Scale Networks (AREA)
  • Telephonic Communication Services (AREA)

Abstract

本发明实施例提供了一种进程间通信的方法和装置,其中的应用于第二进程的方法具体包括:接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。本发明实施例能够在唯一识别第一进程的情况下,实现第二进程对于调用请求的准确处理;并且,能够确保第一进程接收到准确的处理结果。

Description

一种进程间通信的方法和装置
技术领域
本发明涉及通信技术领域,特别是涉及一种进程间通信的方法和一种进程间通信的装置。
背景技术
IPC(进程间通信,Inter-Process Communication),指至少两个进程间传送数据或信号的方法,IPC可以使不同的进程互相访问资源并进行协调工作。
现有一种游戏系统中进程间通信的方案,可由游戏平台进程向接入该游戏平台进程的多个游戏进程提供接口,以使各游戏进程通过调用该接口与该游戏平台进程进行通信。
然而,在同时接收到来自多个游戏进程的多个调用请求时,游戏平台进程很难从多个调用请求中识别出对应的游戏进程,这容易导致游戏平台进程返回错误响应的问题,在调用请求1来自游戏进程1时,游戏平台进程可能将调用请求1的处理结果发送给游戏进程2,这无疑影响了进程间通信的准确度和游戏系统的业务量。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的进程间通信的方法和相应的进程间通信的装置。
依据本发明的一个方面,提供了一种进程间通信的方法,应用于第二进程,包括:
接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;
向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。
可选地,所述依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理的步骤,包括:
依据所述唯一标识符,生成对应的操作区;
依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
可选地,所述操作区为共享内存区的内存空间段,所述处理结果的地址信息为所述内存空间段的地址信息。
可选地,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
可选地,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
根据本发明的另一方面,提供了一种进程间通信的方法,应用于第一进程,包括:
在所述第一进程启动后,生成唯一标识符;
向第二进程发送调用请求;其中,所述调用请求包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中携带所述调用请求的处理结果或者所述处理结果的地址信息。
可选地,所述在所述第一进程启动后,生成唯一标识符的步骤,包括:
采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
可选地,所述处理结果的地址信息为共享内存区的内存空间段的地址信息。
可选地,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
可选地,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
根据本发明的再一方面,提供了一种进程间通信的装置,应用于第二进程,包括:
接收模块,用于接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
处理模块,用于依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;及
发送模块,用于向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。
可选地,所述处理模块,包括:
生成子模块,用于依据所述唯一标识符,生成对应的操作区;
业务处理子模块,用于依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
可选地,所述操作区为共享内存区的内存空间段,所述处理结果的地址信息为所述内存空间段的地址信息。
可选地,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
可选地,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
根据本发明的又一方面,提供了一种进程间通信的装置,应用于第一进程,包括:
生成模块,用于在所述第一进程启动后,生成唯一标识符;
发送模块,用于向第二进程发送调用请求;其中,所述调用请求包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;及
接收模块,用于通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中携带所述调用请求的处理结果或者所述处理结果的地址信息。
可选地,所述生成模块,具体用于采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
可选地,所述处理结果的地址信息为共享内存区的内存空间段的地址信息。
可选地,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
可选地,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
根据本发明的进程间通信的方法和装置,第一进程向第二进程发送的调用请求中可以携带唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;其中,上述唯一标识符可用于唯一地标识第一进程,所述第一进程的业务信息可以作为业务处理的依据,上述第一进程的窗口句柄可用于作为第二进程返回调用请求的处理结果的依据,因此,本发明实施例能够在唯一识别第一进程的情况下,实现第二进程对于调用请求的准确处理;并且,能够确保第一进程接收到准确的处理结果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种进程间通信的方法实施例的步骤流程图;
图2示出了根据本发明一个实施例的一种进程间通信的方法实施例的步骤流程图;
图3示出了根据本发明一个实施例的一种游戏平台进程与游戏进程之间通信的方法示例的调用控制流程图;
图4示出了根据本发明一个实施例的一种进程间通信的装置实施例的结构框图;以及
图5示出了根据本发明一个实施例的一种进程间通信的装置实施例的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
参照图1,示出了根据本发明一个实施例的一种进程间通信的方法实施例的步骤流程图,应用于第一进程,具体可以包括如下步骤:
步骤101、在所述第一进程启动后,生成唯一标识符;
本发明实施例中,第一进程可用于表示调用进程,第二进程可用于表示被调用进程。在本发明的一种应用示例中,所述第二进程可以为平台进程,所述第一进程可以为所述平台进程所接入应用的进程。例如,游戏开发商提供的游戏进程可以作为第一进程,运行在游戏平台进程中,用户可以通过该游戏平台进程进入上述游戏进程,并且,在上述游戏进程的过程中,还可以通过游戏平台进程提供的接口实现对于上述游戏平台进程的调用。
在本发明的另一种应用示例中,游戏平台进程可以向游戏进程提供SDK(软件开发工具包,Software Development Kit),该SDK中可以包括有以DLL(动态链接库,DynamicLink Library)为载体的各种接口,以使游戏进程通过调用上述接口实现对应的功能,其中,上述接口可以为COM(组件对象模型,Component Object Mode接口)等。这样,在游戏进程在调用上述接口时,可以认为其向游戏平台进程发送了调用请求。可以理解,上述基于SDK的调用方式只是作为第一进程调用第二进程的调用方式一种示例,而不理解为本发明实施例对于上述调用方式的应用限制,实际上,本领域技术人员可以根据实际需要采用其他的调用方式。
在同时接收到来自多个第一进程的多个调用请求时,第二进程往往很难从多个调用请求中识别出对应的第一进程,这容易导致第二进程返回错误响应的问题。本发明实施例可以通过在调用请求中携带唯一标识符、第一进程的业务信息和所述第一进程的窗口句柄来解决上述技术问题。
本发明实施例中,唯一标识符可用于区分不同的第一进程,其对于第二进程而言具有唯一性,以使第二进程依据上述唯一标识符对调用请求进行区别处理。
在本发明的一种可选实施例中,上述唯一标识符可以为GUID(全局唯一标识符,globally unique identifier),GUID是一个128位整数(16字节),可用于所有需要唯一标识符的计算机。也即,GUID的特征为全局唯一性和可识别性,在形式上可以包括但不限于数字串、字符串、图像二维码等。
在本发明的另一种可选实施例中,所述在所述第一进程启动后,生成唯一标识符的步骤,具体可以包括:采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。例如,可以基于当前计算机的内存或硬盘特征以及诸如当前时间的随机数,采用预设的算法来生成GUID。本发明实施例在保证GUID的唯一性的情况下,对生成GUID的具体算法不加以限制。
步骤102、向第二进程发送调用请求;其中,所述调用请求具体可以包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
上述第一进程的业务信息具体可以包括:应用标识(APP KEY)或业务标识信息等信息。假设上述第一进程为游戏进程,则上述业务标识信息可以为游戏进程对应的游戏名称信息,上述接口密钥信息可以为游戏的应用标识信息,如游戏A这个应用的标识信息等。在有些情况下,同一游戏名称信息也可能对应多个进程,因此,本发明实施例可以通过所述唯一标识符和所述第一进程对应的游戏名称信息唯一地标识第一进程,且能够通过上述第一进程对应的游戏名称信息进行调用请求的业务处理。
在具体实现中,上述第一进程的窗口句柄可以在第一进程启动后获得,其具体可以包括:上述第一进程的主窗口的句柄。例如,可以使用AfxGetMainWnd函数获取MFC(微软基础类库,Microsoft Foundation Classes)程序中的主窗口的指针,AfxGetMainWnd()->m_hWnd则为主窗口的句柄。可以理解,本发明实施例获取第一进程的窗口句柄的具体方式不加以限制。
可以理解,除了在调用请求中携带所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄信息外,本领域技术人员还可以依据实际需要,在上述调用请求中携带业务操作信息,该业务操作信息中可以包括具体的业务参数以实现相应的业务操作,本发明实施例对上述调用请求携带的具体信息不加以限制。
在本发明的一种可选实施例中,所述调用请求可以为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。在实际应用中,上述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄可被携带在上述接口的参数中,并被通过上述接口规定的IPC通信方式发送给第二进程。
步骤103、通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中可以携带上述调用请求的处理结果或者所述处理结果的地址信息。
在具体实现中,上述窗口消息具体可以包括:符合窗口消息标准的Windows消息以及专用的WM_COPYDATA消息等。
以WM_COPYDATA消息为例,第二进程可以通过SendMessage(第一进程的窗口句柄,WM_COPYDATA,(WPARAM)第二进程的窗口句柄,(LPARAM)&CopyData)向第一进程的窗口句柄发送窗口消息,其中,LPARAM可以为指向一个COPYDATASTRUCT类型结构体的指针,该结构体中包含了需要传递的数据信息。第一进程可以通过COPYDATASTRUCT*pCopyData=(COPYDATASTRUCT*)lParam接收上述窗口消息。
本发明实施例中,上述调用请求的处理结果可以被直接携带在上述窗口消息中,如可以在COPYDATASTRUCT类型结构体中携带上述处理结果。或者,上述调用请求的处理结果可以被存放至内存区,则第一进程可以通过上述处理结果的地址信息访问相应的内存区。
在本发明的一种可选实施例中,所述处理结果的地址信息可以为共享内存区的内存空间段的地址信息。其中,可以将不同的处理结果(例如处理结果1和处理结果2)可以分别存放在不同的相应的内存空间段(例如内存空间段1和内存空间段2),因此能够在保证读写数据不错乱的同时提高进程的执行效率和进程的通信效率。
综上,本发明实施例中,第一进程向第二进程发送的调用请求中可以携带唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;其中,上述唯一标识符可用于唯一地标识第一进程,所述第一进程的业务信息可以作为业务处理的依据,上述第一进程的窗口句柄可用于作为第二进程返回调用请求的处理结果的依据,因此,本发明实施例能够在唯一识别第一进程的情况下,实现第二进程对于调用请求的准确处理;并且,能够确保第一进程接收到准确的处理结果。
参照图2,示出了根据本发明一个实施例的一种进程间通信的方法实施例的步骤流程图,应用于第二进程,具体可以包括如下步骤:
步骤201、接收来自第一进程的调用请求;其中,所述调用请求具体可以包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
在本发明的一种应用示例中,所述第二进程可以为平台进程,所述第一进程可以为所述平台进程所接入应用的进程。
在本发明的另一种应用示例中,所述调用请求可以为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
可以理解,除了在调用请求中携带所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄信息外,本领域技术人员还可以依据实际需要,在上述调用请求中携带业务操作信息,该业务操作信息中可以包括具体的业务参数以实现相应的业务操作,本发明实施例对上述调用请求携带的具体信息不加以限制。
步骤202、依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;
本发明实施例中,上述唯一标识符可用于唯一地标识第一进程,所述第一进程的业务信息可以作为业务处理的依据,从而可以在唯一识别第一进程的情况下,实现第二进程对于调用请求的准确处理。
在本发明的一种可选实施例中,所述依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理的步骤,具体可以包括:
步骤S11、依据所述唯一标识符,生成对应的操作区;
步骤S21、依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
上述操作区可用于存储所述唯一标识符对应调用请求的处理数据,其中,所述处理数据具体可以包括:处理过程数据和处理结果等。
假设第一进程的业务信息为游戏名称信息,则游戏平台进程可以依据该游戏名称信息对应游戏的特性对所述调用请求进行业务处理,本发明实施例对于对所述调用请求进行业务处理的具体过程不加以限制。
步骤203、向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中可以携带所述处理结果或者所述处理结果的地址信息。
本发明实施例中,上述调用请求的处理结果可以被直接携带在上述窗口消息中,如可以在COPYDATASTRUCT类型结构体中携带上述处理结果。
或者,上述调用请求的处理结果可以被存放至内存区。例如,在本发明的一种可选实施例中,所述操作区可以为共享内存区的内存空间段,所述处理结果的地址信息可以为所述内存空间段的地址信息。
在本发明的另一种可选实施例中,第二进程可以将上述处理结果序列化至其虚拟地址空间的内存空间段,所述第二进程可以将上述处理结果序列化至其虚拟地址空间的内存空间段的步骤,具体可以包括:
步骤S21、对处理结果进行序列化操作,并将序列化操作完毕后的数据存储至相应的序列化内存;所述序列化内存的序列化对象中记录有序列化内存的首地址和当前地址;
具体地,可以采用重载运算符对处理结果进行序列化操作,其中不同数据类型的数据对应不同的重载运算符。
步骤S22、分配长度与所述序列化内存的长度相等的相应的内存空间段;
步骤S23、将所述序列化内存中存储的数据拷贝至该内存空间段。
本可选实施例中,第二进程在需要向第一进程返回处理结果时,可以将该处理结果放至动态申请的内存空间段;由于该内存空间段是独立的,除了窗口消息的接收方外,其他第一进程并不知晓该内存空间段的地址信息,因此,本发明实施例能够在保证读写数据不错乱的同时提高进程的执行效率和进程的通信效率;并且,相对于数组、队列等预先申请的内存资源,本发明实施例动态申请内存空间段,还能够有效节省内存空间。
综上,本发明实施例中,第一进程向第二进程发送的调用请求中可以携带唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;其中,上述唯一标识符可用于唯一地标识第一进程,所述第一进程的业务信息可以作为业务处理的依据,上述第一进程的窗口句柄可用于作为第二进程返回调用请求的处理结果的依据,因此,本发明实施例能够在唯一识别第一进程的情况下,实现第二进程对于调用请求的准确处理;并且,能够确保第一进程接收到准确的处理结果。
为使本领域技术人员更好地理解本发明实施例,参照图3,示出了根据本发明一个实施例的一种游戏平台进程与游戏进程之间通信的方法示例的调用控制流程图,该示例涉及,游戏平台进程与游戏A中进程A1和进程A2、以及游戏B中进程B1和进程B2、以及游戏X的进程之间的通信流程,具体可以包括如下步骤:
步骤S1、游戏A中进程A1和进程A2、及游戏B中进程B1和进程B2分别在启动后,生成对应的唯一标记码AX1、AX2、BX1和BX2,获得各自窗口句柄;
步骤S2、游戏A中进程A1和进程A2、及游戏B中进程B1和进程B2分别向游戏平台进程发送调用请求;其中,进程A1的第一调用请求具体可以包括:AX1、进程A1的窗口句柄1和APPKEY(A),进程A2的第二调用请求具体可以包括:AX2、进程A2的窗口句柄2和APPKEY(A),进程B1的第三调用请求具体可以包括:BX1、进程B1的窗口句柄3和APPKEY(B),进程B2的第四调用请求具体可以包括:BX2、进程B2的窗口句柄4和APPKEY(B);
其中,APPKEY(A)和APPKEY(B)分别为游戏A和游戏B的应用标识;
步骤S3、游戏平台进程在接收到上述第一调用请求后,在APPKEY(A)对应的数据集合中建立AX1对应的第一操作区,依据APPKEY(A)对第一调用请求进行业务处理,将对应的第一处理结果存放至第一操作区,并向进程A1的窗口句柄1发送第一窗口消息;其中,所述第一窗口消息中可以携带第一处理结果或者所述第一处理结果的地址信息;
步骤S4、游戏平台进程在接收到上述第二调用请求后,在APPKEY(A)对应的数据集合中建立AX2对应的第二操作区,依据APPKEY(A)对第二调用请求进行业务处理,将对应的第二处理结果存放至第二操作区,并向进程A2的窗口句柄2发送第二窗口消息;其中,所述第二窗口消息中可以携带第二处理结果或者所述第二处理结果的地址信息;
步骤S5、游戏平台进程在接收到上述第三调用请求后,在APPKEY(B)对应的数据集合中建立BX1对应的第三操作区,依据APPKEY(B)对第三调用请求进行业务处理,将对应的第三处理结果存放至第三操作区,并向进程B1的窗口句柄3发送第三窗口消息;其中,所述第三窗口消息中可以携带第三处理结果或者所述第三处理结果的地址信息;
步骤S6、游戏平台进程在接收到上述第四调用请求后,在APPKEY(B)对应的数据集合中建立BX2对应的第四操作区,依据APPKEY(B)对第四调用请求进行业务处理,将对应的第四处理结果存放至第四操作区,并向进程B2的窗口句柄4发送第四窗口消息;其中,所述第四窗口消息中可以携带第四处理结果或者所述第四处理结果的地址信息.
在具体实现中,游戏平台进程可以采用多线程来执行步骤S3-步骤S6,由此可以实现不同游戏的识别,且可以实现游戏中不同进程的识别,从而可以在唯一识别游戏进程的情况下,实现游戏平台进程对于调用请求的准确处理;并且,能够确保游戏进程接收到准确的处理结果。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图4,示出了根据本发明一个实施例的一种进程间通信的装置实施例的结构框图,应用于第二进程,具体可以包括如下模块:
接收模块401,用于接收来自第一进程的调用请求;其中,所述调用请求具体可以包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
处理模块402,用于依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;及
发送模块403,用于向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中可以携带所述处理结果或者所述处理结果的地址信息。
在具体实现中,所述第二进程可以为平台进程,所述第一进程可以为所述平台进程所接入应用的进程。
在本发明的一种可选实施例中,所述调用请求可以为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
在本发明的另一种可选实施例中,所述处理模块402,具体可以包括:
生成子模块,用于依据所述唯一标识符,生成对应的操作区;
业务处理子模块,用于依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
在本发明的再一种可选实施例中,所述操作区可以为共享内存区的内存空间段,所述处理结果的地址信息可以为所述内存空间段的地址信息。
参照图5,示出了根据本发明一个实施例的一种进程间通信的装置实施例的结构框图,应用于第一进程,具体可以包括如下模块:
生成模块501,用于在所述第一进程启动后,生成唯一标识符;
发送模块502,用于向第二进程发送调用请求;其中,所述调用请求具体可以包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;及
接收模块503,用于通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中可以携带所述调用请求的处理结果或者所述处理结果的地址信息。
在具体实现中,所述第二进程可以为平台进程,所述第一进程可以为所述平台进程所接入应用的进程。
在本发明的一种可选实施例中,所述调用请求可以为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
在本发明的另一种可选实施例中,所述生成模块501,可具体用于采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
在本发明的再一种可选实施例中,所述处理结果的地址信息可以为共享内存区的内存空间段的地址信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的进程间通信的方法和装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种进程间通信的方法,应用于第二进程,包括:
接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;
向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。
A2、如A1所述的方法,所述依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理的步骤,包括:
依据所述唯一标识符,生成对应的操作区;
依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
A3、如A2所述的方法,所述操作区为共享内存区的内存空间段,所述处理结果的地址信息为所述内存空间段的地址信息。
A4、如A1至A3中任一所述的方法,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
A5、如A1至A3中任一所述的方法,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
本发明还公开了B6、一种进程间通信的方法,应用于第一进程,包括:
在所述第一进程启动后,生成唯一标识符;
向第二进程发送调用请求;其中,所述调用请求包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中携带所述调用请求的处理结果或者所述处理结果的地址信息。
B7、如B6所述的方法,所述在所述第一进程启动后,生成唯一标识符的步骤,包括:
采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
B8、如B6或B7所述的方法,所述处理结果的地址信息为共享内存区的内存空间段的地址信息。
B9、如B6或B7所述的方法,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
B10、如B6或B7所述的方法,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
本发明还公开了C11、一种进程间通信的装置,应用于第二进程,包括:
接收模块,用于接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
处理模块,用于依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;及
发送模块,用于向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。
C12、如C11所述的装置,所述处理模块,包括:
生成子模块,用于依据所述唯一标识符,生成对应的操作区;
业务处理子模块,用于依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
C13、如C12所述的装置,所述操作区为共享内存区的内存空间段,所述处理结果的地址信息为所述内存空间段的地址信息。
C14、如C11至C13中任一所述的装置,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
C15、如C11至C13中任一所述的装置,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
本发明还公开了D16、一种进程间通信的装置,应用于第一进程,包括:
生成模块,用于在所述第一进程启动后,生成唯一标识符;
发送模块,用于向第二进程发送调用请求;其中,所述调用请求包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;及
接收模块,用于通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中携带所述调用请求的处理结果或者所述处理结果的地址信息。
D17、如D16所述的装置,所述生成模块,具体用于采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
D18、如D16或D17所述的装置,所述处理结果的地址信息为共享内存区的内存空间段的地址信息。
D19、如D16或D17所述的装置,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
D20、如D16或D17所述的装置,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。

Claims (22)

1.一种进程间通信的方法,应用于第二进程,包括:
接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;
向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。
2.如权利要求1所述的方法,其特征在于,所述依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理的步骤,包括:
依据所述唯一标识符,生成对应的操作区;
依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
3.如权利要求2所述的方法,其特征在于,所述操作区为共享内存区的内存空间段,所述处理结果的地址信息为所述内存空间段的地址信息。
4.如权利要求1至3中任一所述的方法,其特征在于,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
5.如权利要求1至3中任一所述的方法,其特征在于,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
6.一种进程间通信的方法,应用于第一进程,包括:
在所述第一进程启动后,生成唯一标识符;
向第二进程发送调用请求;其中,所述调用请求包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中携带所述调用请求的处理结果或者所述处理结果的地址信息。
7.如权利要求6所述的方法,其特征在于,所述在所述第一进程启动后,生成唯一标识符的步骤,包括:
采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
8.如权利要求6或7所述的方法,其特征在于,所述处理结果的地址信息为共享内存区的内存空间段的地址信息。
9.如权利要求6或7所述的方法,其特征在于,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
10.如权利要求6或7所述的方法,其特征在于,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
11.一种进程间通信的装置,应用于第二进程,包括:
接收模块,用于接收来自第一进程的调用请求;其中,所述调用请求包括:唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;
处理模块,用于依据所述唯一标识符和所述第一进程的业务信息,对所述调用请求进行处理,得到相应的处理结果;及
发送模块,用于向所述第一进程的窗口句柄发送窗口消息;其中,所述窗口消息中携带所述处理结果或者所述处理结果的地址信息。
12.如权利要求11所述的装置,其特征在于,所述处理模块,包括:
生成子模块,用于依据所述唯一标识符,生成对应的操作区;
业务处理子模块,用于依据所述第一进程的业务信息,对所述调用请求进行业务处理,并将对应的处理结果存放至所述操作区。
13.如权利要求12所述的装置,其特征在于,所述操作区为共享内存区的内存空间段,所述处理结果的地址信息为所述内存空间段的地址信息。
14.如权利要求11至13中任一所述的装置,其特征在于,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
15.如权利要求11至13中任一所述的装置,其特征在于,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
16.一种进程间通信的装置,应用于第一进程,包括:
生成模块,用于在所述第一进程启动后,生成唯一标识符;
发送模块,用于向第二进程发送调用请求;其中,所述调用请求包括:所述唯一标识符、所述第一进程的业务信息和所述第一进程的窗口句柄;及
接收模块,用于通过所述第一进程的窗口句柄接收来自所述第二进程的窗口消息;其中,所述窗口消息中携带所述调用请求的处理结果或者所述处理结果的地址信息。
17.如权利要求16所述的装置,其特征在于,所述生成模块,具体用于采用基于静态信息和随机数的全局唯一标识符算法,生成全局唯一标识符。
18.如权利要求16或17所述的装置,其特征在于,所述处理结果的地址信息为共享内存区的内存空间段的地址信息。
19.如权利要求16或17所述的装置,其特征在于,所述第二进程为平台进程,所述第一进程为所述平台进程所接入应用的进程。
20.如权利要求16或17所述的装置,其特征在于,所述调用请求为所述第一进程针对所述第二进程提供的软件开发工具包SDK接口的调用请求。
21.一种计算机可读介质,其中存储了计算机程序,所述计算机程序包括计算机可读代码,当所述计算机可读代码在设备上运行时,导致所述设备执行根据权利要求1-10中的任一项所述的进程间通信的方法。
22.一种进程间通信的装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-10中任一项所述的进程间通信的方法。
CN201510388364.6A 2015-07-03 2015-07-03 一种进程间通信的方法和装置 Active CN105159786B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510388364.6A CN105159786B (zh) 2015-07-03 2015-07-03 一种进程间通信的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510388364.6A CN105159786B (zh) 2015-07-03 2015-07-03 一种进程间通信的方法和装置

Publications (2)

Publication Number Publication Date
CN105159786A CN105159786A (zh) 2015-12-16
CN105159786B true CN105159786B (zh) 2018-10-30

Family

ID=54800648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510388364.6A Active CN105159786B (zh) 2015-07-03 2015-07-03 一种进程间通信的方法和装置

Country Status (1)

Country Link
CN (1) CN105159786B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105561580A (zh) * 2015-12-24 2016-05-11 北京奇虎科技有限公司 一种基于游戏平台的网络防护方法及装置
CN106162075A (zh) * 2016-06-17 2016-11-23 浙江万朋教育科技股份有限公司 一种单台pc实现多路视频输入的稳定解决方法
CN106453592B (zh) * 2016-11-02 2020-05-08 华为技术有限公司 异步调用处理方法、设备及分布式系统
CN108090347B (zh) * 2016-11-23 2022-01-14 阿里巴巴集团控股有限公司 一种数据处理方法和系统
CN107688502B (zh) * 2017-08-18 2021-04-06 苏州科达特种视讯有限公司 进程间通信方法及装置
CN109558739B (zh) * 2017-09-26 2022-04-15 腾讯科技(深圳)有限公司 程序运行方法、装置、终端及可读介质
CN110275782B (zh) * 2018-03-13 2023-08-29 阿里巴巴集团控股有限公司 数据处理方法及装置
CN110377438B (zh) * 2019-07-22 2021-09-03 广州小鹏汽车科技有限公司 跨进程通信接口的路由方法、装置和系统
CN112667388B (zh) * 2021-03-16 2021-06-01 荣耀终端有限公司 一种操作系统的保护方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662775A (zh) * 2012-03-29 2012-09-12 奇智软件(北京)有限公司 一种进程通信方法和装置
CN103150220A (zh) * 2011-12-07 2013-06-12 腾讯科技(深圳)有限公司 进程间的通信方法和通信系统
CN103197951A (zh) * 2012-01-04 2013-07-10 腾讯科技(深圳)有限公司 一种搭建应用运行环境的方法及装置
CN103631664A (zh) * 2013-12-09 2014-03-12 北京奇虎科技有限公司 一种进程间的通信方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6151946B2 (ja) * 2013-03-28 2017-06-21 キヤノン株式会社 情報処理システム、情報処理装置およびそれらの制御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103150220A (zh) * 2011-12-07 2013-06-12 腾讯科技(深圳)有限公司 进程间的通信方法和通信系统
CN103197951A (zh) * 2012-01-04 2013-07-10 腾讯科技(深圳)有限公司 一种搭建应用运行环境的方法及装置
CN102662775A (zh) * 2012-03-29 2012-09-12 奇智软件(北京)有限公司 一种进程通信方法和装置
CN103631664A (zh) * 2013-12-09 2014-03-12 北京奇虎科技有限公司 一种进程间的通信方法和装置

Also Published As

Publication number Publication date
CN105159786A (zh) 2015-12-16

Similar Documents

Publication Publication Date Title
CN105159786B (zh) 一种进程间通信的方法和装置
US9015672B2 (en) Interface simulator for test rig in data distribution service
US9529628B2 (en) Binary editing of applications executed by virtual machines
Le Muzic et al. Illustrative visualization of molecular reactions using omniscient intelligence and passive agents
CN110008009A (zh) 在运行时绑定常量以提高资源利用率
WO2012010599A1 (en) Managing and optimizing workflows among computer applications
JP2014525622A (ja) オペレーティングシステムのネイティブアプリケーションプログラミングインターフェイスのメタデータを用いた記述
TW201308210A (zh) 高度平行式處理作業的登錄和執行
KR102202149B1 (ko) 선택 가능한 비교 속성들을 갖는 부동 소수점 명령
US11853749B2 (en) Managing container images in groups
KR20060047998A (ko) 문서에 문맥 정보를 삽입하는 방법 및 시스템
CN107577589A (zh) 定时测试广告投放接口的方法及装置
CN110140108A (zh) 处理兄弟调用
CN108986013A (zh) 间接参数缓冲区
US20190026164A1 (en) Method and system for invoking event-based package module
US20130212598A1 (en) Dependency informer
CN111444449A (zh) 一种Http请求处理方法及装置
Beidler Data Structures and Algorithms: An Object-oriented Approach Using Ada 95
Zschörnig et al. A cloud-based Analytics-Platform for user-centric Internet of Things domains–Prototype and Performance Evaluation
US8146109B2 (en) Version resiliency for a host application and custom code
CA3199425A1 (en) Graph based event-driven computing
US10761914B2 (en) Replacing generated procedure calls with generated inter-process communication
Eggel et al. Distributed container-based evaluation platform for private/large datasets
Schwab et al. Palais: A 3d simulation environment for artificial intelligence in games
Sanner The Python interpreter as a framework for integrating scientific computing software-components

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220718

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.

TR01 Transfer of patent right