CN1617501B - 向应用程序通知状态变化的灵活体系结构 - Google Patents
向应用程序通知状态变化的灵活体系结构 Download PDFInfo
- Publication number
- CN1617501B CN1617501B CN200410087701XA CN200410087701A CN1617501B CN 1617501 B CN1617501 B CN 1617501B CN 200410087701X A CN200410087701X A CN 200410087701XA CN 200410087701 A CN200410087701 A CN 200410087701A CN 1617501 B CN1617501 B CN 1617501B
- Authority
- CN
- China
- Prior art keywords
- status attribute
- client computer
- notice
- attribute
- mobile device
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/55—Push-based network services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Abstract
描述了一种用于存储设备、应用程序和服务状的统一机制的方法和系统,以及一种丰富的通知代理体系结构。客户机向通知代理程序注册以接收对状态属性变化的通知。当注册的状态属性改变时,通知代理程序确定向哪一客户机通知状态变化,并向客户机提供关于该变化的通知。一旦状态改变,当状态改变满足预定条件时,或根据时间表通知客户机。响应于状态改变也能装入应用程序。提供了一种应用编程接口(API),它提供了一种在设备的不同组件之间访问状态改变信息的统一的方法。
Description
相关申请
本实用专利要求序号为60/513,723,在2003年10月23日提交的美国临时专利申请符合35USC119(e)的优先权。
背景技术
当今,移动设备被设计成运行各种应用程序,并保持用户能获得最新的当前信息。这些设备的某些包括个人数字助理、无线电话和电子邮件设备。移动设备现在能通过各种装置连接到因特网和其它网络,并从而能通过网络交换信息。这些移动设备能更新应用程序,并发送和接收信息,如电子邮件、电子邮件附件和网页内容。提供所有这些功能需要移动设备上的应用程序收到各种事件的通知,如当新的电子邮件可用时、当设备的屏幕被激活时、当收到电话时等。然而,访问与该设备关联的所有不同状态变化是困难的。
发明内容
简言之,本发明是针对在各设备间统一状态和通知的体系结构。
按本发明的一方面,客户机向通知代理程序(broker)注册以接收对状态属性改变的通知。当注册的状态属性改变时,通知代理程序确定向哪一客户机通知状态改变,并为客户机提供关于该变化的通知。例如,客户机能注册以接收关于电池强度变化、网络连接性、存储器使用等的通知。每当这些注册的态属性之一改变时,通知代理程序向客户机发通知消息。
按本发明另一方面,每当状态改变,当状态改变满足预定条件时,或根据一时间表来通知客户机。按本发明的又一方面,响应于状态改变或时间表能装入应用程序。例如,客户机能注册,以当发生某个事件时,如移动设备接收到定向到要装入的应用程序的消息时,启动该应用程序。也能根据客户机配置的时间表来启动应用程序。
按本发明的再一方面,提供一种应用编程接口(API),它针对提供一种在设备内不同组件之间访问状态变化信息的统一方法。例如,应用程序能使用同一函数调用来访问由设备内的不同组件设置的状态属性。
按本发明的还有一个方面,注册状态属性能跨设备重起而保持不变。
附图说明
图1示出一个示例性计算设备;
图2示出一个示例性移动设备;
图3示出一个示例性状态管理和通知系统;
图4示出用于状态变化通知系统的过程;以及
图5示出按本发明的各方面处理状态变化信息的过程。
具体实施方式
简言之,本发明针对提供一种用于存储设备、应用程序和服务状态的统一机制的方法和系统,以及一种丰富的通知代理体系结构。一般而言,客户机向通知代理程序注册,以便在某些状态属性改变时接收通知。当注册的状态属性改变时,通知代理程序判断向哪一客户机通知该状态变化,并向该客户机提供关于此变化的通知。每当状态改变,当状态变化满足预定条件时,或根据一时间表来通知客户机。也可响应于状态变化或时间表来装入应用程序。也提供了一种应用编程接口(API),它针对提供一种在设备内不同组件之间访问状态变化的统一方法。
在整个说明书和权利要求书中,下列术语至少采取明确与此处相关的意义,除非上下文清楚地另外要求。下面标识的意义并不意味着局限这些术语,而仅提供这些术语的说明性示例。“一”,“一个”和“该”的意义包括多个引用,“在……中”的意义包括“在……内”和“在……上”。
术语“状态属性”指的是向通知系统注册并存储的“状态”变量,用于维护和改变通知。
术语“通知请求”指的是来自要向其通知状态变化的客户机的请求。
术语“通知列表”指的是已注册状态属性变化通知的客户机的集合。
术语“通知代理程序”指的是负责从数据存储中添加、更新和移除数据的底层驱动程序。
术语“状态改变组件”指的是添加,更新,或通常维护数据存储中的状态属性的任何组件。
术语“客户机”指的是注册状态属性改变通知的任何组件。客户机可以是状态改变组件,状态改变组件也可以是客户机。
术语“状态属性标识符”指的是状态属性的“友好”串(名)的表示。此标识符能是分层的,并是唯一的。
术语“条件通知”指的是当状态属性改变且状态属性的新值满足通知请求中规定的条件时所发出的通知。
说明性操作环境
参考图1,用于实现本发明的示例性系统包括诸如计算设备100的计算设备。计算设备100能被配置成客户机或服务器。在很基本的配置中,计算设备100通常包括至少一个处理单元102和系统存储器104。按照计算设备的确切配置和类型,系统存储器104能是易失(如RAM)、非易失(如ROM,闪存等)或两者的某种组合。系统存储器104通常包括操作系统105、一个或多个程序模块106,并能包括程序数据107。在图1中,这些基本配置由在虚线108中的那些组件示出。
计算设备100能具有附加特征或功能。例如,计算设备100还能包括另外的数据存储设备(可移动和/或不可移动的),如磁盘、光盘或磁带。在图1中,这些另外的存储用可移动存储109和不可移动存储110示出。计算机存储介质能包括以用于存储如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术实现的易失和非易失、可移动和不可移动介质。系统存储器104,可移动存储109,和不可移动存储110均是计算机存储介质之例。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储、盒式磁带、磁带、磁盘存储或其它磁存储设备,或能用于存储希望的信息并能由计算设备100访问的其它介质。任何那样的计算机存储介质能是设备100的部分。计算设备100还能具有输入设备112,如键盘、鼠标、输入笔、语音输入设备、触摸输入设备等。还能包括如显示器、扬声器、打印机等输出设备。
计算设备100还包含通信连接,它允许该设备如经过网络与其它计算设备118通信。通信连接116是通信媒体的例子。通信媒体通常在如载波或其它传输机制的已调制数据信号包含计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传送媒体。术语“已调制数据信号”意为以如在信号中编码信息的方式设置或改变其一个或多个特征的信号。作为示例而非局限,通信媒体包括如有线网络或直线连接的有线媒体,如声音、RF、红外和其它无线媒体的无线媒体。这里使用的术语计算机可读媒质包括存储介质和通信媒体。
参考图2,用于实现本发明的一个示例性系统包括如移动设备200的移动设备。移动设备200具有处理器260、存储器262、显示器228和小键盘232。存储器262一般包括易失存储器(如RAM)和非易失存储器(如ROM、闪存等)。移动设备200包括操作系统264,如微软公司的Windows CE操作系统或其它操作系统,它们驻留在存储器262中,并在处理器260上执行。小键盘232可以是压键数字拨号盘(象典型的电话)、多键键盘(如传统的键盘)。显示器228能是液晶显示器,或在移动设备中常用的任何其它类型显示器。显示器228能是触敏的,因而能用作输入设备。
一个或多个应用程序能加载到存储器262中,并在操作系统264上运行。应用程序的示例包括电话拨号程序、电子邮件程序、时间表程序、PIM(个人信息管理)程序、文字处理程序、电子表格程序、因特网浏览器程序等。应用程序266能使用共用的API,以在与设备关联的状态属性上执行动作。例如,电话拨号程序能向通知系统注册,以接收关于对信号强度、电话状态、电池强度的改变的通知。移动计算设备200在存储器262中还包括非易失存储268。非易失存储268可用于存储永久性信息,它在移动计算设备200掉电时也不会丢失。应用程序266能使用和储存存储器268中的信息,如电子邮件或由电子邮件应用程序使用的其它消息、由PIM使用的联系人信息、由时间表程序使用的约会信息、由文字处理程序使用的文档等。
移动计算设备200具有实现为一个或多个电池的电源270。电源还能包括外接电源,如AC适配器或补充或重充电电池的电源连接座。
移动计算设备200还能包括外部通知机制,如LED(未示出)和音频接口274。这些设备能直接耦合到电源270,使得在激活时,即使关闭处理器260和其它组件来节省电池功率,它们仍按通知机制所指示的在一段时间内保持打开。音频接口274用于向用户提供音频信号并从用户接收音频信号。例如,音频接口274能耦合至扬声器以提供音频输出,并耦合至麦克风以接收听觉输入以便于电话对话。
移动计算设备200还能包含通信连接240,它允许设备如经无线网络与其它计算设备进行通信。移动计算设备200还包括无线电接口层272,它执行发送和接收射频通信的功能。无线电接口层272通过通信载波或服务提供商方便了在移动计算设备200和外部世界之间的无线连接。到无线电接口层272的来回发送在操作系统264的控制下进行。换言之,由无线电接口层272和通信连接240接收的通信能通过操作系统传播到应用程序,反之亦然。
说明性状态变化通知系统
图3按本发明的诸方面示出了示例状态管理和通知系统。通知系统300包括状态改变组件310、客户机315和320、通知代理程序335和数据存储330。按一个实施例,通知代理程序335还维护通知列表340、高速缓存属性345和调度程序350。
如客户机315或320那样的客户机向通知代理程序335注册来接收关于对状态属性的变化的通知。一般而言,每当状态属性改变,当变化满足一条件时或根据一时间表,客户机用注册该客户机以接收通知的通知代理程序335作出通知请求。通知能是永久的或暂时的通知。
永久的通知被保存在数据存储(320)中。按照一个实施例,永久的通知保存在如注册表的后端数据存储中,因而跨重起是“持久不变的”。因为这些通知是持久的,这些类型的状态属性在软复位(或关闭)之前具有与重起(或起动)之后相同的值。。按照一个实施例,状态属性默认地是持久的。
暂时通知不是永久的,因而跨重起是不持久保持的。换言之,若软复位(或重起)设备,从通知列表340中删除通知请求。为了恢复暂时通知,客户机重新注册(向通知代理程序335发送另一通知请求)以接收关于对状态属性的变化的通知。
客户机还能注册,使在发生状态改变时和/或按时间表装入应用程序。通常,如果当状态改变或已调度的时间出现时客户机所指定的应用程序尚未运行,则通知代理程序335发出命令以启动该应用程序。按一个实施例,客户机能指定当装入时发送给该应用程序的命令行参数。若装入的进程创建一窗口,则向该窗口发送表示该通知的消息。若目标进程已在客户机上运行,则客户机仅接收通知消息。
发送给客户机的通知也能分批处理。分批的状态属性供经常经常发生值变化的状态属性使用。设定允许使状态属性值“稳定”的预定的时间周期。按一个实施例,预定周期设成200ms。若在预定期间未向状态属性值作出改变,则将该通知传送给注册的客户机。分批预定周期是可配置的,并存储在数据存储330中。
数据存储330被配置成存储注册的状态属性,以及其它信息。按一个实施例,数据存储330是操作系统提供的注册表,如由微软公司的Windows XP操作系统提供的注册表。数据存储330也能是在其中能设置和访问信息的其它类型的数据存储。数据存储330还能包括在通知系统300的各种位置上维护的一个或多个数据存储。
数据存储330也能用可由客户机315和320访问的状态属性的默认设置预加载。预加载状态属性数据使许多状态属性可用,而客户机不必添加状态属性。例如,按一个实施例,下面状态对客户机可用而不必注册该状态:显示校准(分辨率,亮度)、不消除的提醒(计数、主题、日期、时间、位置)、不消除的警告(计数、描述、日期、时间)、电池(剩余电量的%、状态)、后备电池(剩余电量的%、状态)、存储器(空闲的程序存储器、已使用的程序存储器、空闲的存储存储器、已使用的存储存储器)、存储卡(总的空闲存储器、总的已使用存储器)、硬件(按下电话状态(开/关)、启用键盘、启用Wifi、启用蓝牙、头戴式耳机存在、相机存在)、消息(未读计数、总计数、草稿计数、发件箱计数)、任务(高优先级计数、今天的任务计数、已过期计数)、日程表(下次约会、名字、位置、日期、时间、POOM ID)、白天的约会(名字、位置、日期、时间、POOM ID)、当前约会(名字、位置、日期、时间、POOM ID);当前空闲/忙碌状态、即时消息(状态、在线联系人计数、离线联系人计数)、连接性(速度、Wifi、接入点、信号强度、连接名、连接到(工作,互联网)、状态)、媒体播放器(状态、播放列表(名称、模式(重复,随机)、音轨记数、总持续时间)、音轨(类型(音频、视频)、名称、专辑、艺术家、音轨数、流派、年、持续时间、播放演位置、文件名、比特率)、同步状态、电话(操作员、信号强度、电话状态、概览、漫游、无线电状态、有效呼叫(呼叫者名、呼叫者号码)、未接呼叫计数、SIM工具组消息。如能看到,状态覆盖了许多不同的应用程序。
按一个实施例,状态属性数据被组织成一层次结构。该层次结构使客户机能通过参照其父属性来规定一组状态属性。状态属性能设置成如串、整型、浮点型等数据类型。
客户机能通过状态属性的“友好”串(名)表示来标识状态属性。例如,“battery\a”参照在父“battery(电池)”之下的状态属性“a”,同样,“battery\b”能是在父“battery”之下的状态属性“b”。当参照共同的父之下的一组状态属性时,能使用父标识符。例如,为接收基于对所有电池状态的变化的通知,在注册表中提供“battery”,从而使用单个名字参照所有电池状态属性。
代理程序335能被配置成控制对数据存储330中设置/调节/移除状态属性类型的访问。例如,能在状态属性上加上限制,它将从通知系统中的删除属性局限到预定的客户机的列表上。当删除状态属性时,向已注册关于该属性的通知的客户机通知这一删除。
如上讨论,客户机315和320注册他们在接收关于这些状态属性何时改变的通知时所感兴趣的的状态属性。客户机能注册,以每当他们所注册的状态改变时,当施加到状态值的条件满足一条件时,或在预定时间表到达时接收通知。条件通知可基于许多不同的条件。按一个实施例,条件包括:所有、等于、不等于、大于、大于或等于、小于或等于、小于、包含、以……开始、以……结束。例如,客户机315能向通知代理程序335注册,以当未接呼叫计数状态属性大于15时,和当呼叫者的名字包含“Ja”时接收通知。加条件使客户机能接收他们关注的状态改变信息而不必处理他们无关心的状态改变信息。
注册来接收关于对状态属性的改变的通知的客户机在通知列表340中维护。通知代理程序335访问通知列表340,以便当注册的状态属性改变时确定应接收通知的客户机。
调度程序350可被配置成根据时间表通知和/或激活客户机。调度的激活通知模式允许客户机根据向通知代理程序335注册的简化的循环时间表接收通知。时间表能被配置成以任意的时间间隔发生,如按秒、分、小时、天、星期、或月的度量。按一个实施例,时间表由第一次出现的日期/时间和两次出现的时间量来定义。此外,可不以循环时间间隔来定义时间表。当不提供循环时间间隔时,通知只发送一次,然后从通知列表中移除该注册。此外,当通知到达时,若未能找到指定的(在通知请求期间提供的)应用程序路径,则从通知列表340移除该已调度的通知注册。
当状态改变时,状态变化组件310在数据存储330中更新该状态属性的值。状态变化组件310能直接在数据存储330中更新状态,或通过通知代理程序335来更新。当通过数据存储330更新状态时,数据存储330向通知代理程序335传递此变化。当通过通知代理程序335更新状态时,通知代理程序335在数据存储330中更新状态。在任一情况下,通知代理程序335根据状态变化确定应通知哪些客户机。通知代理程序335分析通知列表340,并确定已注册了关于该状态变化的通知的客户机。通知代理程序335向已经改变的状态属性值施加任何条件,并在条件满足时通知客户机。当不存在与该状态变化关联的条件时,向该客户机通知该状态变化。
当如客户机315和320那样的客户机从通知代理程序335接收通知时,客户机能调用公用API中的功能(见下面讨论)来检索该状态属性的新状态。可选地,可将该属性信息连同通知一起直接传送到客户机。当用户对接收有关特定状态属性的通知不再感兴趣时,客户机能从接收关于该状态属性的改变通知撤消其本身的注册。客户机315和320也能在任何时刻使用公用API直接查询代理程序335,以找到状态属性的状态。
状态属性值也能由通知代理程序335高速缓存在高速缓存属性345中。状态属性值能根据许多不同理由高速缓存。例如,状态属性值能被高速缓存,使得可将状态属性的先前值与该状态属性的当前值进行比较。此外,高速缓存能帮助便于请求状态属性值的快速重复查找。
按一个实施例,通知系统300支撑.NET(管理的)客户机,以向存储添加和改变通知注册。
以下是进一步表明状态管理通知系统300的某些示例性场景。
例1:ISV服务
网络新手Norm构建了C#应用程序,它保持了当前赛季棒球的统计数据(如,队、队员、得分、状态等)的完整数据库。他还构建了简单的XML Web-服务客户机,它能连接到体育网站并下拉出已更新的日统计。因为该应用存储的数据量相当大,Norm仅希望其应用程序在设备(如PPC)上的“粗管道(fat pipe)”(如802.1x)可用时同步数据。然后Norm通过向通知代理程序335发送对当高带宽连接可用时的通知的请求来注册其应用程序。Norm在通知请求中另外规定,当高带宽连接可用时装入其应用程序的请求。当与连接关联的状态变化组件更新该连接状态时,若状态表明它是高速连接,则通知代理程序335激活Norm的应用程序。
例2:LOB公司(商务线)应用程序
企业开发者Elph构建了基于现场服务形式的VB.Net应用程序,供保险精算人使用。该应用程序允许保险调停者查找零件数和价格、作出注释、检索汽车的原理图等。每天,保险精算人在现场拿出他的移动设备为客户机服务。该应用程序在数据存储中本地持久保存今天的操作的所有数据。Elph希望每当连接上设备时,该应用程序将离线存储与公司主服务器同步。因而,Elph注册其应用程序以接收通知同步连接事件的通知。每当连接上设备时,向该应用程序通知,且该应用程序同步其数据。
例3:电话游戏
电话游戏开发者Golem正在构建下一代电话多游戏者RPG。他希望该游戏是非常普及的,使得它一次能持续数周和数月。Golem主要关心的一个问题是没有用户的干预游戏状态的持久性。该游戏的纯粹特征之一是在电话电池耗尽之前保存当前的状态,并确保用户永不丢失任何数据的能力。Golem注册他的应用程序来接收电量不足的通知,以确保在设备电池耗尽前保存游戏信息。
例4:设备管理客户机
应急企业管理客户机开发者Eric寻求创建下一代移动计算设备和电话管理客户机;能够处理客户机更新、病毒扫描、政策实施及其它更多的功能。他使用C#已构建了强有力的设备方客户机,它能基于服务器驱动的命令处理诸请求。每天凌晨3点,Eric希望他的应用程序“醒来”,使他能联系服务器来寻找已更新的政策、病毒扫描器的签名等。为此,他简单地向通知代理程序335注册其应用程序以接收已调度的通知(每天凌晨3点)。Eric现能确保他的应用程序在指定时间运行。
图4示出按本发明的诸方面用于状态变化通知系统的过程。在开始块之后,过程400前进到块410,其中,客户机注册以获得对至少一个状态属性的改变的通知。若该状态属性不是已由另一客户机监控,则将该状态属性添加到可用状态属性的列表中。如上讨论,可用属性的列表被预加载到通知系统。客户机能注册以接收关于对该属性作出的所有变化、满足条件的变化的通知,以及按时间表来通知。
移到块420,向通知系统注册回叫,使得当对注册的状态属性作出变化时,令通知系统知道该变化。按一个实施例,通知代理程序向操作系统注册表注册对状态属性值作出的变化的回叫。
前进到块430,将该客户机添加到通知列表,以接收关于该装态属性的通知消息。包括在通知列表中的客户机接收关于对注册的状态属性的变化的通知。
移到块440,当对任何注册的状态属性作出变化时,接收回叫。按一个实施例,回叫包括标识状态属性变化的标识符和状态属性的当前值。
移到块450,处理状态变化信息。一般而言,处理状态变化信息包括判断是否向每一对改变的状态属性已注册的客户机应用了任何条件、时间表、分批处理或应用程序装入条件(见图5及有关讨论)。
图5示出按本发明的诸方面处理状态改变信息的过程。在开始块500之后,过程前进到块510,其中,访问注册接收有关改变的状态属性的状态变化的通知用户。按一个实施例,访问通知表以确定对已改变的状态属性已注册的客户机。
移到判断块520,在通知客户机之前判断该客户机是否已规定要应用到该状态属性的任何条件。
当条件表达式与通知请求关联时,过程前进到块530,其中,判断条件是否满足。当条件满足,或当客户机未规定任何条件时,过程前进到判断块540,其中,判断客户机是否规定响应于状态属性的变化而装入应用程序。当客户机规定装入应用,过程前进到块550,其中,若应用程序尚未运行,则装入该应用程序。当客户机未规定装入应用程序,或在块550该应用程序已经被装入,则过程移到块560,向客户机通知状态变化。
然后,过程前进到判断块570,判断是否有更多的注册来接收关于对该状态属性变化的通知的客户机。当存在另一客户机时,过程返回到块510。当不存在其它客户机,则过程移到结束块并返回以处理其它行动。
状态属性类型和模式
按本发明的一个实施例,能使用两个API来访问通知系统中的状态信息。提供一本机或底层API,并向客户机提供已管理的API。已管理的API访问本机API以执行其操作。
下面是按本发明的诸方面的示例性本机API:
#define E_ALREADY_REGISTERED ERROR_ALREDAY_REGISTERED
#define E_DATATYPE_MISMATCH ERROR_DATETYPE_MISMATCH
#define E_INSUFFICIENT_BUFFER ERROR_INSUFFICIENT_BUFFER
#define E_INVALID_HANDLE ERROR_INVALID_HANDLE
#define E_NOT_FOUND ERROR_NOT_FOUND
#define E_NOT_READY ERROR_NOT_READY
DECLARE_HANDLE(HREGNOTIFY); //暂时通知句柄
//**************************************************************
//枚举名:REG_COMPARISONTYPE
//目的:用于定义应当如何将状态属性值与条件变化通知的目标值相比较。当执行
//REG_COMPARISONTYPE时,改变的值用作1-值,即,REG_CT_LESS指如果
//改变的值小于目标值,则激发通知。
//描述:
//以下示出了当完成比较时哪一命题为真。大小写敏感的CompareString用于比较
//串,以下信息用于阐明REG_COMPARISONTYPE值的目的。
//假设“cv”表示改变的值,“psz”或“dw”表示NOTIFICATIONCONDITION
//结构中指定的TargetValue(目标值)。设“l”表示psz中指定的串的长度
(wcslen(psz)),“cvl”表示改变的值的串长度(wcslen(cv))。
// REG_SZ REG_DWORD
//REG_CT_EQUAL |(0==strcmp(cv,psz)) |(cv=dw)|
//REG_CT_NOT_EQUAL |(0!=strcmp(cv,psz)) |(cv!=dw)|
//REG_CT_GREATER |(0<strcmp(cv,psz)) |(cv>dw)|
//REG_CT_GREATER_OR_EQUAL |(0<=strcmp(cv,psz)) |(cv>=dw)|
//REG_CT_LESS |(0>strcmp(cv,psz)) |(cv<dw)|
//REG_CT_LESS_OR_EQUAL |(0>=strcmp(cv,psz)) |(cv<=dw)|
//REG_CT_CONTAINS |(0!=strstr(cv,psz)) |N/A|
//REG_CT_STARTS_WITH |(0==strncmp(cv,psz,1)) |N/A|
//REG_CT_END_WITH |(0==strcmp(cv+cvl-1,psz))|N/A|
//*************************************************
typedef enum tagREG_COMPARISONTYPE
{
REG_CT_EQUAL,
REG_CT_NOT_EQUAL,
REG_CT_GREATER,
REG_CT_GREATER_OR_EQUAL,
REG_CT_LESS,
REG_CT_LESS_OR_EQUAL,
REG_CT_CONTAINS,
REG_CT_STARTS_WITH.
REG_CT_ENDS_WITH
}REG_COMPARISONTYPE;
//*******************************************************
//结构名:NOTIFICATIONCONDITION
//
//目的:用于定义若符合则应当激发属性状态变化通知的条件
//
//描述:
//REG_COMPARISONTYPE ctComparisonType-如何将改变的值与TargetValue
// (目标值)中指定的值进行比较
// DWORD dwMask-如果该值不设为0,则将TargetValue解释为DWORD。该
// 在比较完成之前应用到改变的DWORD值,该标记不应用到TargetValue。
// 如果该值设为0,则将TargetValue解释为串。
//union TargetValue-如果dwMask设为0,则在psz和改变的值之间完成比较。如
// dwMask设为不同于0的任何值,则在dw和加表征码(见dwMask)的改
// 变值之间完成比较。如果改变的值既不是类型REG_SZ也不是
// REG_DWORD,或者改变的值是类型REG_DWORD并且dwMask设为0,
// 或者改变的值是类型REG_SZ且dwMask不设为0,则忽略通知。如果改
// 变的值被删除并且对照dw完成了比较,则0用作改变的值,且比较照常进
// 行。如果值被删除且对照psz完成了比较,则NULL用作改变的值,且仅
// 由比较处理REG_CT_EQUAL和REG_CT_NOT_EQUAL,如果使用了任何
// 其它的ctComparisonType,则忽略删除通知。
//
//**********************************************************
typedef struct tagNOTIFICATIONCONDITION
{
REG_COMPARISONTYPE ctComparisonType;
DWORD dwMask;
union
{
LPCTSTR psz;
DWORD dw;
}TargetValue;
}NOTIFICATIONCONDITION:
//函数原型:REGISTRYNOTIFYCALLBACK
//
//目的:定义RegisterNotifyCallback使用的回叫的原型
//
//自变量:
// IN HREGNOTIFY hNotify-到有效HREGNOTIFY的句柄,这是从
// RegistryNotifyCallback返回的同一句柄
// IN DWORD dwUserData-传递到RegistryNotifyCallback的用户数据
// IN const PBYTE pData-到该值的新值的指针,如果该值被删除,则将其设为
// NULL
// IN const UINT cbData-由pData指出的字节数,如果该值被删除,则将该值设
// 为0
//
//描述:
//该回叫用于通知使用RegistryNotifyCallback注册了通知的客户机。如果不再需要
//任何通知,则可以安全地从该回叫内调用RegistryCloseNotification。
//
//******************************************************************
typedef void(*REGISTRYNOTIFYCALLBACK)(HREGNOTIFY hNotify
DWORD dwUserData,
const PBYTE pData,
const UINT cbData);
//******************************************************************
//函数名:RegistryGetDWORD
//
//目的:用于读取REG_DWORD注册表值
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义的根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在该hKey中)
// IN LPCTSTR pszValueName-要检索的值的名字(可以为NULL以检索默认值)
// OUT DWORD*pdwData-到接收与同该值关联的数据的缓冲器的指针
//
//返回值:
// HRESULT
// S_OK-数据复制到缓冲器
// E_IVALIDARG-hKey或pdwData无效
// E_DATATYPE_MISMATCH-非REG_DWORD类型的值
// 被包装成FACILITY_WIN32 HRESULT的从RegOpenKeyEx或
// RegQueryValueEx返回的错误值
//
//结果:
// SUCCEEDED-pData指向与该值关联的数据
// FAILED-未改变
//
//描述:
// 与该值关联的DWORD被复制到由pData指向的缓冲器中。如果由
// hKey+pszSubKey指向的键不存在,则RegistryGetDWORD失败,因为它使用
// RegOpenKey来访问该键
//
//*************************************************************
HRESULT WINAPI RegistryGetDWORD(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
DWORD*pdwData);
//*************************************************************
//函数名:RegistryGetString
//
//目的:用于读取REG_SZ注册表键
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义的根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-要检索的值的名字(可以为NULL,以检索默认
// 值)
// OUT LPTSTR pszData-到接收与该值关联的数据的缓冲器的指针
// IN UINT cchData-到以字符计算的长度为由pData指向的缓冲器的变量的指针
//
//返回值:
// HRESULT
// S_OK-数据复制到缓冲器
// E_INVALIDARG-hKey或pszData无效
// E_DATATYPE_MISMATCH-该值不是REG_SZ类型
// E_INSUFFICIENT_BUFFER-如cchData确定的由pszData指向的缓冲器的大
// 小不够大来保留该串
// 被包装为FACILITY_WIN32 HRESULT的从RegOpenKeyEx或
// RegQueryValueEx返回的错误值
//
//结果:
// SUCCEED-pData指向与该值关联的数据
// FAILED-没有变化
//
//描述:
//
// 与该值关联的串被复制到由pData指向的缓冲器。如果由hKey+pszSubKey指
// 向的键不存在,则RegsitryGetString将失败,因为它使用了RegOpenKey来访
// 问该键
//
//******************************************************************
HRESULT WINAPI RegistryGetString(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
LPTSTR pszData,
UINT cchData);
//************************************************************
//函数名:RegistrySetDWORD
//
//目的:用于设置REG_DWORD注册表值
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义的根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-要设置的值的名字(可以为NULL,以设置默认
// 值)
// IN DWORD dwData-新值
//
//返回值:
// HRESULT
// S_OK-pszValueName的值变为dwData中的值
// E_INVALIDARG-hKey无效
// E_DATATYPE_MISMATCH-值不是REG_DWORD类型
// 被包装成FACILITY_WIN32 HRESULT的从RegOpenKeyEx或
// RegQueryValueEx返回的错误值
//
//结果:
// SUCCEEDED-与该值关联的数据改变
// FAILED-不改变
//
//描述:
// 与该值关联的数据改变成新值。如果由hKey+pszSubKey指向的键不存在,则
// RegistrySetDWORD失败,因为它使用RegOpenKey来访问该键
//
//****************************************************************
HRESULT WINAPI RegistrySetDWORD(HKEY hKey,
LPCTSTR pdzSubKey,
LPCTSTR pszValueName,
DWORD dwData);
//****************************************************************
//函数名:RegistrySetString
//
//目的:用于设置REG_SZ注册表值
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-要设置的值的名字(可以为NULL,以设置默认
// 值)
// IN LPCTSTR pszData-新值。该串以空结束。
//
//返回值:
// HRESULT
// S_OK-pszValueName的数据值变为pszData中的值
// E_INVALIDARG-hKey或pszData无效
// E_DATATYPE_MISMATCH-值不是REG_SZ类型
// 被包装成FACILITY_WIN32 HRESULT的从RegOpenKeyEx或
// RegQueryValueEx返回的错误值
// 从StringCbLength返回的错误HRESULT
//
//结果:
// SUCCEEDED-与该值关联的数据改变
// FAILED-不改变
//
//描述:
//与该值关联的数据变为新值。如果由hKey+pszSubKey指向的键不存在,则
// RegistrySetString失败,因为它使用RegOpenKey来访问该键
//
//******************************************************************
HRESULT WINAPI RegistrySetString(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
LPCTSTR pszData);
//******************************************************************
//函数名:RegistryTestExchangeDWORD
//
//目的:用于基于条件原子地设置值
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下
// IN LPCTSTR pszValueName-要设置的值的名字(可以为NULL,以设置默认
// 值)
// IN DWORD dwOldValue-要对照来检查的值
// IN DWORD dwNewValue-要有条件地设置的值
//
//返回值:
// HRESULT
// S_OK-数据值变为dwNewValue
// S_FALSE-目标值未设为dwNewValue,因为与pdsValueName关联的DWORD
// 值不等于dwOldValue
// E_INVALIDARG-传递的句柄或指针之一无效
// E_DATATYPE_MISMATCH-值不是REG_DWORD类型
// E_NOT_FOUND-值无法在指定的键下找到
// 被包装成FACILITY_WIN32 HRESULT的错误值
//
//结果:
// SUCCEEDED-与pszData关联的数据值曾经是dwOldValue,现在是
// dwNewValue
// FAILED-不改变
//
//描述:
// 该函数是联锁(interlocked)函数-换言之,它可以被认为是原子的。它检查
// 与pszValueName关联的DWORD值是否等于OldValue。如果是,则它将目标
// 设为NewValue,否则失败。
//
//**************************************************************
HRESULT WINAPI RegistryTestExchangeDWORD(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
DWORD dwOldValue,
DWORD dwNewValue);
//**************************************************************
//函数名:RegistryNotifyAppp
//
//目的:用于请求当指定的值改变时装入或通知应用程序
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-在其上请求了变化通知的值的名字(可以为
// NULL,以指示默认值)
// IN LPCTSTR pszName-表示通知请求的用户定义的串,当不再需要通知时,
// 该串应当被传递到RegistryStopNotification
// IN LPCTSTR pszApp-到作为到要装入的可执行码的路径的串的指针
// IN LPCTSTR pszClass-一旦装入了可执行码,或者如果它已运行,则具有该窗
// IN LPCTSTR pszWindow口名和类类型的窗口位于该进程内,并且向其传
// 递通知。如果这两个参数都为空,该函数将仅装入应用程序。
// IN UINT msg-传递到窗口的消息
// IN NOTIFICATIONCONDITION*pCondition-当与新注册表值的比较为TRUE
// 时应当发送变化通知的条件(可以为NULL,以指示任何变化应当导致通知)
//
//返回值:
// HRESULT
// S_OK-对通知的请求被添加到通知列表
// E_INVALIDARG-hKey、pszApp或pszName无效
// E_ALTRADY_REGISTERED-名字等于由pszName执行的名字的通知已存在
// 包装成FACILITY_WIN32 HRESULT的错误值
//
//结果:
// SUCCEEDED-现在每次当对该值作出改变时将通知调用者
// FAILED-不改变
//
//描述:
// 通知请求被添加到通知列表。调用者调用RegistryStopNotification来停止进一
// 步的通知。该通知请求类型是永久的,即,即使设备复位时通知请求也是活动
// 的。在通知时,该函数通过在pszClass和pszWindow指定的类名和窗口名上作
// 出FindWind来确定是否已运行了具有pszApp中指定的名字的可执行码,如果
// 没有,则它装入该应用程序。传递到应用程序的命令行应当在pszApp串中指
// 定,除用户指定的任何命令行之外,添加以下内容:
// /notify″pszName″
// pszName-传递到pszName参数中的函数的句柄串
// 在装入应用程序之后,完成FindWindow,以查找具有pszClass和pszWindow
// 中指定的类名和窗口名的窗口。如果找到该窗口,则如在RegistryNotifyWindow
// 窗口中一样通过PostMessage标帖由msg指定的消息。PostMessage的参数如下:
// WPRAM-对于类型REG_DWORD的值,如果值已被删除,则它是新值或
// 0;对于所有其它类型,该值为0
// LPARAM-0
// 该消息参数应当对RegistryNotifyApp的每一调用都是唯一的,使得客户机可在
// 多个通知之间区分。当添加或改变值时通知客户机。当通知到达时,如果由
// pszApp指向的应用程序无法被装入,或无法找到具有类型pszClass的类的窗
// 口,或PostMessage失败,则从通知列表中移除通知。
//
//*******************************************************************
HRESULT WINAPI RegistryNotifyApp(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
LPCTSTR pszName,
LPCTSTR pszApp,
LPCTSTR pszClass,
LPCTSTR pszWindow,
UINT msg,
NOTIFICATIONCONDITION*pCondition);
//***************************************************************
//函数名:RegistryNotifyWindow
//
//目的:用于请求当指定值改变时通知窗口
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-在其上请求了变化通知的值的名字(可以为
// NULL,以指示默认值)
// IN HWND hWnd-向其发送消息的窗口的句柄
// IN UINT msg-传递到窗口的消息
// IN DWORD dwUserData-用通知传递回用户的用户数据
// IN NOTIFICATION CONDITION*pCondition-当与新注册表值的比较为
// TRUE时应当发送变化通知的条件(可以为NULL,以指示任何变化应当
// 导致通知)
// OUT HREGNOTIFY*phNotify-接收到通知请求的句柄。当该键上的通知不再
// 需要时,应当使用RegistryCloseNotification关闭该句柄。
//
//返回值:
// HRESULT
// S_OK-对通知的请求被添加到通知列表
// E_INVALIDARG-hKey、phNotify或hWnd无效
// 被包装成FACILITY_WIN32 HRESULT的错误值
//
//结果:
// SUCCEEDED-每次当对该值作出变化时将通知调用者
// FAILED-不改变
//
//描述:
// msg参数应当对RegistryNotifyWindow的每一调用都唯一,使得客户机可在多
// 个通知之间区分。通知请求被添加到通知列表。调用者调用
// RegistryCloseNotification来停止进一步的通知,并关闭通知句柄。该通知请求
// 类型是暂时的,即,如果设备复位,则通知请求不再存在。当由pszValueName
// 指定的值改变时,通过PostMessage通知客户机。如果PostMessage失败,或
// 由hWnd指定的窗口不再有效,则从通知队列中移除通知请求,并且关闭
// phNotify中返回的句柄。
// 传递到PostMessage的参数如下:
// WPARAM-对于类型REG_DWORD的值,如果该值已被删除,则它是新
// 值或0;对于所有的其它类型,该值为0
// LPARAM-dwUserData上传递的数据
// 当调用RegsitryNotifyWindow时如果该值不再存在,则当添加该值时通知客户
// 机。
//
//***************************************************************
HRESULT WINAPI RegistryNotifyWindow(HKEY hKey,
LPCTSTR pszValueName,
HWND hWnd,
UINT msg,
DWORD dwUserData,
NOTIFICATIONCONDITION*pCondition,
HREGNOTIFY*phNotify);
//***************************************************************
//函数名:RegistryNotifyMsgQueue
//
//目的:用于请求当指定的值改变时通知消息队列
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-在其上请求变化通知的值的名字(可以为NULL,
// 以指示默认值)
// IN LPCTSTR pszMsgQueue-到作为要通知的消息队列的名字的串的指针。如
// 果该消息队列尚未创建,则RegistryNotifyMsgQueue将创建它。
// IN DWORD dwUserData-将用通知传递回用户的用户数据
// IN NOTIFICATIONCONDITION*pCondition-当与新注册表值的比较为TRUE
// 时应当发送变化通知的条件(可以为NULL,以指示任何变化应当导致通
// 知)
// OUT HREGNOTIFY*phNotify-接收到通知请求的句柄。当该键上的通知不再
// 需要时,应当用RegistryCloseNotification关闭该句柄。
//
//返回值:
// HRESULT
// S_OK-对通知的请求被添加到通知列表
// E_INVALIDARG-hKey、phNotify或pszMsgQueue无效
// 被包装成FACILITY_WIN32 HRESULT的错误结果
//
//结果:
// SUCCEEDED-每次当对该值作出变化时将通知调用者
// FAILED-不改变
//
//描述:
// 通知请求被添加到通知列表。调用者调用RegistryCloseNotification来停止进一
// 步的通知,并关闭通知句柄。该通知请求类型是暂时的,即,如果设备复位,
// 则通知请求不再存在。通过消息队列通知客户机。一旦通知了客户机,可使用
// ReadMsgQueue函数来检索关于改变的键的信息。返回的数据为以下格式:
// |HREGNOTIFY hNotify|DWORD dwUserData|UINT字节级数|BYTE[]新值
// |
// hNotify-与phNotify中所返回的一样的hNotify
// dwUserData-作为dwUserData传递的用户数据
// 字节计数-随后的字节数(对于删除,该值为0)
// 新值-pszValueName的新值
// 如果当调用RegistryNotifyMsgQueue时该值不存在,则当添加该值时通知客户
// 机。
//
//******************************************************************
HRESULT WINAPI RegistryNotifyMsgQueue(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
LPCTSTR pszMsgQueue,
DWORD dwUserData,
NOTIFICATIONCONDITION*pCondition,
HREGNOTIFY*phNotify);
//*******************************************************************
//函数名:RegistryNotifyCallback
//
//目的:用于请求当指定的值改变时通知回叫
//
//自变量:
// IN HKEY hKey-到当前打开的键的句柄,或预定义根值
// IN LPCTSTR pszSubKey-储存值的键(如果该值为空,则假定pszValueName
// 在hKey下)
// IN LPCTSTR pszValueName-在其上请求的变化通知的值的名字(可以为
// NULL,以指示默认值)
// IN REGISTRYNOTIFYCALLBACK pfnRegistryNotifyCallback-到当通知到达
// 时将回叫的函数的指针
// IN DWORD dwUserData-用通知传递回用户的用户数据
// IN NOTIFICATIONCONDITION*pCondition-当与新值的比较为TRUE时应
// 当发送变化通知的条件(可以为NULL,以指示任何变化应当导致通知)
//OUT HREGNOTIFY*phNotify-接收到通知请求的句柄。当该键上的通知不再
需要时,应当使用RegistryCloseNotificaion关闭该句柄。
//
//返回值:
// HRESULT
// S_OK-对通知的请求被添加到通知列表
// E_INVALIDARG-hKey、phNotify或pfnRegistryNotifyCallback无效
// 被包装成FACILITY_WIN32 HRESULT的错误结果
//
//结果:
// SUCCEEDED-每次当对该值作出变化时通知调用者
// FAILED-不改变
//
//描述:
// 通知请求被添加到通知列表。调用者调用RegistryCloseNotificaion来停止进一
// 步的通知,并关闭通知句柄。该通知请求的类型是暂时的,即,如果设备复位,
// 则通知请求不再存在。通过回叫向客户机通知变化。如果当调用
// RegistryNotifyCallback时该值不存在,则当添加该值时通知客户机。
//
//******************************************************************
HRESULT WINAPI RegistryNotifyCallback(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
REGISTRYNOTIFYCALLBACK pfnRegistryNotifyCallback,
DWORD dwUserData,
NOTIFICATIONCONDITION*pCondition,
HREGNOTIFY*phNotify);
//******************************************************************
//函数名:RegistryCloseNotification
//
//目的:用于从通知列表中移除通知请求,并关闭通知句柄
//
//自变量:
// IN HREGNOTIFY hNotify-到有效HREGNOTIFY的句柄,必须已返回
// RegistryNotify*函数之一
//
//返回值:
// HRESULT
// S_OK-通知请求从通知列表中移除
// E_INVALID_HANDLE-hNotify无效
// 被包装成FACILITY_WIN32 HRESULT的错误值
//
//结果:
// SUCCEEDED-通知请求已被移除,hNotify现在是无效句柄
// FAILED-不改变
//
//描述:
// 搜索通知列表以查找对hNotify的参照,如果找到,将其从队列中移除,并且
// 释 放与hNotify关联的存储器。尚未分派给客户机的任何通知将丢失。
//
//***************************************************************
HRESULT WINAPI RegistryCloseNotification(HREGNOTIFY hNotify);
//***************************************************************
//函数名:RegistryStopNotification
//
//目的:用于从通知列表中移除对永久通知的请求
//
//自变量:
// IN LPCTSTR pszName-表示已注册的永久通知的串
//
//返回值:
// HRESULT
// S_OK-通知已从列表中移除
// E_INVALIDARG-pszName无效
// 被包装成FACILITY_WIN32 HRESULT的错误值
//
//结果:
// SUCCEEDED-通知请求已被移除
// FAILED-不改变
//
//描述:
// 搜索通知列表以查找对通知的参照,如果找到,从队列中移除它们。尚未分派
// 给客户机的任何通知将丢失。
//
//*****************************************************************
HRESULT WINAPI RegistryStopNotification(LPCTSTR pszName);
//*****************************************************************
//函数名:RegistryBatchNotification
//
//目的:用于分批处理频繁出现的通知
//
//自变量:
// IN HREGNOTIFY hNotify-到有效HREGNOTIFY的句柄,已返回
// RegistryNotify*函数之一
// IN DWORD dwMillisecondsIdle-在通知被激发之前应当值保持不变的毫秒数
// IN DWORD dwMillisecondsMax-第一个变化发生和发送通知之间的时间的最
// 大毫秒数
//
//返回值:
// HRESULT
// S_OK-通知已从列表中移除
// E_INVALIDARG-dwMillisecondIdle被设为INFINITE
// E_INVALID_HANDLE-hNotify无效
// 被包装成FACILITY_WIN32 HRESULT的错误值
//
//结果:
// SUCCEEDED-设置了新的分批处理时间
// FAILED-不改变
//
//描述:
// 当值改变时,通知系统等候dwMillisecondsIdle毫秒,然后发送通知。如果在
// 此等候期间发生另一变化,则复位定时器,通知系统将等候另一
// dwMillisecondsIdle毫秒以发送通知。为确保dwMillisecondsIdle不阻止发送通
// 知,使用dwMillisecondsMax。dwMillisecondsMax是可从第一个通知到达的时
// 间推移到发送通知的时间的最大毫秒数。如果dwMillisecondsMax被设为
// INFINITE,则分批处理通知直到该值为空闲。dwMillisecondsIdle不可以是
// INFINITE。
//
//**************************************************************
HRESULT WINAPI RegistryBatchNotification(HREGNOTIFY hNotify,
DWORD dwMillisecondsIdle,
DWORD dwMillisecondsMax);
HRESULT WINAPI RegistryScheduleNotifications(SYSTEMTIME*pstStart,
DWORD dwIntervalMinutes,
RSN_BEHAVIOR rsnbehavior,
LPCTSTR pszName,
LPCTSTR pszApp,
LPCTSTR pszClass,
LPCTSTR pszWindow,
UINT msg);
已管理API
以下是示例性已管理API:
名字空间A.Mobile
{
///用于指定当设备待命时当出现事件时应当发生什么
public enum StandbyBehavior
{
///不要引发任何事件
Ignore,
///将设备带离待命状态并引发事件
Wake,
///一旦设备由其它事情唤醒就引发事件
Delay
}
public interface IAppLaunchable
{
///该通知的唯一名字
public string appLaunchId{get;}
///对特定的可执行码和命令行参数注册该通知
///在被调用之前,该通知不活动
///<param name=″appLaunchID″>
///该通知的唯一标识符。
///用于当应用程序关闭/重起时再次打开它
///如果该ID已被使用,则抛出异常
///</param>
///param name=″filename″>
///当引发通知时装入的应用程序。
///如果为空,则使用调用的可执行码
///</param>
///<param name=″parameters″>发送到应用程序的命令行参数
</param>
void EnableAppLaunch(string appLaunchId,string filename,string
parameters);
///对不具有命令行的特定可执行码注册该通知
///在被调用之前,该通知不活动
///<param name=″appLaunchId″>
///该通知的唯一标识符。
///用于当应用程序关闭/重起时再次打开它
///如果该ID已被使用,则抛出异常
///</param>
///<param name=″filename″>当引发通知时要装入的应用程序
</param>
void EnableAppLaunch(string appLaunchId,string filename);
///对没有参数的调用可执行码注册该通知
///在被调用之前,该通知不活动
///
///如果从DLL而非EXE调用,则抛出异常
///DLL用于调用其它超负载之一
///<param name=″appLaunchId″>
///该通知的唯一标识符
///用于当应用程序关闭/重起时再次打开它
///如果该ID已被使用,则抛出异常
///</param>
void EnableAppLaunch(string appLaunchId);
///解除通知的注册
///用于停止通知不再被激发
void DisableAppLaunch();
}
///在已调度的基础上引发的通知
public class ScheduledNotification:ILaunchable
{
//该通知的下一次出现被调度在何时出现
public DateTime NextOccurrence{get;set}
///在通知的出现之间过去了多少时间
///忽略秒和毫秒
public TimeSpan Interval{get;set}
///当出现过程中设备待命时该通知应当如何行动
///忽略、唤醒设备、等候直到其它事情唤醒设备。
///默认值是Wake(唤醒)
public StandbyBehavior StandbyBehavior{get;set}
///确定是否注册了命名的通知
///<param name=″appLaunchId″>通知名</param>
///<retums>如果已注册了通知则为真</returns>
public static bool AppLaunchIdExists(string appLaunchId){}
public event EventHandler Occured;
///用给定名字创建新的持久通知
///<param name=″nextOccurrence″>下一次出现是何时</param>
///<param name=″interval″>出现之间的时间多长。忽略秒和毫秒
</param>
public ScheduledNotification(Datetime nextOccurrence,TimeSpan
interval){}
//加载先前注册的通知的构造函数
///<param name=″existingAppLaunchId″>先前注册的通知的名字
</param>
public ScheduledNotification(string existingAppLaunchId)
{
if(!AppLaunchIdExists(name))
throw new ArgumentException();
}
}
}
名字空间A.Mobile.Status
{
///用于有条件的变化通知指定应当如何将新值与期望值相比较
public enum StateComparisonType
{
///不论值如何都引发事件,这是默认的
All,
Equal,
Greater,
GreaterOrEqual,
LessOrEqual,
Less,
Contains,
StartsWith,
EndsWith
}
///表示可被查询并可被倾听的所有系统状态的枚举
public abstract class StateBase:ILaunchable
{
///对于有条件的通知,如何将新值与TargetValue进行比较
public ComparisonType Comparisontype{get;set}
///将新值与什么比较。仅当比较为真时引发通知
public object ComparisonValue{get;set:}
///该系统属性的当前值
public object CurrentValue{get;}
public event ChangeNotificationEventHandlerChanged;
}
///当系统定义的属性改变时引发的暂时通知
public class SystemState:StateBase
{
///获取指定的系统属性的值
///<param name=″property″>要获取值的属性</param>
///<returns></returns>
public static object GetValue(SystemProperty property){}
///要监控的系统属性
public SystemProperty Property{get;}
///确定是否已注册了命名的通知
///<param name=″appLaunchId″>通知名</param>
///<returns>如果通知已注册则为真</returns>
public static bool AppLaunchIdExists(string appLaunchId){}
///没有条件的构造函数(永远引发事件)
///<param name=″property″></param>
public SystemState(SystemProperty property){}
///为何时引发事件设置条件的构造函数
///<param name=″property″>要监视的属性</param>
///<param name=″comparisonType>如何比较</param>
///<param name=″comparisonValue>比较什么</param>
public SystemState(SystemProperty property,ComparisonType
comparisonType,object comparisonValue){}
///加载先前注册的通知的构造函数
///<param name=″existingAppLaunchId″>先前注册的通知名</param>
public SystemState(string existingAppLaunchId)
{
if(!AppLaunchIdExists(name))
throw new ArgumentException();
}
}
///当注册表值改变时引发的暂时通知
public class RegistryValue:StateBase
{
///要监控的注册表键
public RegistryKey Key{get;}
///要监控的注册表键中的值的名字
public string ValueName{get;}
///确定是否注册了命名的通知
///<param name=″appLaunchId″>通知名</param>
///<returns>如果通知已注册则为真</returns>
public static bool AppLaunchIdExists(string appLaunchId){}
///没有条件的构造函数(永远引发事件)
///<param name=″key″>要监视的注册表键</param>
///<param name=″valueName″>要监视的注册表键中的注册表值的名
字</param>
public RegistryValue(RegistryKey key,string valueName){}
///为何时应当引发事件设置条件的构造函数
///<param name=″key″>要监视的注册表键</param>
///<param name=″valueName″>要监视的注册表键中的注册表值的名
字</param>
///<param name=″comparisonType″>如何比较</param>
///<param name=″comparisonValue″>比较什么</param>
public RegistryValue(RegistryKey key,string valueName,
ComparisonType comparisonType,object comparisonValue){}
///加载先前注册的通知的构造函数
///<param name=″existingAppLaunchId″>先前注册的通知的名字
</param>
public RegistryValue(string existingAppLaunchId)
{
if(!AppLaunchIdExists(name))
throw new ArgumentException();
}
}
public delegate void ChangeNotificationEventHandler(object sender,
ChangeNotificationEventArgs e);
public class ChangeNofificafionEventArgs:EventArgs
{
public object CurrentValue{get;)
}
}
已管理API的示例使用
-------------------------------------------------------------------------
int sigllal=SystemState.PhoneSigllalStrength;
//鼓苇……
int sigllal=(int)SystemState.GetValue(SystemProperty.PhoneSignalStrength);
//或者……
SysremState state=new SystemState(SystemProperty.PhoneSignalStrength);
int signal=(int)state.CurrentValue;
//注册暂时通知
SystemState state=new SystemState(SystemProperty.PhoneSignalStrength);
state.Changed+=new ChangeNotificationEventHandler(...);
//注册有条件的持久通知
SystemState state;
if(SysremState.AppLaunchIdExists(″MyApp.GoodSignal″))
{
state=new SystemState(″Myapp.GoodSignal″);
}
else
{
state=new SystemState(SystemProperty.PhoneSignalStrength,
ComparisonType.Greater,75);
state.EnableAppLaunch(″MyApp.GoodSignal″);
}
state.Changed+=new ChangeNotificationEventiHandler(...);
//注册已调度的通知
ScheduledNotification daily;
if(ScheduledNotification.AppLaunchIdExists(″MyApp.Daily″))
{
daily=new ScheduledNotification(″MyApp.Daily″);
}
else
{
daily=new ScheduledNotificarion(DateTime.Now,new TimeSpan(24,0,0));
daily.EnableAppLaunch(″MyApp.Daily″);
}
daily.Occurred+=new EventHandler(...);
上述说明,示例和数据提供了本发明的组成的制作和使用的完整描述。因为能在不脱离本发明的精神和范围的情况下作出许多本发明的实施例,因此本发明蕴含在所附权利要求书中。
Claims (25)
1.一种用于响应于状态属性改变向客户机提供通知的方法,其特征在于,所述方法包括:
从移动设备上的客户机接收一响应于源自移动设备的事件而接收通知的通知请求,其中所述事件与所述移动设备的状态属性变化相关联,其中所述移动设备上的客户机的执行取决于接收到的通知;
确保所述状态属性向通知系统注册,其中,所述通知系统包括数据存储模块,所述数据存储模块存储由所述移动设备中的不同组件更新的至少部分状态属性;
确定所述状态属性何时改变;
确定所述客户机何时应接收所述状态属性变化的通知;以及
在确定之后向所述客户机通知所述状态属性变化。
2.如权利要求1所述的方法,其特征在于,它还包括利用API来执行涉及所述状态属性的行动,其中,所述行动包括以下的至少一个:注册状态属性、查询所述状态属性和设置所述状态属性。
3.如权利要求2所述的方法,其特征在于,确定所述客户机何时应接收所述状态属性变化的通知包括:对所述状态属性应用条件表达式,并在满足条件时向所述客户机通知所述状态属性变化。
4.如权利要求3所述的方法,其特征在于,所述条件表达式包括以下条件的至少一个:所有、相等、不等、大于、大于等于、小于等于、小于、包含、以……开始和以……结束。
5.如权利要求2所述的方法,其特征在于,所述方法还包括响应于以下的至少一个起动所述客户机:状态属性变化和已排定事件。
6.如权利要求2所述的方法,其特征在于,所述方法还包括响应于由所述客户机确定的时间表通知所述客户机。
7.如权利要求2所述的方法,其特征在于,确定所述状态属性何时改变还包括:在发生在预定时间周期内的对所述状态属性的变化上执行分批处理操作。
8.如权利要求1所述的方法,其特征在于,从所述客户机接收响应于与所述状态属性相关联的变化而接收所述通知的通知请求还包括,当与所述通知请求相关联的标识符标识一类状态属性时,将一组状态属性与来自所述客户机的所述通知请求相关联,其中,所述状态属性在所述通知系统中排列成层次结构。
9.如权利要求2所述的方法,其特征在于,所述方法还包括跨越移动设备的重启而持久保存所述通知请求。
10.一种用于状态管理和通知的系统,其特征在于,所述系统包括:
一数据存储模块,所述数据存储模块被安排来存储涉及状态属性的信息,其中,所述状态属性中的至少部分由不同的组件修改;
一API模块,所述API模块被配置成执行涉及所述状态属性的操作;
移动设备上的客户机,所述客户机被配置成注册通知请求并响应于源自移动设备的事件而接收通知,其中所述事件与所注册的移动设备的状态属性变化相关联,其中,所述通知请求表明,响应于与所述状态属性相关联的变化,所述客户机应当何时接收通知,并且其中,所述客户机的执行取决于接收到的通知;
一通知列表模块,所述通知列表模块被安排来存储已注册来接收通知请求的所述客户机;
一通知代理程序模块,所述通知代理程序模块耦合至所述数据存储模块、所述通知列表模块和所述客户机,其中,所述通知代理程序模块被配置成执行以下动作:
接收将至少一个客户机添加到所述通知列表的通知请求;
将所述至少一个客户机添加到所述通知列表模块;以及
确定注册的状态属性何时改变,并且当所述状态属性改变时,确定要接收通知的客户机,并向所确定的客户机通知所述状态属性变化。
11.如权利要求10所述的系统,其特征在于,所述API模块还被配置成执行以下行动的至少一个:注册状态属性、查询所述状态属性和设置所述状态属性。
12.如权利要求11所述的系统,其特征在于,确定要接收所述通知的客户机包括:向所述状态属性应用条件表达式,并在满足条件时向所述客户机通知所述状态属性。
13.如权利要求12所述的系统,其特征在于,所述条件表达式包括以下条件的至少一个:所有、相等、不等、大于、大于等于、小于等于、小于、包含、以……开始和以……结束。
14.如权利要求11所述的系统,其特征在于,所述客户机响应于状态属性变化和已排定事件的至少一个来起动。
15.如权利要求11所述的系统,其特征在于,所述客户机响应于由所述客户机确定的时间表而被通知。
16.如权利要求11所述的系统,其特征在于,确定所述状态属性何时改变还包括:在发生在预定时间周期内的对所述状态属性的变化上执行分批处理操作。
17.如权利要求10所述的系统,其特征在于,所述状态属性被排列成一层次结构。
18.如权利要求10所述的系统,其特征在于,所述数据存储模块中的内容跨越移动设备重启而持久保存。
19.一种用于状态管理和通知的方法,其特征在于,所述方法包括:
接收来自在移动设备上执行的客户机的、要接收一标识符参数的请求,使得所述客户机在所述移动设备上的执行响应于源自所述客户机所在的移动设备的事件,其中所述标识符参数标识所述移动设备的一组状态属性中的至少一个状态属性,其中所述事件与所述移动设备的状态属性的变化相关联,其中,所述一组状态属性中的各个状态属性由所述移动设备中的不同组件更新;
在所述移动设备处接收指示所述移动设备的一组状态属性中的至少一个状态属性的标识符;
确定要在所述移动设备上执行的、涉及所述一组状态属性中的一个状态属性的操作;以及
响应于所接收到的标识符在所述移动设备上执行所述操作。
20.如权利要求19所述的方法,其特征在于,所述操作包括以下操作的至少一个:注册状态属性、查询所述状态属性、将条件表达式与所述状态属性关联和设置所述状态属性。
21.如权利要求20所述的方法,其特征在于,执行所述操作包括:向所述状态属性应用所述条件表达式,并在满足条件时向所述客户机通知所述状态属性。
22.如权利要求21所述的方法,其特征在于,所述条件表达式包括以下条件的至少一个:所有、相等、不等、大于、大于等于、小于等于、小于、包含、以……开始和以……结束。
23.如权利要求20所述的方法,其特征在于,执行所述操作还包括响应于以下的至少一个起动客户机:所述状态属性的变化和已排定事件。
24.如权利要求20所述的方法,其特征在于,执行所述操作还包括响应于由所述客户机确定的时间表通知所述客户机。
25.如权利要求20所述的方法,其特征在于,执行所述操作还包括:在发生在预定时间周期间内的对所述状态属性的变化上执行分批处理操作。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US51372303P | 2003-10-23 | 2003-10-23 | |
US60/513,723 | 2003-10-23 | ||
US10/873,881 US7644376B2 (en) | 2003-10-23 | 2004-06-22 | Flexible architecture for notifying applications of state changes |
US10/873,881 | 2004-06-22 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110222798.0A Division CN102291446B (zh) | 2003-10-23 | 2004-10-22 | 向应用程序通知状态变化的灵活体系结构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1617501A CN1617501A (zh) | 2005-05-18 |
CN1617501B true CN1617501B (zh) | 2011-09-14 |
Family
ID=34526892
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200410087701XA Active CN1617501B (zh) | 2003-10-23 | 2004-10-22 | 向应用程序通知状态变化的灵活体系结构 |
CN201110222798.0A Active CN102291446B (zh) | 2003-10-23 | 2004-10-22 | 向应用程序通知状态变化的灵活体系结构 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110222798.0A Active CN102291446B (zh) | 2003-10-23 | 2004-10-22 | 向应用程序通知状态变化的灵活体系结构 |
Country Status (5)
Country | Link |
---|---|
US (3) | US7644376B2 (zh) |
EP (1) | EP1679596A3 (zh) |
JP (1) | JP4790245B2 (zh) |
KR (1) | KR100920850B1 (zh) |
CN (2) | CN1617501B (zh) |
Families Citing this family (104)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6578054B1 (en) | 1999-10-04 | 2003-06-10 | Microsoft Corporation | Method and system for supporting off-line mode of operation and synchronization using resource state information |
US6909910B2 (en) | 2002-02-01 | 2005-06-21 | Microsoft Corporation | Method and system for managing changes to a contact database |
US7644376B2 (en) * | 2003-10-23 | 2010-01-05 | Microsoft Corporation | Flexible architecture for notifying applications of state changes |
KR100640483B1 (ko) * | 2004-10-22 | 2006-10-30 | 삼성전자주식회사 | 이동통신 단말기에서 통화 모드를 자동변경하기 위한 장치및 방법 |
US8001476B2 (en) | 2004-11-16 | 2011-08-16 | Open Text Inc. | Cellular user interface |
US8418075B2 (en) | 2004-11-16 | 2013-04-09 | Open Text Inc. | Spatially driven content presentation in a cellular environment |
US9654427B2 (en) * | 2005-07-11 | 2017-05-16 | Google Inc. | Presenting instant messages |
US7543003B2 (en) * | 2005-08-25 | 2009-06-02 | Microsoft Corporation | Providing change notifications to an entity-regarding a change of a specific type to data in a relational database |
US8225231B2 (en) | 2005-08-30 | 2012-07-17 | Microsoft Corporation | Aggregation of PC settings |
KR100717047B1 (ko) * | 2005-10-20 | 2007-05-10 | 삼성전자주식회사 | 간편하게 웹 페이지를 표시하는 방법 및 장치 |
KR100739755B1 (ko) | 2005-11-09 | 2007-07-13 | 삼성전자주식회사 | UPnP 이벤트에 관한 정보를 효율적으로 송수신하는방법 및 장치 |
US7757185B2 (en) * | 2006-01-06 | 2010-07-13 | Apple Inc. | Enabling and disabling hotkeys |
US7599861B2 (en) | 2006-03-02 | 2009-10-06 | Convergys Customer Management Group, Inc. | System and method for closed loop decisionmaking in an automated care system |
US7930727B1 (en) * | 2006-03-30 | 2011-04-19 | Emc Corporation | System and method for measuring and enforcing security policy compliance for software during the development process of the software |
US7809663B1 (en) | 2006-05-22 | 2010-10-05 | Convergys Cmg Utah, Inc. | System and method for supporting the utilization of machine language |
US8379830B1 (en) | 2006-05-22 | 2013-02-19 | Convergys Customer Management Delaware Llc | System and method for automated customer service with contingent live interaction |
US8205189B2 (en) * | 2006-07-13 | 2012-06-19 | Oracle International Corporation | Method and system for definition control in a data repository application |
US20080039169A1 (en) * | 2006-08-03 | 2008-02-14 | Seven Lights, Llc | Systems and methods for character development in online gaming |
US20080039166A1 (en) * | 2006-08-03 | 2008-02-14 | Seven Lights, Llc | Systems and methods for multi-character online gaming |
US20080039165A1 (en) * | 2006-08-03 | 2008-02-14 | Seven Lights, Llc | Systems and methods for a scouting report in online gaming |
US9417758B2 (en) * | 2006-11-21 | 2016-08-16 | Daniel E. Tsai | AD-HOC web content player |
US8671146B2 (en) * | 2007-02-28 | 2014-03-11 | Microsoft Corporation | Presence aware notification for information technology management |
US8015571B2 (en) * | 2007-03-16 | 2011-09-06 | Google Inc. | Registering an event |
JP4413941B2 (ja) * | 2007-03-22 | 2010-02-10 | 株式会社東芝 | 情報処理装置 |
US8805346B1 (en) | 2007-04-13 | 2014-08-12 | At&T Mobility Ii Llc | Caller information retrieval system for unavailable calls |
US20090017802A1 (en) * | 2007-04-13 | 2009-01-15 | At&T Mobility Ii Llc | Undelivered Call Indicator |
JP5088080B2 (ja) * | 2007-10-04 | 2012-12-05 | ソニー株式会社 | 電子機器及び異常状態表示方法 |
US20090210882A1 (en) * | 2008-02-18 | 2009-08-20 | International Business Machines Corporation | System and methods for asynchronously updating interdependent tasks provided by disparate applications in a multi-task environment |
US20090210822A1 (en) * | 2008-02-18 | 2009-08-20 | Microsoft Corporation | Locating meeting users |
US7899798B2 (en) * | 2008-02-25 | 2011-03-01 | Microsoft Corporation | Observing and reporting changes in complex software dependencies |
US7860900B2 (en) * | 2008-02-25 | 2010-12-28 | Microsoft Corporation | Consistently signaling state changes |
US8832122B2 (en) * | 2008-09-30 | 2014-09-09 | Apple Inc. | Media list management |
US8411046B2 (en) | 2008-10-23 | 2013-04-02 | Microsoft Corporation | Column organization of content |
US20100107100A1 (en) | 2008-10-23 | 2010-04-29 | Schneekloth Jason S | Mobile Device Style Abstraction |
US8628015B2 (en) * | 2008-10-31 | 2014-01-14 | Hand Held Products, Inc. | Indicia reading terminal including frame quality evaluation processing |
US8238876B2 (en) | 2009-03-30 | 2012-08-07 | Microsoft Corporation | Notifications |
US8175653B2 (en) | 2009-03-30 | 2012-05-08 | Microsoft Corporation | Chromeless user interface |
US8836648B2 (en) | 2009-05-27 | 2014-09-16 | Microsoft Corporation | Touch pull-in gesture |
JP4878060B2 (ja) * | 2009-11-16 | 2012-02-15 | シャープ株式会社 | ネットワークシステムおよび管理方法 |
US20110153728A1 (en) * | 2009-12-17 | 2011-06-23 | Telefonaktiebolaget Lm Ericsson (Publ) | Synchronization of sporadic web poll traffic |
US8566653B2 (en) * | 2009-12-22 | 2013-10-22 | At&T Intellectual Property I, L.P. | Infrastructure for rapid service deployment |
US20110185396A1 (en) * | 2010-01-26 | 2011-07-28 | Ntt Docomo, Inc. | Information-processing apparatus, information-processing method, and computer-readable storage medium |
JP5793869B2 (ja) * | 2010-03-05 | 2015-10-14 | 株式会社リコー | 伝送管理システム、伝送管理方法、及び伝送管理プログラム |
JP5625462B2 (ja) * | 2010-04-16 | 2014-11-19 | 船井電機株式会社 | 携帯情報表示端末 |
US9081633B2 (en) * | 2010-05-24 | 2015-07-14 | Microsoft Technology Licensing, Llc | Remote application connection sharing |
US8694625B2 (en) * | 2010-09-10 | 2014-04-08 | International Business Machines Corporation | Selective registration for remote event notifications in processing node clusters |
US20120066694A1 (en) | 2010-09-10 | 2012-03-15 | International Business Machines Corporation | Event overflow handling by coalescing and updating previously-queued event notification |
US8984119B2 (en) | 2010-11-05 | 2015-03-17 | International Business Machines Corporation | Changing an event identifier of a transient event in an event notification system |
US8667126B2 (en) | 2010-12-03 | 2014-03-04 | International Business Machines Corporation | Dynamic rate heartbeating for inter-node status updating |
US8984120B2 (en) * | 2010-12-16 | 2015-03-17 | International Business Machines Corporation | Determining an unexpected disconnect event constraint within a text exchange session |
US20120159383A1 (en) | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Customization of an immersive environment |
US20120159395A1 (en) | 2010-12-20 | 2012-06-21 | Microsoft Corporation | Application-launching interface for multiple modes |
US8689123B2 (en) * | 2010-12-23 | 2014-04-01 | Microsoft Corporation | Application reporting in an application-selectable user interface |
US8612874B2 (en) | 2010-12-23 | 2013-12-17 | Microsoft Corporation | Presenting an application change through a tile |
US9423951B2 (en) | 2010-12-31 | 2016-08-23 | Microsoft Technology Licensing, Llc | Content-based snap point |
CN103180824B (zh) * | 2011-01-28 | 2017-11-24 | 惠普发展公司,有限责任合伙企业 | 分配信息 |
US9383917B2 (en) | 2011-03-28 | 2016-07-05 | Microsoft Technology Licensing, Llc | Predictive tiling |
US8634330B2 (en) | 2011-04-04 | 2014-01-21 | International Business Machines Corporation | Inter-cluster communications technique for event and health status communications |
US9104307B2 (en) | 2011-05-27 | 2015-08-11 | Microsoft Technology Licensing, Llc | Multi-application environment |
US9104440B2 (en) | 2011-05-27 | 2015-08-11 | Microsoft Technology Licensing, Llc | Multi-application environment |
US9658766B2 (en) | 2011-05-27 | 2017-05-23 | Microsoft Technology Licensing, Llc | Edge gesture |
US20120304132A1 (en) | 2011-05-27 | 2012-11-29 | Chaitanya Dev Sareen | Switching back to a previously-interacted-with application |
US9158445B2 (en) | 2011-05-27 | 2015-10-13 | Microsoft Technology Licensing, Llc | Managing an immersive interface in a multi-application immersive environment |
US8893033B2 (en) | 2011-05-27 | 2014-11-18 | Microsoft Corporation | Application notifications |
US9146656B1 (en) * | 2011-06-27 | 2015-09-29 | Google Inc. | Notifications user interface |
US8687023B2 (en) | 2011-08-02 | 2014-04-01 | Microsoft Corporation | Cross-slide gesture to select and rearrange |
US10044678B2 (en) | 2011-08-31 | 2018-08-07 | At&T Intellectual Property I, L.P. | Methods and apparatus to configure virtual private mobile networks with virtual private networks |
US20130057587A1 (en) | 2011-09-01 | 2013-03-07 | Microsoft Corporation | Arranging tiles |
US8922575B2 (en) | 2011-09-09 | 2014-12-30 | Microsoft Corporation | Tile cache |
US10353566B2 (en) | 2011-09-09 | 2019-07-16 | Microsoft Technology Licensing, Llc | Semantic zoom animations |
US9557909B2 (en) | 2011-09-09 | 2017-01-31 | Microsoft Technology Licensing, Llc | Semantic zoom linguistic helpers |
US8933952B2 (en) | 2011-09-10 | 2015-01-13 | Microsoft Corporation | Pre-rendering new content for an application-selectable user interface |
US9146670B2 (en) | 2011-09-10 | 2015-09-29 | Microsoft Technology Licensing, Llc | Progressively indicating new content in an application-selectable user interface |
US9244802B2 (en) | 2011-09-10 | 2016-01-26 | Microsoft Technology Licensing, Llc | Resource user interface |
WO2013040674A1 (en) * | 2011-09-23 | 2013-03-28 | Research In Motion Limited | System and method for managing transient notifications using sensors |
JP5913921B2 (ja) * | 2011-11-11 | 2016-04-27 | シャープ株式会社 | 情報端末、その制御方法、および、制御プログラムおよびコンピュータ読み取り可能な記録媒体 |
US9223472B2 (en) | 2011-12-22 | 2015-12-29 | Microsoft Technology Licensing, Llc | Closing applications |
US9128605B2 (en) | 2012-02-16 | 2015-09-08 | Microsoft Technology Licensing, Llc | Thumbnail-image selection of applications |
US10044648B2 (en) | 2012-09-09 | 2018-08-07 | Jianping He | Messaging and updating services over the air from application servers to applications in mobile devices |
US9450952B2 (en) | 2013-05-29 | 2016-09-20 | Microsoft Technology Licensing, Llc | Live tiles without application-code execution |
US8819268B1 (en) * | 2013-06-19 | 2014-08-26 | Google Inc. | Systems and methods for notification of device mirroring |
US9450904B2 (en) | 2013-07-15 | 2016-09-20 | Dropbox, Inc. | Coordinated notifications across multiple channels |
US20150095071A1 (en) | 2013-09-29 | 2015-04-02 | Donan Engineering Co., Inc. | Systems and Methods for Identifying a Subrogation Opportunity for a Potential Subrogation Claim |
US9854061B2 (en) * | 2013-10-16 | 2017-12-26 | Ford Global Technologies, Llc | Method and apparatus for handling application triggering events |
CN104333644B (zh) * | 2013-10-18 | 2017-02-08 | 广州三星通信技术研究有限公司 | 移动通信终端及其更新消息的状态的方法 |
US20150160951A1 (en) * | 2013-12-06 | 2015-06-11 | Board Of Regents Of The University Of Texas System | Remote launch of application on mobile device |
EP3126969A4 (en) | 2014-04-04 | 2017-04-12 | Microsoft Technology Licensing, LLC | Expandable application representation |
CN106471465B (zh) * | 2014-04-09 | 2019-10-22 | 康维达无线有限责任公司 | 服务启用器功能 |
EP3129847A4 (en) | 2014-04-10 | 2017-04-19 | Microsoft Technology Licensing, LLC | Slider cover for computing device |
CN105378582B (zh) | 2014-04-10 | 2019-07-23 | 微软技术许可有限责任公司 | 计算设备的可折叠壳盖 |
US10678412B2 (en) | 2014-07-31 | 2020-06-09 | Microsoft Technology Licensing, Llc | Dynamic joint dividers for application windows |
US10592080B2 (en) | 2014-07-31 | 2020-03-17 | Microsoft Technology Licensing, Llc | Assisted presentation of application windows |
US10254942B2 (en) | 2014-07-31 | 2019-04-09 | Microsoft Technology Licensing, Llc | Adaptive sizing and positioning of application windows |
US10642365B2 (en) | 2014-09-09 | 2020-05-05 | Microsoft Technology Licensing, Llc | Parametric inertia and APIs |
US9674335B2 (en) | 2014-10-30 | 2017-06-06 | Microsoft Technology Licensing, Llc | Multi-configuration input device |
US10146473B2 (en) | 2016-05-10 | 2018-12-04 | Ge Aviation Systems Llc | Systems and methods of subject state change notification |
US10156877B2 (en) | 2016-10-01 | 2018-12-18 | Intel Corporation | Enhanced power management for support of priority system events |
US9959010B1 (en) * | 2016-12-23 | 2018-05-01 | Beijing Kingsoft Internet Security Software Co., Ltd. | Method for displaying information, and terminal equipment |
CN107222632A (zh) * | 2017-06-23 | 2017-09-29 | 北京金山安全软件有限公司 | 即时通信方法及装置 |
US20190073347A1 (en) * | 2017-09-01 | 2019-03-07 | Google Inc. | Lockscreen note-taking |
JP2019061458A (ja) * | 2017-09-26 | 2019-04-18 | 京セラドキュメントソリューションズ株式会社 | 電子機器およびログアプリケーション |
CN111064957B (zh) | 2018-10-17 | 2021-03-23 | 杭州海康威视数字技术股份有限公司 | 设备状态监控方法及装置 |
US10848500B2 (en) * | 2018-10-24 | 2020-11-24 | Jamf Software, Llc | Systems and methods for group-based mobile device management |
CN113055415A (zh) * | 2019-12-26 | 2021-06-29 | 阿里巴巴集团控股有限公司 | 服务提供方法、服务消费方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5390328A (en) * | 1992-03-30 | 1995-02-14 | International Business Machines Corporation | Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage |
US5991536A (en) * | 1996-11-12 | 1999-11-23 | International Business Machines Corporation | Object-oriented tool for registering objects for observation and causing notifications to be made in the event changes are made to an object which is being observed |
US6012095A (en) * | 1996-05-31 | 2000-01-04 | Hewlett-Packard Company | Generic notification framework system and method for enhancing operation of a management station on a network |
US6098093A (en) * | 1998-03-19 | 2000-08-01 | International Business Machines Corp. | Maintaining sessions in a clustered server environment |
CN1429364A (zh) * | 2000-03-16 | 2003-07-09 | 微软公司 | 通知平台总体结构 |
CN1703927A (zh) * | 2002-10-09 | 2005-11-30 | 诺基亚公司 | 关于移动站的信息的提供 |
Family Cites Families (159)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4058672A (en) | 1976-11-10 | 1977-11-15 | International Telephone And Telegraph Corporation | Packet-switched data communications system |
US4789962A (en) | 1984-10-31 | 1988-12-06 | International Business Machines Corporation | Methods of displaying help information nearest to an operation point at which the help information is requested |
US4780821A (en) | 1986-07-29 | 1988-10-25 | International Business Machines Corp. | Method for multiple programs management within a network having a server computer and a plurality of remote computers |
US4945475A (en) * | 1986-10-30 | 1990-07-31 | Apple Computer, Inc. | Hierarchical file system to provide cataloging and retrieval of data |
JPS63286941A (ja) * | 1987-05-20 | 1988-11-24 | Hitachi Ltd | フアイルシステム管理方式 |
US5058000A (en) | 1987-06-30 | 1991-10-15 | Prime Computer, Inc. | System for accessing remote heterogeneous database including formatting retrieved data into applications program format |
US5307494A (en) * | 1987-08-05 | 1994-04-26 | Fuji Xerox Co., Ltd. | File name length augmentation method |
US5179703A (en) * | 1987-11-17 | 1993-01-12 | International Business Machines Corporation | Dynamically adaptive environment for computer programs |
US5129088A (en) * | 1987-11-30 | 1992-07-07 | International Business Machines Corporation | Data processing method to create virtual disks from non-contiguous groups of logically contiguous addressable blocks of direct access storage device |
US4945476A (en) * | 1988-02-26 | 1990-07-31 | Elsevier Science Publishing Company, Inc. | Interactive system and method for creating and editing a knowledge base for use as a computerized aid to the cognitive process of diagnosis |
US4999766A (en) * | 1988-06-13 | 1991-03-12 | International Business Machines Corporation | Managing host to workstation file transfer |
JPH02165241A (ja) * | 1988-12-19 | 1990-06-26 | Toshiba Corp | ファイルアクセス方式 |
CA1323448C (en) * | 1989-02-24 | 1993-10-19 | Terrence C. Miller | Method and apparatus for translucent file system |
US5243697A (en) | 1989-03-15 | 1993-09-07 | Sun Microsystems, Inc. | Method and apparatus for selecting button functions and retaining selected options on a display |
US5157768A (en) | 1989-03-15 | 1992-10-20 | Sun Microsystems, Inc. | Method and apparatus for displaying context sensitive help information on a display |
US5083264A (en) * | 1989-04-24 | 1992-01-21 | Xerox Corporation | Process and apparatus for saving and restoring critical files on the disk memory of an electrostatographic reproduction machine |
CA2014799A1 (en) * | 1989-05-08 | 1990-11-08 | John W. Whisler | System and method for reading and writing disks formatted for an operating system foreign to the host computer |
US5291595A (en) * | 1989-05-22 | 1994-03-01 | Martins Augusto B | Batch/application program processing |
US5485606A (en) * | 1989-07-10 | 1996-01-16 | Conner Peripherals, Inc. | System and method for storing and retrieving files for archival purposes |
US5363487A (en) | 1989-08-29 | 1994-11-08 | Microsoft Corporation | Method and system for dynamic volume tracking in an installable file system |
US5371885A (en) | 1989-08-29 | 1994-12-06 | Microsoft Corporation | High performance file system |
US5247658A (en) * | 1989-10-31 | 1993-09-21 | Microsoft Corporation | Method and system for traversing linked list record based upon write-once predetermined bit value of secondary pointers |
US5347628A (en) | 1990-01-18 | 1994-09-13 | International Business Machines Corporation | Method of graphically accessing electronic data |
US5317733A (en) * | 1990-01-26 | 1994-05-31 | Cisgem Technologies, Inc. | Office automation system for data base management and forms generation |
US5202982A (en) * | 1990-03-27 | 1993-04-13 | Sun Microsystems, Inc. | Method and apparatus for the naming of database component files to avoid duplication of files |
US5249300A (en) | 1990-04-27 | 1993-09-28 | Bachman Information Systems, Inc. | System and method of constructing models of complex business transactions using entity-set variables for ordered sets of references to user data |
JPH0454541A (ja) | 1990-06-21 | 1992-02-21 | Fujitsu Ltd | ファイル名生成処理方式 |
DE69126391T2 (de) * | 1990-09-12 | 1997-10-30 | Toshiba Kawasaki Kk | Verfahren zur Funktionenerzeugung durch Bildsymbolanwendung |
US5367671A (en) | 1990-09-25 | 1994-11-22 | International Business Machines Corp. | System for accessing extended object attribute (EA) data through file name or EA handle linkages in path tables |
US5297249A (en) * | 1990-10-31 | 1994-03-22 | International Business Machines Corporation | Hypermedia link marker abstract and search services |
US5204947A (en) * | 1990-10-31 | 1993-04-20 | International Business Machines Corporation | Application independent (open) hypermedia enablement services |
US5241545A (en) * | 1990-11-14 | 1993-08-31 | Motorola, Inc. | Apparatus and method for recovering a time-varying signal using multiple sampling points |
CA2067633C (en) * | 1991-07-24 | 1996-10-01 | Eric Jonathan Bauer | Method and apparatus for accessing a computer-based file system |
CA2067650C (en) * | 1991-07-24 | 1996-10-22 | Eric Jonathan Bauer | Method and apparatus for operating a computer-based file system |
US5329427A (en) * | 1991-08-02 | 1994-07-12 | Tusk, Incorporated | Modular computer system having an improved docking assembly |
US5359725A (en) | 1991-10-15 | 1994-10-25 | Time Warner Interactive Group, Inc. | Method of creating CD-ROM image of files of different format with proper directories to be read by respective operating systems |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
US5333266A (en) * | 1992-03-27 | 1994-07-26 | International Business Machines Corporation | Method and apparatus for message handling in computer systems |
US5359724A (en) | 1992-03-30 | 1994-10-25 | Arbor Software Corporation | Method and apparatus for storing and retrieving multi-dimensional data in computer memory |
US5434974A (en) * | 1992-03-30 | 1995-07-18 | International Business Machines Corporation | Name resolution for a multisystem network |
US5392390A (en) | 1992-04-10 | 1995-02-21 | Intellilink Corp. | Method for mapping, translating, and dynamically reconciling data between disparate computer platforms |
JPH0619771A (ja) * | 1992-04-20 | 1994-01-28 | Internatl Business Mach Corp <Ibm> | 異種のクライアントによる共用ファイルのファイル管理機構 |
US5421001A (en) * | 1992-05-01 | 1995-05-30 | Wang Laboratories, Inc. | Computer method and apparatus for a table driven file interface |
US5355497A (en) | 1992-06-10 | 1994-10-11 | Physiotronics Corporation | File directory structure generator and retrevial tool with document locator module mapping the directory structure of files to a real world hierarchical file structure |
JP3328321B2 (ja) * | 1992-06-22 | 2002-09-24 | 株式会社日立製作所 | 半導体記憶装置 |
US5745902A (en) * | 1992-07-06 | 1998-04-28 | Microsoft Corporation | Method and system for accessing a file using file names having different file name formats |
US5627996A (en) * | 1992-08-19 | 1997-05-06 | At&T | Method and apparatus for accessing the same computer file using different file name formats |
US5596755A (en) * | 1992-11-03 | 1997-01-21 | Microsoft Corporation | Mechanism for using common code to handle hardware interrupts in multiple processor modes |
EP0672277B1 (en) | 1992-12-01 | 1998-05-13 | Microsoft Corporation | A method and system for in-place interaction with embedded objects |
US5666530A (en) * | 1992-12-02 | 1997-09-09 | Compaq Computer Corporation | System for automatic synchronization of common file between portable computer and host computer via communication channel selected from a plurality of usable channels there between |
JP2856621B2 (ja) * | 1993-02-24 | 1999-02-10 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 一括消去型不揮発性メモリおよびそれを用いる半導体ディスク装置 |
JP3078946B2 (ja) * | 1993-03-11 | 2000-08-21 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置 |
GB2276520A (en) | 1993-03-23 | 1994-09-28 | Us West Advanced Tech Inc | Computer interface method and system |
JPH06290096A (ja) * | 1993-03-31 | 1994-10-18 | Matsushita Electric Ind Co Ltd | パス名解決装置 |
EP0618540B1 (en) * | 1993-04-01 | 2001-12-12 | Microsoft Corporation | Common name space for long and short filenames |
JPH06324928A (ja) * | 1993-05-14 | 1994-11-25 | Mitsubishi Electric Corp | ログ生成装置とファイルの異なるバージョンの調停のための装置及び異なる場所にあるコンピュータファイルの異なるバージョンを調停するための装置 |
WO1995008809A2 (en) * | 1993-09-24 | 1995-03-30 | Oracle Corporation | Method and apparatus for data replication |
US5729687A (en) * | 1993-12-20 | 1998-03-17 | Intel Corporation | System for sending differences between joining meeting information and public meeting information between participants in computer conference upon comparing annotations of joining and public meeting information |
US5483652A (en) * | 1994-01-24 | 1996-01-09 | Digital Equipment Corporation | Mechanism for locating without search discrete application resources known by common name only in a distributed network computing environment |
AU3372095A (en) | 1994-08-24 | 1996-03-14 | Arcada Software, Inc. | Application program interface (api) for a medium changer |
US5805886A (en) | 1994-09-26 | 1998-09-08 | Intel Corporation | Method for notifying client applications of events in a shared application in a computer system |
US5805830A (en) | 1994-09-30 | 1998-09-08 | Intel Corporation | Method and apparatus for managing communications with selective subsets of conference participants |
US5903752A (en) * | 1994-10-13 | 1999-05-11 | Intel Corporation | Method and apparatus for embedding a real-time multi-tasking kernel in a non-real-time operating system |
US5721922A (en) * | 1994-10-13 | 1998-02-24 | Intel Corporation | Embedding a real-time multi-tasking kernel in a non-real-time operating system |
JPH08129536A (ja) * | 1994-10-28 | 1996-05-21 | Oki Electric Ind Co Ltd | イベント処理システム |
US5745752A (en) * | 1994-12-13 | 1998-04-28 | Microsoft Corporation | Dual namespace client having long and short filenames |
US5684990A (en) | 1995-01-11 | 1997-11-04 | Puma Technology, Inc. | Synchronization of disparate databases |
US5758354A (en) * | 1995-04-28 | 1998-05-26 | Intel Corporation | Application independent e-mail synchronization |
US5819275A (en) | 1995-06-07 | 1998-10-06 | Trusted Information Systems, Inc. | System and method for superimposing attributes on hierarchically organized file systems |
EP0839353B1 (en) | 1995-07-20 | 2001-09-26 | Novell, Inc. | Transaction synchronization in a disconnectable computer and network |
US5664228A (en) | 1995-08-09 | 1997-09-02 | Microsoft Corporation | Portable information device and system and method for downloading executable instructions from a computer to the portable information device |
KR100259419B1 (ko) * | 1995-08-14 | 2000-06-15 | 포만 제프리 엘 | 메시지 전송 방법 및 네트워크 |
US5647002A (en) * | 1995-09-01 | 1997-07-08 | Lucent Technologies Inc. | Synchronization of mailboxes of different types |
US5630081A (en) * | 1995-09-07 | 1997-05-13 | Puma Technology, Inc. | Connection resource manager displaying link-status information using a traffic light iconic representation |
US5884323A (en) * | 1995-10-13 | 1999-03-16 | 3Com Corporation | Extendible method and apparatus for synchronizing files on two different computer systems |
US5727202A (en) | 1995-10-18 | 1998-03-10 | Palm Computing, Inc. | Method and apparatus for synchronizing information on two different computer systems |
US5867641A (en) * | 1995-10-27 | 1999-02-02 | Scm Microsystems (U.S.) Inc. | Flash translation layer cleanup system and method |
US6014724A (en) * | 1995-10-27 | 2000-01-11 | Scm Microsystems (U.S.) Inc. | Flash translation layer block indication map revision system and method |
US5799305A (en) | 1995-11-02 | 1998-08-25 | Informix Software, Inc. | Method of commitment in a distributed database transaction |
US5832218A (en) | 1995-12-14 | 1998-11-03 | International Business Machines Corporation | Client/server electronic mail system for providng off-line client utilization and seamless server resynchronization |
US5799168A (en) * | 1996-01-05 | 1998-08-25 | M-Systems Flash Disk Pioneers Ltd. | Standardized flash controller |
US5806074A (en) * | 1996-03-19 | 1998-09-08 | Oracle Corporation | Configurable conflict resolution in a computer implemented distributed database |
US5761675A (en) * | 1996-03-19 | 1998-06-02 | Symantec Corporation | Diagnosis and repair of defective long filenames |
US5812793A (en) | 1996-06-26 | 1998-09-22 | Microsoft Corporation | System and method for asynchronous store and forward data replication |
US5787262A (en) * | 1996-06-26 | 1998-07-28 | Microsoft Corporation | System and method for distributed conflict resolution between data objects replicated across a computer network |
US5930350A (en) * | 1996-06-27 | 1999-07-27 | Mci Communications Corporation | System, method and computer program for automated speed dialing |
US5812773A (en) | 1996-07-12 | 1998-09-22 | Microsoft Corporation | System and method for the distribution of hierarchically structured data |
KR100260028B1 (ko) | 1996-08-13 | 2000-06-15 | 윤종용 | 화일시스템의 정보 복구방법 |
US6016478A (en) * | 1996-08-13 | 2000-01-18 | Starfish Software, Inc. | Scheduling system with methods for peer-to-peer scheduling of remote users |
US5754848A (en) * | 1996-09-11 | 1998-05-19 | Hewlett-Packard Co. | Apparatus and method for disaster recovery of an operating system utilizing long file and directory names |
US5767854A (en) * | 1996-09-27 | 1998-06-16 | Anwar; Mohammed S. | Multidimensional data display and manipulation system and methods for using same |
US5765169A (en) * | 1996-09-30 | 1998-06-09 | International Business Machines Corporation | Method and apparatus for converting long file names to short file names |
US5884325A (en) * | 1996-10-09 | 1999-03-16 | Oracle Corporation | System for synchronizing shared data between computers |
US5757616A (en) * | 1996-10-31 | 1998-05-26 | Hewlett-Packard Company | Physical security system for portable computer |
US5924094A (en) * | 1996-11-01 | 1999-07-13 | Current Network Technologies Corporation | Independent distributed database system |
US6405218B1 (en) * | 1996-11-13 | 2002-06-11 | Pumatech, Inc. | Synchronizing databases |
US5956473A (en) | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
US5745418A (en) * | 1996-11-25 | 1998-04-28 | Macronix International Co., Ltd. | Flash memory mass storage system |
US5878408A (en) * | 1996-12-06 | 1999-03-02 | International Business Machines Corporation | Data management system and process |
US5920873A (en) * | 1996-12-06 | 1999-07-06 | International Business Machines Corporation | Data management control system for file and database |
US5826265A (en) | 1996-12-06 | 1998-10-20 | International Business Machines Corporation | Data management system having shared libraries |
US6018761A (en) * | 1996-12-11 | 2000-01-25 | The Robert G. Uomini And Louise B. Bidwell Trust | System for adding to electronic mail messages information obtained from sources external to the electronic mail transport process |
US5926501A (en) * | 1996-12-12 | 1999-07-20 | Motorola, Inc. | Method and apparatus for dynamic channel configuration |
US5930268A (en) * | 1996-12-20 | 1999-07-27 | Motorola, Inc. | Transceiver and associated method for surviving fades |
US6279069B1 (en) | 1996-12-26 | 2001-08-21 | Intel Corporation | Interface for flash EEPROM memory arrays |
US5812749A (en) | 1996-12-27 | 1998-09-22 | Mci Communication Corporation | Method of and system for testing network time protocol client accuracy |
US6035379A (en) * | 1997-01-09 | 2000-03-07 | Microsoft Corporation | Transaction processing for user data employing both logging and shadow copying |
US5887198A (en) * | 1997-04-07 | 1999-03-23 | The United States Of America As Represented By The Secretary Of The Navy | Programmable stand-alone drive apparatus for interfacing a host computer with PCMCIA memory cards having multiple formats |
US5961590A (en) | 1997-04-11 | 1999-10-05 | Roampage, Inc. | System and method for synchronizing electronic mail between a client site and a central site |
US5884328A (en) * | 1997-08-29 | 1999-03-16 | Tandem Computers, Inc. | System and method for sychronizing a large database and its replica |
US6070174A (en) * | 1997-09-30 | 2000-05-30 | Infraworks Corporation | Method and apparatus for real-time secure file deletion |
US5991778A (en) | 1997-09-30 | 1999-11-23 | Stratfor Systems, Inc. | Method and apparatus for real-time secure file deletion |
US6018571A (en) * | 1997-09-30 | 2000-01-25 | Mitel Corporation | System for interactive control of a computer and telephone |
US5924096A (en) * | 1997-10-15 | 1999-07-13 | Novell, Inc. | Distributed database using indexed into tags to tracks events according to type, update cache, create virtual update log on demand |
US5937425A (en) | 1997-10-16 | 1999-08-10 | M-Systems Flash Disk Pioneers Ltd. | Flash file system optimized for page-mode flash technologies |
WO1999023579A1 (en) * | 1997-11-05 | 1999-05-14 | Microsoft Corporation | Notification scheduling system on a mobile device |
US6034621A (en) * | 1997-11-18 | 2000-03-07 | Lucent Technologies, Inc. | Wireless remote synchronization of data between PC and PDA |
US5960406A (en) | 1998-01-22 | 1999-09-28 | Ecal, Corp. | Scheduling system for use between users on the web |
AU2787899A (en) * | 1998-02-26 | 1999-09-15 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6611877B2 (en) | 1998-06-30 | 2003-08-26 | Sun Microsystems, Inc. | System and method for aggregating registration of entities for notifications of events |
US6741994B1 (en) * | 1998-07-27 | 2004-05-25 | Hewlett-Packard Development Company, L.P. | Method and automatic organization of data |
US6269254B1 (en) | 1998-09-28 | 2001-07-31 | Motorola, Inc. | Radio communications device and method with API between user application program and telephony program and method |
US6393485B1 (en) * | 1998-10-27 | 2002-05-21 | International Business Machines Corporation | Method and apparatus for managing clustered computer systems |
US6922708B1 (en) * | 1999-02-18 | 2005-07-26 | Oracle International Corporation | File system that supports transactions |
US7950017B1 (en) * | 1999-04-23 | 2011-05-24 | Avaya Inc. | Apparatus and method for forwarding messages between two applications |
US6915457B1 (en) * | 1999-04-23 | 2005-07-05 | Nortel Networks Limited | Apparatus and method for monitoring messages forwarded between applications |
US6925513B1 (en) | 1999-05-04 | 2005-08-02 | Apple Computer, Inc. | USB device notification |
US6678830B1 (en) * | 1999-07-02 | 2004-01-13 | Hewlett-Packard Development Company, L.P. | Method and apparatus for an ACPI compliant keyboard sleep key |
US6442565B1 (en) * | 1999-08-13 | 2002-08-27 | Hiddenmind Technology, Inc. | System and method for transmitting data content in a computer network |
US6141564A (en) | 1999-09-30 | 2000-10-31 | Motorola, Inc. | Method of sharing a SIM card between two masters |
US6631363B1 (en) | 1999-10-11 | 2003-10-07 | I2 Technologies Us, Inc. | Rules-based notification system |
US7305475B2 (en) | 1999-10-12 | 2007-12-04 | Webmd Health | System and method for enabling a client application to operate offline from a server |
US6584185B1 (en) * | 2000-01-31 | 2003-06-24 | Microsoft Corporation | Telephone abstraction layer and system in a computer telephony system |
US7003571B1 (en) * | 2000-01-31 | 2006-02-21 | Telecommunication Systems Corporation Of Maryland | System and method for re-directing requests from browsers for communication over non-IP based networks |
US20020046299A1 (en) * | 2000-02-09 | 2002-04-18 | Internet2Anywhere, Ltd. | Method and system for location independent and platform independent network signaling and action initiating |
US7030837B1 (en) * | 2000-04-24 | 2006-04-18 | Microsoft Corporation | Auxiliary display unit for a computer system |
US6928300B1 (en) * | 2000-11-09 | 2005-08-09 | Palmsource, Inc. | Method and apparatus for automated flexible configuring of notifications and activation |
US7194743B2 (en) * | 2000-12-12 | 2007-03-20 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user interface and an executing application using property paths |
US6874094B2 (en) * | 2000-12-19 | 2005-03-29 | Microsoft Corporation | Method for locking user input elements for a small computer device by ignoring input signals if a locking signal is generated by a calendar-type application program |
US7299257B2 (en) * | 2001-02-06 | 2007-11-20 | Lucent Technologies Inc. | Apparatus and method for use in collaboration services |
US6826762B2 (en) | 2001-02-16 | 2004-11-30 | Microsoft Corporation | Radio interface layer in a cell phone with a set of APIs having a hardware-independent proxy layer and a hardware-specific driver layer |
US7472396B2 (en) * | 2001-05-18 | 2008-12-30 | Qualcomm Incorporated | Extensible event notification mechanism |
US20020178077A1 (en) * | 2001-05-25 | 2002-11-28 | Katz Steven Bruce | Method for automatically invoking a software module in response to an internal or external event affecting the procurement of an item |
JP2003044320A (ja) * | 2001-07-31 | 2003-02-14 | Pfu Ltd | 教育システム |
US6954781B2 (en) | 2001-08-01 | 2005-10-11 | International Business Machines Corporation | Messaging system for directing a server to convert voice message into text and appending a converted text message to another converted text message |
US7171671B2 (en) | 2001-08-23 | 2007-01-30 | Microsoft Corporation | Method and system for providing state change notifications in device drivers |
US20040066920A1 (en) * | 2001-08-31 | 2004-04-08 | Vandermeijden Tom R. | Method and apparatus for automatically populating a contact database in a mobile communication device |
US6993327B2 (en) * | 2001-10-29 | 2006-01-31 | Motorola, Inc. | Multicast distribution of presence information for an instant messaging system |
US6909910B2 (en) | 2002-02-01 | 2005-06-21 | Microsoft Corporation | Method and system for managing changes to a contact database |
US7657765B2 (en) * | 2002-02-19 | 2010-02-02 | Hewlett-Packard Development Company, L.P. | Power saving features for computing systems |
JP4091792B2 (ja) * | 2002-05-17 | 2008-05-28 | 株式会社エヌ・ティ・ティ・ドコモ | 電子機器、イベント提供方法、プログラム、及び記録媒体 |
US7269433B2 (en) * | 2002-11-05 | 2007-09-11 | Microsoft Corporation | Scheduling of synchronization operation on a mobile device based on predetermined subset of user actions |
US7809384B2 (en) * | 2002-11-05 | 2010-10-05 | Microsoft Corporation | User-input scheduling of synchronization operation on a mobile device based on user activity |
US7240228B2 (en) * | 2003-05-05 | 2007-07-03 | Microsoft Corporation | Method and system for standby auxiliary processing of information for a computing device |
US7103785B2 (en) * | 2003-05-30 | 2006-09-05 | Hewlett-Packard Development Company, L.P. | Method and apparatus for power management event wake up |
US7644376B2 (en) * | 2003-10-23 | 2010-01-05 | Microsoft Corporation | Flexible architecture for notifying applications of state changes |
JP4297934B2 (ja) | 2006-10-24 | 2009-07-15 | 三菱電機株式会社 | 車両用通信装置 |
US20160088046A1 (en) * | 2014-09-18 | 2016-03-24 | Multipop Llc | Real time content management system |
US9633622B2 (en) * | 2014-12-18 | 2017-04-25 | Intel Corporation | Multi-user sensor-based interactions |
-
2004
- 2004-06-22 US US10/873,881 patent/US7644376B2/en active Active
- 2004-10-06 EP EP04023852A patent/EP1679596A3/en not_active Ceased
- 2004-10-22 KR KR1020040084927A patent/KR100920850B1/ko active IP Right Grant
- 2004-10-22 CN CN200410087701XA patent/CN1617501B/zh active Active
- 2004-10-22 CN CN201110222798.0A patent/CN102291446B/zh active Active
- 2004-10-25 JP JP2004310058A patent/JP4790245B2/ja not_active Expired - Fee Related
-
2009
- 2009-11-23 US US12/624,038 patent/US8990695B2/en active Active
-
2015
- 2015-01-29 US US14/609,134 patent/US10169111B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5390328A (en) * | 1992-03-30 | 1995-02-14 | International Business Machines Corporation | Data processing system and method for providing notification in a central processor of state changes for shared data structure on external storage |
US6012095A (en) * | 1996-05-31 | 2000-01-04 | Hewlett-Packard Company | Generic notification framework system and method for enhancing operation of a management station on a network |
US5991536A (en) * | 1996-11-12 | 1999-11-23 | International Business Machines Corporation | Object-oriented tool for registering objects for observation and causing notifications to be made in the event changes are made to an object which is being observed |
US6098093A (en) * | 1998-03-19 | 2000-08-01 | International Business Machines Corp. | Maintaining sessions in a clustered server environment |
CN1429364A (zh) * | 2000-03-16 | 2003-07-09 | 微软公司 | 通知平台总体结构 |
CN1703927A (zh) * | 2002-10-09 | 2005-11-30 | 诺基亚公司 | 关于移动站的信息的提供 |
Non-Patent Citations (3)
Title |
---|
US 6012095 A,全文. * |
WO 03/003140 A2,全文. * |
说明书第21、22、31、33、34、39、50、53、54、59、62段、图1. * |
Also Published As
Publication number | Publication date |
---|---|
CN102291446A (zh) | 2011-12-21 |
US8990695B2 (en) | 2015-03-24 |
US10169111B2 (en) | 2019-01-01 |
KR20050039665A (ko) | 2005-04-29 |
US20150150027A1 (en) | 2015-05-28 |
US20100077310A1 (en) | 2010-03-25 |
JP4790245B2 (ja) | 2011-10-12 |
KR100920850B1 (ko) | 2009-10-09 |
US20050091219A1 (en) | 2005-04-28 |
CN102291446B (zh) | 2014-11-26 |
US7644376B2 (en) | 2010-01-05 |
CN1617501A (zh) | 2005-05-18 |
JP2005129067A (ja) | 2005-05-19 |
EP1679596A2 (en) | 2006-07-12 |
EP1679596A3 (en) | 2007-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1617501B (zh) | 向应用程序通知状态变化的灵活体系结构 | |
KR101224721B1 (ko) | 컨텍스트-인식 플랫폼을 위한 시스템 및 방법 | |
CN105190555B (zh) | 集中式任务调度 | |
CN106648024B (zh) | 计算对象的上下文历史 | |
US8700413B2 (en) | Web services registration for dynamic composition of web services | |
US9720920B2 (en) | Employing user-context in connection with backup or restore of data | |
US20110055177A1 (en) | Collaborative content retrieval using calendar task lists | |
US20060253548A1 (en) | Method and system for hosting and executing a component application | |
US20080215691A1 (en) | Method and apparatus for calendaring reminders | |
EP2893444A1 (en) | Quota-based resource management | |
JP5864754B2 (ja) | ポータブルコンピューティングデバイスのリソースを管理するためのシステムおよび方法 | |
US7451127B2 (en) | Web store events | |
EP2097848A2 (en) | Method, system and computer program for monitoring components in a service framework | |
US7191449B2 (en) | System and method for providing componentized transports and forms | |
US20030131058A1 (en) | Object-oriented enabling of e-mail notification in a federated content management system | |
WO2000073910A1 (fr) | Procede de gestion des fichiers electroniques et support lisible par ordinateur pour enregistrement du fichier de gestion electronique |
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 | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150506 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150506 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |