CN101201754A - 程序通信方法 - Google Patents

程序通信方法 Download PDF

Info

Publication number
CN101201754A
CN101201754A CNA2006101646859A CN200610164685A CN101201754A CN 101201754 A CN101201754 A CN 101201754A CN A2006101646859 A CNA2006101646859 A CN A2006101646859A CN 200610164685 A CN200610164685 A CN 200610164685A CN 101201754 A CN101201754 A CN 101201754A
Authority
CN
China
Prior art keywords
program
pcie
driver
data
data structure
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.)
Pending
Application number
CNA2006101646859A
Other languages
English (en)
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.)
Inventec Corp
Original Assignee
Inventec Corp
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 Inventec Corp filed Critical Inventec Corp
Priority to CNA2006101646859A priority Critical patent/CN101201754A/zh
Publication of CN101201754A publication Critical patent/CN101201754A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Stored Programmes (AREA)

Abstract

一种程序通信方法,通过操作系统的驱动程序以在第一程序和第二程序间进行数据通信。当驱动程序初始化时,开启自定义数据结构于驱动程序,第一程序和第二程序对自定义数据结构的数据变量进行读取或写入操作,以在第一程序和第二程序之间进行数据通信。本发明实现了不同程序间的通信,而不论各程序是否位于同一对话,克服了已知技术的通过共享存储器进行通信的缺陷。

Description

程序通信方法
技术领域
本发明涉及一种数据通信方法,尤其涉及一种程序之间数据通信方法。
背景技术
共享存储器是窗口操作系统(Windows,微软公司的软件产品)中实现程序间相互通信的方法。其具体实现方法如下:一个程序通过CreatFileMapping函数在存储器中申请部分空间,另一程序通过OpenFileMapping函数获得此存储器空间的句柄(Handle),接着两个程序通过对此存储器空间进行读写操作以实现程序间通信。然而,当两个需要通信的程序由不同用户登录操作系统后执行,则无法通过共享存储器的方法进行通信。因为它们位于操作系统的不同对话(Session)中,一个程序无法获取不同对话中另一个程序创建的共享存储器的句柄。
通常情况下,用户登录操作系统后,通过用户界面与服务程序交互。已知技术的用户界面与服务程序通信方式包括:将用户界面与服务程序编写在同一程序中,或者让用户界面通过共享存储器的方式与服务程序交互。然而,前者要求用户必需在本地登录操作系统才可以操作用户界面,远程登录操作系统将导致用户无法使用用户界面;后者则只可以让第一个登录操作系统的用户操作用户界面,因为服务程序和第一个登录操作系统的用户运行在同一对话中,对于其他后登录操作系统的用户,因为其与服务程序不在同一对话中,所以其用户界面无法通过共享存储器的方式与服务程序通信。
因此,已知技术的主要缺点如下:当两个程序位于不同对话中,则无法实现程序间的通信。
发明内容
为了解决上述已知技术中的问题与缺陷,本发明的目的在于提供一种程序通信方法。
本发明所提供的一种程序通信方法,通过操作系统的驱动程序以在第一程序和第二程序之间通信,此方法包含以下步骤:
初始化驱动程序,开启自定义数据结构于驱动程序;以及
第一程序和第二程序对自定义数据结构的数据变量进行读取或写入操作,以在第一程序和第二程序之间通信。
其中对自定义数据结构的数据变量进行写入操作时进一步包含:锁定写入操作请求的数据变量;将写入操作请求的数据写入数据变量;以及解除对数据变量的锁定。
其中自定义数据结构在驱动程序初始化时初始化。
其中第一程序和第二程序位于不同对话。
其中操作系统为窗口操作系统。
综上所述,本发明实现了不同程序间的通信,而不论各程序是否位于同一对话,克服了已知技术的通过共享存储器进行通信的缺陷。
附图说明
图1为本发明的程序通信方法流程图;以及
图2为依照本发明的实施例的结构方块图。
其中,附图标记说明如下:
200  驱动程序
202  PCIE数据结构
204  读写接口
206  PCIE服务程序
208  第一监控程序
210  第二监控程序
步骤100 初始化驱动程序,开启自定义数据结构
步骤102 是否为写入操作
步骤104 读取数据
步骤106 是否被锁定
步骤108 等待锁定解除
步骤110 锁定数据变量
步骤112 写入数据
步骤114 解除锁定
具体实施例
以下,将结合附图部分对本发明的优选实施例作详细说明。
图1所示为本发明的程序通信方法流程图。首先,在步骤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)系统的程序通信结构方块图。如图所示,系统的内核态包含PCIE热插拔驱动程序200,其中驱动程序200进一步包含用户自定义的PCIE数据结构202和读写接口204。系统的用户态包括:PCIE服务程序206、第一监控程序208以及第二监控程序210。在操作系统中,应用程序均通过相应程序来完成操作,为了描述方便,以下涉及程序的部分均通过与程序对应的程序来进行说明。
驱动程序200用以控制PCIE槽(Slot)的基本操作,以及实现PCIE服务程序206和第一监控程序208、第二监控程序210之间的数据通信。PCIE服务程序206用以处理PCIE槽的工作逻辑,第一监控程序208和第二监控程序210则通过PCIE服务程序206处理的工作逻辑来操作PCIE槽。即,第一监控程序208或第二监控程序210向PCIE服务程序206请求操作,PCIE服务程序206依照PCIE槽的工作逻辑将请求的操作分解为PCIE基本操作并传递至驱动程序200,驱动程序200依照分解后的基本操作对PCIE槽执行相应操作。其中,PCIE服务程序206、第一监控程序208以及第二监控程序210可位于同一对话,或分别位于三个不同对话,且第一监控程序208和第二监控程序210可由不同用户从本地或远程登录操作系统。PCIE服务程序206、第一监控程序208以及第二监控程序210的数据通信通过驱动程序200的PCIE数据结构202来实现。驱动程序200不断更新PCIE数据结构202储存的数据,以让第一监控程序208和第二监控程序210实现数据同步。
为了实现上述目的,在驱动程序200初始化时,开启用户自定义的PCIE数据结构202,并通过驱动程序200的DriverEntry函数初始化PCIE数据结构202的各数据变量。在本发明的实施例中,PCIE数据结构202包含如下数据变量:PCIE_BTN,用以表示PCIE面板的按键状态;PCIE_PWR,用以表示PCIE槽的电源状态;PCIE_ATT_LED,用以表示PCIE面板的警示灯状态;PCIE_PWR_LED,用以表示PCIE面板的电源灯状态。
用户通过第一监控程序208或第二监控程序210的用户界面进行操作。当用户点击第一监控程序208的用户界面上“Power”按钮时(未示出),第一监控程序208通过读写接口204发送一个DeviceIOControl请求至驱动程序200,从而将PCIE_BTN数据变量的值设置为1,接着设置为0以模拟一个电平脉冲。PCIE服务程序206周期性(间隔时间极短)地通过读写接口204向驱动程序200发送一个DeviceIOControl请求,读取PCIE_BTN数据变量和PCIE_PWR数据变量的值。当PCIE服务程序206读取到PCIE_BTN数据变量的值发生了一个脉冲变化后,即获知用户点击了“Power”按钮,进而,当读取到PCIE_PWR数据变量的值为0时,即认为是一个给PCIE槽通电指令。因而,PCIE服务程序206执行给PCIE槽通电的操作流程,依照需要设置PCIE_ATT_LED数据变量、PCIE_PWR_LED数据变量以及PCIE_PWR数据变量的值,驱动程序200依照设置的值而给PCIE通电,点亮或熄灭警示灯和电源灯。为了监控PCIE槽的状态,第一监控程序208和/或第二监控程序210周期性(间隔时间极短)地通过读写接口204向驱动程序200发送一个DeviceIOControl请求,读取各数据变量的值,依照读取的值在用户界面上将PCIE槽的电源状态,各种灯的状态反映给用户。因为所有数据均来源于驱动程序200,不同用户从本地或远程登录操作系统后,通过监控程序得到的PCIE槽状态是完全一致的。
虽然本发明以前述的优选实施例公开如上,但是其并非用以限定本发明。本领域的技术人员应当意识到在不脱离本发明所附的权利要求所揭示的本发明的范围和精神的情况下,所做出的变动与修改,均属本发明的专利保护范围之内。关于本发明所界定的保护范围请参考所附的权利要求。

