程序通信方法技术

技术编号:2829046 阅读:239 留言:0更新日期:2012-04-11 18:40
一种程序通信方法,通过操作系统的驱动程序以在第一程序和第二程序间进行数据通信。当驱动程序初始化时,开启自定义数据结构于驱动程序,第一程序和第二程序对自定义数据结构的数据变量进行读取或写入操作,以在第一程序和第二程序之间进行数据通信。本发明专利技术实现了不同程序间的通信,而不论各程序是否位于同一对话,克服了已知技术的通过共享存储器进行通信的缺陷。

【技术实现步骤摘要】

本专利技术涉及一种数据通信方法,尤其涉及一种程序之间数据通信方法。
技术介绍
共享存储器是窗口操作系统(Windows,微软公司的软件产品)中实现程 序间相互通信的方法。其具体实现方法如下 一个程序通过CreatFileMapping 函数在存储器中申请部分空间,另一程序通过OpenFileMapping函数获得此 存储器空间的句柄(Handle),接着两个程序通过对此存储器空间进行读写操 作以实现程序间通信。然而,当两个需要通信的程序由不同用户登录操作系 统后执行,则无法通过共享存储器的方法进行通信。因为它们位于操作系统 的不同对话(Session)中, 一个程序无法获取不同对话中另一个程序创建的共 享存储器的句柄。通常情况下,用户登录操作系统后,通过用户界面与服务程序交互。已 知技术的用户界面与服务程序通信方式包括将用户界面与服务程序编写在 同一程序中,或者让用户界面通过共享存储器的方式与服务程序交互。然而, 前者要求用户必需在本地登录操作系统才可以操作用户界面,远程登录操作 系统将导致用户无法使用用户界面;后者则只可以让第一个登录操作系统的 用户操作用户界面,因为服务程序和第一个登录操作系统的用户运行在同一 对话中,对于其他后登录操作系统的用户,因为其与服务程序不在同一对话 中,所以其用户界面无法通过共享存储器的方式与服务程序通信。因此,已知技术的主要缺点如下当两个程序位于不同对话中,则无法 实现程序间的通信。
技术实现思路
为了解决上述已知技术中的问题与缺陷,本专利技术的目的在于提供一种程 序通信方法。本专利技术所提供的一种,通过操作系统的驱动程序以在第一 程序和第二程序之间通信,此方法包含以下步骤初始化驱动程序,开启自定义数据结构于驱动程序;以及第一程序和第二程序对自定义数据结构的数据变量进行读取或写入操 作,以在第一程序和第二程序之间通信。其中对自定义数据结构的数据变量进行写入操作时进一步包含锁定写 入操作请求的数据变量;将写入操作请求的数据写入数据变量;以及解除对 数据变量的锁定。其中自定义数据结构在驱动程序初始化时初始化。其中第一程序和第二程序位于不同对话。其中操作系统为窗口操作系统。综上所述,本专利技术实现了不同程序间的通信,而不论各程序是否位于同 一对话,克服了已知技术的通过共享存储器进行通信的缺陷。附图说明图l为本专利技术的流程图;以及图2为依照本专利技术的实施例的结构方块图。其中,附图标记说明如下200 驱动程序202PCIE数据结构204 读写接口206PCIE服务程序208 第一监控程序210 第二监控程序步骤IOO初始化驱动程序,开启自定义数据结构步骤102是否为写入操作步骤104读取数据步骤106是否被锁定步骤108等待锁定解除步骤IIO锁定数据变量步骤112写入数据步骤114解除锁定具体实施例以下,将结合附图部分对本专利技术的优选实施例作详细说明。 图l所示为本专利技术的流程图。首先,在步骤100中,初始 化驱动程序,并在驱动程序中开启自定义数据结构。在窗口操作系统的启动 程序中,包含一种被称为DeviceExtension的自定义数据结构,其在驱动程序 初始化时被开启,且可以通过驱动程序的输入输出接口被外部程序访问。本 专利技术在窗口操作系统的驱动程序中对DeviceExtension数据结构进行自定义, 在DeviceExtension数据结构中声明多个数据变量用以在程序间进行数据通 信,其中各数据变量可依照实际需要而被定义成不同类型和长度。驱动程序 的DriverEntry函数用以将各数据变量依照实际需要进行初始化,其初始化过 程与驱动程序的初始化过程同步。驱动程序还包含DeviceIOControl函数作 为输入输出控制接口提供给应用程序,对DeviceExtension数据结构的访问通 过DeviceIOControl函数来控制。当驱动程序初始化完毕后,各程序可通过对DeviceExtension数据结构的 数据变量进行读取或写入操作以实现程序间的数据通信。当程序通过 DeviceIOControl函数对DeviceExtension数据结构的数据变量请求操作时, 在步骤102中,驱动程序判断此操作是否为写入操作?当此操作为读取操作 时,在步骤104中,则直接读取此操作请求的数据变量的数据,并将读取的 数据返回至程序。当此操作为写入操作时,在步骤106中,首先判断此操作请求的数据变 量是否被锁定?如果数据变量被锁定,说明上一写入操作还未执行完毕,在 步骤108中,则需等待上一写入操作执行完毕,以解除对数据变量的锁定。 当数据变量未锁定,或上一写入操作执行完毕并解除对数据变量的锁定,在 步骤110中,此写入操作锁定请求的数据变量,以防止其它写入操作在此写 入操作执行完毕前将数据写入此写入操作请求的数据变量。接着,在步骤112 中,执行此写入操作,将数据写入数据变量。此写入操作执行完毕后,在步 骤114中,解除对数据变量的锁定。如上所述,本专利技术通过在驱动程序中自定义数据结构来实现程序间通 信,因而突破了程序必需位于同一对话的限制,克服了已知技术的通过共享 存储器进行通信的缺陷。以下将结合图2对本专利技术的具体实施例进行说明。图2所示为一种支援 快速外围设备接口(Peripheral Components Interface-Express, PCIE)热插拔 (Hotplug)系统的程序通信结构方块图。如图所示,系统的内核态包含PC正 热插拔驱动程序200,其中驱动程序200进一步包含用户自定义的PCIE数 据结构202和读写接口 204。系统的用户态包括PC正服务程序206、第一 监控程序208以及第二监控程序210。在操作系统中,应用程序均通过相应 程序来完成操作,为了描述方便,以下涉及程序的部分均通过与程序对应的 程序来进行说明。驱动程序200用以控制PCIE槽(Slot)的基本操作,以及实现PCIE服务 程序206和第一监控程序208、第二监控程序210之间的数据通信。PCIE服 务程序206用以处理PCIE槽的工作逻辑,第一监控程序208和第二监控程 序210则通过PC正服务程序206处理的工作逻辑来操作PCIE槽。g卩,第一 监控程序208或第二监控程序210向PC正服务程序206请求操作,PC正服 务程序206依照PC正槽的工作逻辑将请求的操作分解为PCIE基本操作并传 递至驱动程序200,驱动程序200依照分解后的基本操作对PCIE槽执行相 应操作。其中,PCIE服务程序206、第一监控程序208以及第二监控程序 210可位于同一对话,或分别位于三个不同对话,且第一监控程序208和第 二监控程序210可由不同用户从本地或远程登录操作系统。PCIE服务程序 206、第一监控程序208以及第二监控程序210的数据通信通过驱动程序200 的PCIE数据结构202来实现。驱动程序200不断更新PC正数据结构202 储存的数据,以让第一监控程序208和第二监控程序210实现数据同步。为了实现上述目的,在驱动程序200初始化时,开启用户自定义的PCIE 数据结构202,并通过驱动程序200的DriverEntry函数初始化PCIE数据结 构202的各数据变量。在本专利技术的实施例中,PCI本文档来自技高网...

【技术保护点】
一种程序通信方法,通过操作系统的驱动程序以在第一程序和第二程序的之间通信,该方法包含以下步骤:初始化所述驱动程序,开启自定义数据结构于所述驱动程序;以及所述第一程序和所述第二程序对所述自定义数据结构的数据变量进行读取或写入操 作,以在所述第一程序和所述第二程序之间通信。

【技术特征摘要】
1.一种程序通信方法,通过操作系统的驱动程序以在第一程序和第二程序的之间通信,该方法包含以下步骤初始化所述驱动程序,开启自定义数据结构于所述驱动程序;以及所述第一程序和所述第二程序对所述自定义数据结构的数据变量进行读取或写入操作,以在所述第一程序和所述第二程序之间通信。2. 如权利要求1所述的程序通信方法,其中对所述自定义数据结构的所 述数据变量进行写入操作时...

【专利技术属性】
技术研发人员:李晨亓英军陈玄同刘文涵
申请(专利权)人:英业达股份有限公司
类型:发明
国别省市:71[中国|台湾]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1