Claims (5)

1.一种程序通信方法,通过操作系统的驱动程序以在第一程序和第二程序的之间通信,该方法包含以下步骤:
初始化所述驱动程序,开启自定义数据结构于所述驱动程序;以及
所述第一程序和所述第二程序对所述自定义数据结构的数据变量进行读取或写入操作,以在所述第一程序和所述第二程序之间通信。
2.如权利要求1所述的程序通信方法,其中对所述自定义数据结构的所述数据变量进行写入操作时进一步包含:
锁定所述写入操作请求的所述数据变量;
将所述写入操作请求的数据写入所述数据变量;以及
解除对所述数据变量的锁定。
3.如权利要求2所述的程序通信方法,其中所述自定义数据结构于所述驱动程序初始化时初始化。
4.如权利要求1所述的程序通信方法,其中所述第一程序和第二程序位于不同对话。
5.如权利要求1所述的程序通信方法,其中所述操作系统为窗口操作系统。
CNA2006101646859A 2006-12-14 2006-12-14 程序通信方法 Pending CN101201754A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNA2006101646859A CN101201754A (zh) 2006-12-14 2006-12-14 程序通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2006101646859A CN101201754A (zh) 2006-12-14 2006-12-14 程序通信方法

Publications (1)

Publication Number Publication Date
CN101201754A true CN101201754A (zh) 2008-06-18

Family

ID=39516928

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006101646859A Pending CN101201754A (zh) 2006-12-14 2006-12-14 程序通信方法

Country Status (1)

Country Link
CN (1) CN101201754A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103975567A (zh) * 2012-11-14 2014-08-06 华为技术有限公司 双因素认证方法及虚拟机设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103975567A (zh) * 2012-11-14 2014-08-06 华为技术有限公司 双因素认证方法及虚拟机设备

Similar Documents

Publication Publication Date Title
CN101065740B (zh) USB便携式(On-The-Go)控制器
US8255095B2 (en) Modular avionics system of an aircraft
CN103455352B (zh) 部署应用软件的方法及应用软件部署装置
US7512778B2 (en) Method for sharing host processor for non-operating system uses by generating a false remove signal
CN106371847B (zh) Windows xp系统下CPCI总线RS422通信驱动方法及系统
CN101221509B (zh) 可信嵌入式系统总线仲裁启动方法
CN105653306B (zh) 显示启动设置界面的方法和装置
WO2009120187A2 (en) System and method for transforming pcie sr-iov functions to appear as legacy functions
CN102495744A (zh) 基于can总线的电动汽车电控设备控制软件升级方法
JP2007164793A (ja) データ処理システムの中に分散された分配型ダイレクトメモリアクセス手段
CN101373433A (zh) 更新bios的方法以及使用该方法的电脑与系统
CN105867949A (zh) 一种面向多结点服务器的bios在线刷新方法
CN107273245B (zh) 运算装置与运作方法
CN111475174A (zh) 一种车载网关在线刷写、配置的装置及方法
DE112006000634T5 (de) Verfahren und Vorrichtung zur unabhängigen und gleichzeitigen Datenübertragung auf Host-Controller
CN109507991B (zh) 一种双轴伺服控制平台调试系统及方法
CN101169774B (zh) 一种多处理器系统、共享控制装置及启动从处理器的方法
CN104538058A (zh) 半自动烧录装置及烧录方法
CN114817115A (zh) 串口通信方法及相关装置
US8464016B2 (en) Method and device for switching over in a memory for a control device
TW515947B (en) Test method of 1394 controller
CN1333333C (zh) 码流播放卡和码流采集卡的驱动方法
CN116820521A (zh) 控制器配置参数更新系统及方法
CN101201754A (zh) 程序通信方法
CN109857638B (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
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication