JP2005129067A - 状態変化をアプリケーションに通知するための柔軟性のあるアーキテクチャ - Google Patents

状態変化をアプリケーションに通知するための柔軟性のあるアーキテクチャ Download PDF

Info

Publication number
JP2005129067A
JP2005129067A JP2004310058A JP2004310058A JP2005129067A JP 2005129067 A JP2005129067 A JP 2005129067A JP 2004310058 A JP2004310058 A JP 2004310058A JP 2004310058 A JP2004310058 A JP 2004310058A JP 2005129067 A JP2005129067 A JP 2005129067A
Authority
JP
Japan
Prior art keywords
notification
state
client
state property
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004310058A
Other languages
English (en)
Other versions
JP4790245B2 (ja
Inventor
Ori M Amiga
エム.アミガ オリ
Ardan Arac
アラク アルダン
Brian Cross
クロス ブライアン
Jan Karachale
カラチェル ジャン
Jason W Fuller
ウィリアム フラー ジェーソン
Robert Levy
レビー ロバート
Zeke Koch
コッホ ジーク
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.)
Microsoft Corp
Original Assignee
Microsoft 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=34526892&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2005129067(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005129067A publication Critical patent/JP2005129067A/ja
Application granted granted Critical
Publication of JP4790245B2 publication Critical patent/JP4790245B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION 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/00Administration; Management
    • G06Q10/10Office automation; Time management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling 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/62Establishing a time schedule for servicing the requests
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/544Remote

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Human Resources & Organizations (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Operations Research (AREA)
  • Data Mining & Analysis (AREA)
  • Tourism & Hospitality (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Telephone Function (AREA)
  • Information Transfer Between Computers (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Computer And Data Communications (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】 デバイス状態、アプリケーション状態およびサービス状態を格納するための統一されたメカニズムならびに豊かな通知仲介アーキテクチャの方法およびシステムを提供する。
【解決手段】 クライアントが、状態プロパティの変化について通知を受け取るように通知ブローカに登録する。登録された状態プロパティが変化すると、通知ブローカは、どのクライアントにその状態変化を通知するかを判定し、その変化に関する通知をそのクライアントに提供する。状態が変化したときはいつでも、または状態変化が所定の条件を満たすとき、またはスケジュールに基づいてクライアントに通知することができる。また、状態変化に応答してアプリケーションを起動することもできる。デバイス内の様々なコンポーネントにわたって状態変化情報にアクセスする統一された方法を提供するアプリケーションプログラミングインタフェース(API)が提供される。
【選択図】 図3

Description

本発明は、状態変化をアプリケーションに通知するための柔軟性のあるアーキテクチャの方法およびシステムに関する。
今日、モバイルデバイスは、様々なアプリケーションを実行し、ユーザに最新情報を提供するように設計されている。これらデバイスのいくつかには、パーソナルデジタルアシスタント、無線電話機および電子メールデバイスが含まれる。モバイルデバイスは、現在、様々な手段を介してインターネットおよびその他のネットワークに接続することができ、そのため、ネットワークを介して情報を交換している。これらのモバイルデバイスは、アプリケーションを更新し、電子メール、電子メールの添付ファイルおよびWebページコンテンツなどの情報を送受信することができる。
こうした機能のすべてを提供するには、新規の電子メールがあったとき、デバイスのスクリーンがアクティブ化されたとき、電話のコールが受信されたときなど、様々なイベントについて、モバイルデバイス上のアプリケーションに通知する必要がある。しかし、デバイスに関連付けられた様々な状態変化のすべてにアクセスするのは困難である。
簡単に説明すると、本発明は、複数のデバイスにわたって状態−通知アーキテクチャを統一することを対象とする。
本発明の一態様によれば、クライアントが状態プロパティの変化についての通知を受け取るように通知ブローカ(broker)に登録する。登録された状態プロパティが変化すると、通知ブローカは、どのクライアントにその状態変化を通知するかを判定し、その変化に関する通知をそのクライアントに提供する。例えば、クライアントは、バッテリ強度、ネットワーク接続、メモリ使用率などの変化に関する通知を受け取るように登録することができる。これらの登録された状態プロパティの1つが変化したときはいつでも、通知ブローカが通知メッセージをクライアントに送る。
本発明の別の態様によれば、状態が変化したときはいつでも、または状態変化が所定の条件を満たすとき、またはスケジュールに基づいてクライアントに通知することができる。
本発明のさらに別の態様によれば、状態変化またはスケジュールに応答してアプリケーションを起動することができる。例えば、クライアントは、モバイルデバイスが起動されるべきアプリケーションに向けられたメッセージを受信するなど、あるイベントが生じたとき、アプリケーションを開始するように登録することができる。また、アプリケーションは、クライアントによって構成されたスケジュールに基づいて開始することもできる。
本発明のさらに別の態様によれば、デバイス内の様々なコンポーネントにわたって状態変化情報にアクセスする統一された方法を提供することを対象とするアプリケーションプログラミングインタフェース(API)が提供される。例えば、アプリケーションは、同じ関数コールを使用して、デバイス内の様々なコンポーネントによって設定された状態プロパティにアクセスすることができる。
本発明のさらに別の態様によれば、登録された状態プロパティは、デバイスの再起動を越えて永続化することができる。
簡単に説明すると、本発明は、デバイス状態、アプリケーション状態、およびサービス状態を格納するための統一されたメカニズム、ならびに豊かな通知仲介アーキテクチャについての方法およびシステムを提供することを対象とする。一般に、クライアントは、ある状態プロパティが変化したときに通知を受け取るように通知ブローカに登録する。登録された状態プロパティが変化すると、通知ブローカは、どのクライアントにその状態変化を通知するかを判定し、そのクライアントにその変化に関する通知を提供する。クライアントは、状態が変化したときにはいつでも、または状態変化が所定の条件を満たすとき、またはスケジュールに基づいて通知を受けることができる。また、状態変化またはスケジュールに応答してアプリケーションを起動することもできる。また、デバイス内の異なるコンポーネントにわたって状態変化情報にアクセスする統一された方法を提供することを対象とするアプリケーションプログラミングインタフェース(API)も提供される。
本明細書および特許請求の範囲を通して、以下の用語は、文脈によって別の意味であることが明らかでない限り、少なくとも以下に明示的に関連付けられた意味をもつ。下記に特定された意味は、これら用語を限定するものではなく、用語の解説的な例を提供するに過ぎない。「ある(“a”,“an”)」および「この(“the”)」には、複数を指す場合も含まれ、「中の(“in”)」には「中の(“in”)」および「上の(“on”)」が含まれる。
「状態プロパティ」という用語は、保持通知および変化通知のために通知システムに登録および格納された「ステータス」変数を指す。
「通知要求」という用語は、クライアントからの状態変化の通知を受ける要求を指す。
「通知リスト」という用語は、状態プロパティ変化通知のために登録しているクライアントの集合を指す。
「通知ブローカ」という用語は、データストアとの間でデータの追加、更新および削除を担う基礎となるドライバを指す。
「状態変化コンポーネント」という用語は、データストアの中で状態プロパティを追加するか、更新するか、または概ね保持する任意のコンポーネントを指す。
「クライアント」という用語は、状態プロパティ変化通知のための登録をする任意のクライアントを指す。クライアントが状態変化コンポーネントであることも、状態変化コンポーネントがクライアントであることもある。
「状態プロパティ識別子」という用語は、状態プロパティの「フレンドリな」文字列(名前)表現を指す。この識別子は、階層的であってよく、固有である。
「条件付き通知」という用語は、状態プロパティが変化し、その状態プロパティが通知要求において指定された条件を満たすときに送られる通知を指す。
(例示的な動作環境)
図1を参照すると、本発明を実施するための例示的なシステムが、コンピューティングデバイス100のようなコンピューティングデバイスを含んでいる。コンピューティングデバイス100は、クライアントまたはサーバとして構成することができる。非常に基本的な構成では、コンピューティングデバイス100は、通常、少なくとも1つの処理装置102およびシステムメモリ104を含む。コンピューティングデバイスのはっきりした構成およびタイプに応じて、システムメモリ104は、揮発性(RAMなど)、不揮発性(ROM、フラッシュメモリなど)、またはこの2つの何らかの組み合わせとすることができる。システムメモリ104は、通常、オペレーティングシステム105、1つまたは複数のプログラムモジュール106を含み、プログラムデータ107を含むことがある。この基本的な構成は、図1に破線108内のコンポーネントによって例示されている。
コンピューティングデバイス100は、追加の特徴または機能を有することがある。例えば、コンピューティングデバイス100は、例えば、磁気ディスク、光ディスク、またはテープなどの付加的なストレージデバイス(リムーバブルおよび/または非リムーバブル)を含むこともある。このような付加的なストレージは、図1にリムーバブルなストレージ109およびリムーバブルでないストレージ110によって例示されている。コンピュータ記憶メディアには、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された揮発性および不揮発性、リムーバブルおよび非リムーバブルのメディアを含むことがある。システムメモリ104、リムーバブルなストレージ109およびリムーバブルでないストレージ110はすべて、コンピュータ記憶メディアの例である。コンピュータ記憶メディアには、RAM、ROM,EEPROM、フラッシュメモリもしくはその他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはその他の磁気記憶装置、または所望の情報を格納するのに使用することができ、コンピューティングデバイス100によってアクセスすることができる他の任意の媒体が含まれるが、これらには限定されない。任意のそのようなコンピュータ記憶メディアが、デバイス100の一部であることがある。コンピューティングデバイス100は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス112を有することもある。また、ディスプレイ、スピーカ、プリンタなどの出力デバイス114を含むこともある。
コンピューティングデバイス100は、デバイスがネットワークなどを介して他のコンピューティングデバイス118と通信できるようにする通信接続116を収容する。通信接続116は、通信メディアの一例である。通信メディアは、通常、搬送波または他のトランスポートメカニズムなどの変調されたデータ信号におけるコンピュータ可読命令、データ構造、プログラムモジュールまたはその他のデータによって具体化することができ、任意の情報配信メディアが含まれる。「変調されたデータ信号」という用語は、信号に情報を符号化する形でその特性の1つまたは複数が設定または変更された信号を意味する。例として、限定としてではなく、通信メディアには、有線ネットワークまたは直接配線接続などの有線メディア、ならびに音響、RF、赤外線およびその他の無線メディアなどの無線メディアが含まれる。本明細書で使用するコンピュータ可読メディアという用語には、記憶メディアおよび通信メディアが両方ともに含まれる。
図2を参照すると、本発明を実施するための1つの例示的なシステムが、モバイルデバイス200のようなモバイルデバイスを含んでいる。モバイルデバイス200は、プロセッサ260、メモリ262、ディスプレイ228およびキーパッド232を有する。メモリ262には、一般に、揮発性メモリ(例えば、RAM)および不揮発性メモリ(例えば、ROM、フラッシュメモリなど)が両方とも含まれる。モバイルデバイス200は、マイクロソフトコーポレイションからのWindows(登録商標)CEオペレーティングシステム、またはその他のオペレーティングシステムのようなオペレーティングシステム264を含み、このオペレーティングシステムは、メモリ262の中に存在し、プロセッサ260上で実行される。キーパッド232は、プッシュボタン数字ダイヤルパッド(通常の電話機上にあるような)、マルチキーのキーボード(従来のキーボードのような)とすることができる。ディスプレイ228は、液晶ディスプレイ、またはモバイルデバイスにおいて一般に使用される他の任意のタイプのディスプレイとすることができる。ディスプレイ228は、タッチセンシティブとすることができ、その場合は、入力デバイスとしても働く。
1つまたは複数のアプリケーションプログラム266がメモリ262にロードされ、オペレーティングシステム264上で実行される。アプリケーションプログラムの例には、電話ダイヤラプログラム、電子メールプログラム、スケジューリングプログラム、PIM(個人情報管理)プログラム、ワードプロセッシングプログラム、スプレッドシートプログラム、インターネットブラウザプログラムなどが含まれる。アプリケーションプログラム266は、共通のAPIを使用して、デバイスに関連付けられた状態プロパティに関するアクションを行うことができる。例えば、電話ダイヤラプログラムが、信号強度、電話状態、バッテリ強度などの変化に関する通知を受け取るように通知システムに登録することが可能である。モバイルコンピューティングデバイス200は、メモリ262内に不揮発性ストレージ268を含む。不揮発性ストレージ268を使用して、モバイルコンピューティングデバイス200の電源が切れた場合に失われてはならない永続的情報を格納することができる。アプリケーション266は、電子メールアプリケーションによって使用される電子メールメッセージまたはその他のメッセージ、PIMによって使用されるコンタクト情報、スケジューリングプログラムによって使用される予定情報、ワードプロセッシングプログラムによって使用されるドキュメントなどの情報を使用し、ストレージ268に格納することができる。
モバイルコンピューティングデバイス200は、1つまたは複数のバッテリとして実装することができる電源270を有する。電源270には、バッテリを補完するか、または充電するACアダプタまたは給電ドッキングクレイドル(cladle)などの外部電源をさらに含むことができる。
モバイルコンピューティングデバイス200は、LED(図示せず)やオーディオインタフェース274などの外部通知メカニズムを含むこともできる。これらのデバイスは、アクティブ化されると、プロセッサ260およびその他のコンポーネントがバッテリ電力を節約するためにシャットダウンされても、通知メカニズムによって決められた期間、オンのままであるように電源270に直接的に結合することができる。オーディオインタフェース274は、ユーザに可聴信号を提供し、ユーザから可聴信号を受け取るために使用される。例えば、オーディオインタフェース274は、電話による会話を容易にするためなど、可聴出力を提供するためのスピーカに結合し、可聴入力を受け取るためのマイクに結合することができる。
モバイルコンピューティングデバイス200は、デバイスが無線ネットワークなどを介して他のコンピューティングデバイスと通信することができるようにする通信接続240を収容することもある。モバイルコンピューティングデバイス200は、無線周波数通信を送受信する機能を行う無線インタフェースレイヤ272も含む。無線インタフェースレイヤ272は、通信キャリアまたはサービスプロバイダを経由してモバイルコンピューティングデバイス200および外部世界の間の無線接続を容易にする。無線インタフェースレイヤ272との伝送は、オペレーティングシステム264の制御の下で行われる。換言すれば、無線インタフェースレイヤ272および通信接続240によって受信される通信は、オペレーティングシステム264経由でアプリケーションプログラム266に、およびその逆に伝搬することができる。
(例示的な状態変化通知システム)
図3は、本発明の態様による例示的な状態管理−通知システムを示している。通知システム300は、状態変化コンポーネント310、クライアント315および320、通知ブローカ335およびデータストア330を含む。一実施形態によれば、通知ブローカ335は、通知リスト340、キャッシュプロパティ345およびスケジューラ350も保持する。
クライアント315または320のようなクライアントが、状態プロパティの変化に関する通知を受け取るように通知ブローカ335に登録する。一般に、クライアントは、状態プロパティが変化したときはいつでも、または変化が条件を満たすとき、またはスケジュールに基づいて通知を受け取るようにクライアントを登録する通知要求を通知ブローカ335に対して行うことができる。通知は、永久的なまたは一時的な通知とすることができる。
永久的な通知は、データストア(330)に保持される。一実施形態によれば、永久的な通知は、レジストリのようなバックエンドデータストアに保持され、このため、再起動を越えて「永続化」される。これらの通知は永続化されるので、これらのタイプの状態プロパティは、再起動(またはブート)時にソフトリセット(またはシャットダウン)前と同じ値を有する。一実施形態によれば、状態プロパティは、既定として永続的である。
一時的な通知は永久ではなく、したがって、再起動を越えて永続化されない。換言すれば、デバイスがソフトリセットされた(または再起動された)場合、通知要求は通知リスト340から削除される。一時的な通知を復元するために、クライアントは状態プロパティの変更に関する通知を受け取るように再登録する(別の通知要求をブローカ335に送る)。
クライアントは、状態変化の発生時および/またはスケジュールに従ってアプリケーションが起動されるように登録することもできる。一般に、通知ブローカ335は、状態変化が生じるか、またはスケジュールされた時刻になったときにアプリケーションが既に実行中でない場合に、クライアントによって指定されたアプリケーションを起動するコマンドを発行する。一実施形態によれば、クライアントは、アプリケーションが起動されたときにアプリケーションに渡されるべきコマンドラインパラメータを指定することができる。起動されたプロセスがウインドウを作成した場合、通知を示すメッセージがそのウインドウに送られる。ターゲットプロセスがクライアント上で既に実行中である場合、クライアントは単に通知メッセージを受け取る。
クライアントに送られる通知は、バッチ化することもできる。バッチ化された状態プロパティは、頻繁な値の変化を被る可能性がある状態プロパティによって使用されることが意図されている。状態プロパティ値が「安定化」し得るようにする所定の期間が設定される。一実施形態によれば、この所定の期間は、200ミリ秒に設定される。所定の期間中に状態プロパティ値に何の変更も行われなかった場合、この通知が登録されたクライアントに送られる。バッチ化する所定の期間は、構成可能であり、データストア330に格納される。
データストア330は、登録された状態プロパティおよびその他の情報を格納するように構成される。一実施形態によれば、データストア330は、マイクロソフトコーポレイションによって提供されるWindows(登録商標)XPオペレーティングシステムで提供されるレジストリのような、オペレーティングシステムで提供されるレジストリである。データストア330は、情報を設定およびアクセスすることができる他の任意のタイプのデータストアとすることもできる。データストア330は、通知システム300内の様々な場所に保持された1つまたは複数のデータストアを含むこともできる。
また、データストア330に、クライアント315および320によってアクセスすることができる状態プロパティデータの既定のセットをあらかじめロードすることもできる。状態プロパティデータをあらかじめロードすることにより、クライアントが状態プロパティを追加する必要なく、状態プロパティの多くが利用可能になる。例えば、一実施形態によれば、以下の状態が、その状態を登録することなくクライアントに利用可能になる。これらの状態は、ディスプレイの向き(解像度、明るさ)、未破棄のリマインダ(カウント、件名、日付、時刻、場所)、未破棄のアラーム(カウント、説明、日付、時刻)、バッテリ(残量%、状態)、バックアップバッテリ(残量%、状態)、メモリ(プログラムメモリの空き、使用中のプログラムメモリ、記憶メモリの空き、使用中の記憶メモリ)、メモリカード(総メモリの空き、使用中の総メモリ)、ハードウェア(折りたたみ式電話の状態(開/閉)、キーボード有効、Wifi有効、Bluetooth有効、ヘッドホンあり、カメラあり)、メッセージング(未読カウント、合計カウント、下書きカウント、送信トレイカウント)、タスク(最優先カウント、本日期限カウント、期限超過カウント)、カレンダ(次の予定、名前、場所、日付、時刻、POOM ID)、全日予定(名前、場所、日付、時刻、POOM ID)、現在の予定(名前、場所、日付、時刻、POOM ID)、現在の空き/ビジーステータス、インスタントメッセンジャー(ステータス、オンラインコンタクトカウント、オフラインコンタクトカウント)、接続(速度、Wifi、アクセスポイント、信号強度、接続名、接続先(職場、インターネット)、ステータス)、メディアプレーヤー(ステータス、再生リスト(名前、モード(繰り返し、シャッフル)、トラックカウント、合計時間)、トラック(タイプ(オーディオ、ビデオ)、名前、アルバム、アーティスト、トラック番号、ジャンル、年、長さ、再生位置、ファイル名、ビットレート))、同期ステータス、電話(オペレータ、信号強度、電話状態、プロファイル、ローミング、無線状態)、アクティブなコール(発呼者名、発呼者番号)、不在着信カウント、SIMツールキットメッセージである。理解されうるように、状態は多くの異なるアプリケーションにわたる。
一実施形態によれば、状態プロパティデータは、階層に編成される。階層により、クライアントが、親を参照することによって状態プロパティのグループを指定できるようになる。状態プロパティは、文字列、整数、浮動などのデータタイプに設定することができる。
クライアントは、状態プロパティの「フレンドリな」文字列(名前)表現によって状態プロパティを特定することができる。例えば、「battery\a」は、「battery」という親の下の状態プロパティ「a」を指し、同様に、同じ親の下の状態プロパティ「b」である「battery\b」が存在することができる。共通の親の下にある状態プロパティのグループを参照するとき、親識別子を使用することができる。例えば、バッテリ状態のすべての変化に基づいて通知を受け取るのに、登録に「battery」を提供し、単一の名前を使用してバッテリ状態プロパティのすべてを参照する。
ブローカ335は、データストア330内の状態プロパティタイプを設定/調整/削除することに対するアクセスを制御するように構成することができる。例えば、状態プロパティに規制を課して、通知システムからのプロパティの削除を所定のリストのクライアントだけに限定することができる。状態プロパティが削除されると、そのプロパティに関する通知のための登録をしたクライアントは、プロパティの削除の通知を受ける。
前述したとおり、クライアント315および320は、状態プロパティが変化したときに通知を受け取ることに関心がある状態プロパティについて登録する。クライアントは、登録した状態が変化したときはいつでも、状態値に適用される条件付け(conditional)が条件を満たすとき、または所定のスケジュールに基づいて、通知を受け取るように登録することができる。条件付き通知は、多くの異なる条件に基づくことができる。一実施形態によれば、条件付けには、「すべての」、「等しい」、「等しくない」、「超えている」、「以上」、「以下」、「未満」、「含む」、「〜で始まる」および「〜で終わる」が含まれる。例えば、クライアント315は、不在着信カウント状態プロパティが15を「超えている」場合、および発呼者名が「Ja」を「含む」場合、通知を受け取るように通知ブローカ335に登録することができる。条件付けにより、クライアントは、関心のない状態変化情報を処理する必要なく、関心のある状態変化情報を受け取ることができるようになる。
状態プロパティの変化に関する通知を受け取るように登録したクライアントは、通知リスト340の中で保持される。通知ブローカ335は、通知リスト340にアクセスして、登録された状態プロパティが変化したときに通知を受け取るべきクライアントを特定する。
スケジュールに基づいてクライアントに通知し、および/またはクライアントをアクティブ化するようにスケジューラ350を構成することができる。スケジュールされたアクティブ化通知モードにより、クライアントが通知ブローカ335に登録された簡略化された反復スケジュールに基づいて通知を受け取ることができるようになる。スケジュールは、秒、分、時間、日、週、または月のスケールなど、任意の間隔で生じるように構成することができる。一実施形態によれば、スケジュールは、最初の発生の日付/時刻、および発生と発生の間の時間によって定義される。さらに、スケジュールは、反復間隔なしに定義することもできる。反復の間隔が何ら与えられない場合、通知は1回だけ送られ、そして通知リストからその登録が削除される。さらに、通知が着信したとき、指定されたアプリケーションパス(通知要求中に提供される)を見つけることができない場合、スケジュールされた通知登録が、通知リスト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サービス
初心者ノームが、今シーズンの野球統計(例えば、チーム、プレーヤー、得点、統計など)の完全なデータベースを保持するC#アプリケーションを構築している。彼は、スポーツウェブサイトに接続して、更新された日々の統計をプルダウンすることができる簡単なXMLウェブサービスも構築している。このアプリケーションが格納するデータの量は比較的大きいため、ノームは、「太いパイプ(fat pipe)」(例えば、802.1x)がデバイス(例えば、PPC)上で利用できるときにだけ、自身のアプリケーションがデータを同期することを望んでいる。次に、ノームは、高帯域幅接続が利用可能なときに通知のための通知要求を通知ブローカ335に送ることにより、自身のアプリケーションを登録する。ノームは、高帯域幅接続が利用可能なときに自身のアプリケーションを起動するように通知要求の中でさらに指定する。接続に関連付けられた状態変化コンポーネントが接続の状態を更新する際、その状態により接続が高速接続であることが示されるとき、通知ブローカ335はノームのアプリをアクティブ化する。
例2:企業LOB(取扱商品(Line of Business))アプリケーション
企業開発者エルフが、保険査定人の使用のためのフィールドサービスのフォームベースのVB.Netアプリケーションを構築している。このアプリケーションは、保険査定人がパーツ番号および費用を調べたり、ノートを取ったり、自動車の図面を取り出したりすることができるようにする。毎日、保険査定人は、自身のモバイルコンピューティングデバイスをフィールドで携行して、顧客にサービスを提供する。アプリケーションは、本日の作業についてのデータのすべてをデータストアにローカルで保存する。エルフは、デバイスがクレイドルにドッキングされるたびに、アプリケーションが、オフラインストアを会社のメインサーバと同期させることを望む。それゆえ、エルフは、同期クレイドルイベントに関する通知のために自身のアプリケーションを登録する。デバイスがクレイドルにドッキングされたときはいつでも、アプリケーションは通知を受け、そのデータを同期させる。
例3:電話ゲーム
電話ゲーム開発者ゴーレムが、電話機のための次世代マルチプレーヤーRPGを構築している。彼は、ゲームが非常に人気を博して、一度に数週間にも、数ヶ月にもわたって続けられることを予期している。ゴーレムの重要な関心事の1つは、ユーザの介入なしにゲームの状態を維持することである。このゲームの巧妙な特徴の1つは、電話機のバッテリが尽きる直前に、現在の状態を保存し、ユーザが何らのデータも決して失わないことを確実にすることができることである。ゴーレムは、デバイスのバッテリが尽きる前にゲーム情報が保存されることを確実にするために、自身のアプリケーションを登録して、バッテリ低下通知を受け取る。
例4:デバイス管理クライアント
新進の企業管理クライアント開発者エリックが、クライアント更新、ウイルススキャン、ポリシー実施、その他を扱うことができる次世代のモバイルコンピューティングデバイスおよび電話管理クライアントを作成することを目指している。C#を使用して、彼は、サーバ駆動のコマンドに基づいて要求を扱うことができるパワーデバイス側クライアントを構築している。毎晩午前3時に、エリックは、更新されたポリシー、ウイルススキャナシグニチャなどのためにサーバにコンタクトすることができるように、自身のアプリケーションが「ウェークアップ」することを望んでいる。これを達するために、彼は、単に、スケジュールされた通知(毎日午前3時)について、自身のアプリケーションを通知ブローカ335に登録する。これでエリックは、自身のアプリが指定された時刻に稼働するであろうことを保証される。
図4は、本発明の態様による状態変化通知システムのプロセスを示している。開始ブロックの後、プロセス400は、ブロック410に進み、クライアントが少なくとも1つの状態プロパティの変化について通知を受けるように登録する。その状態プロパティが、別のクライアントによって既にモニタされてはいない場合、状態プロパティは、利用可能な状態プロパティのリストに追加される。前述したとおり、利用可能なプロパティのリストは、通知システムにあらかじめロードされる。クライアントは、プロパティに対してなされたすべての変化、条件を満たす変化に関する通知を受け取るように登録することができ、スケジュールに従って通知を受けることもできる。
ブロック420に進むと、変化が登録された状態プロパティに対してなされたとき、通知システムにその変化について知らせるように、コールバックが通知システムに登録される。一実施形態によれば、通知ブローカは、状態プロパティ値に対してなされる変化について、コールバックをオペレーティングシステムレジストリに登録する。
ブロック430に進むと、クライアントは、状態プロパティに関係する通知メッセージを受け取るように通知リストに追加される。通知リストに含まれるクライアントが、登録された状態プロパティの変化に関する通知を受け取る。
ブロック440に移行すると、登録された状態プロパティのいずれかに変化がなされたとき、コールバックが受信される。一実施形態によれば、コールバックは、状態プロパティ変化および状態プロパティの現在の値を特定する識別子を含む。
ブロック450に移動すると、状態変化情報が処理される。一般に、状態変化情報を処理することには、何らかの条件付け、スケジュール、バッチまたはアプリケーション起動条件が、変化した状態プロパティについて登録されたクライアントのそれぞれに適用されるかどうかを判定することが含まれる(図5および関連する説明を参照)。
図5は、本発明の態様による状態変化情報を処理するためのプロセスを示している。開始ブロックの後、プロセス500は、ブロック510に進み、変化した状態プロパティについて状態変化に関する通知を受け取るために登録されたクライアントにアクセスが行われる。一実施形態によれば、通知リストにアクセスして、変化した状態プロパティについて登録されているクライアントを判定する。
判定ブロック520に移動すると、クライアントに通知する前に状態プロパティに適用されるべき何らかの条件付けをクライアントが指定しているかどうかの判定が行われる。
条件式が通知要求に関連付けられている場合、プロセスは判定ブロック530に進み、その条件が満たされるかどうかの判定が行われる。条件が満たされる場合、またはクライアントが何ら条件付けを指定していない場合、プロセスは判定ブロック540に進み、クライアントが状態プロパティの変化に応答してアプリケーションを起動するように指定しているかどうかの判定が行われる。クライアントがアプリケーションを起動するように指定している場合、プロセスはブロック550に移動し、アプリケーションが既に実行中でない場合、アプリケーションが起動される。クライアントがアプリケーションを起動するように指定していない場合、またはアプリケーションがブロック550で起動されている場合、プロセスはブロック560に移動し、クライアントが状態変化について通知を受ける。
次に、プロセスは判定ブロック570に進み、状態プロパティの変化に関する通知を受け取るように登録されているさらなるクライアントが存在するかどうかの判定が行われる。別のクライアントが存在する場合、プロセスはブロック510に戻る。他のクライアントが存在しない場合、プロセスは終了ブロックに進み、他のアクションを処理することに戻る。
(状態プロパティのタイプおよびモデル)
本発明の一実施形態によれば、2つのAPIを使用して、通知システムにおける状態情報にアクセスすることができる。ネイティブ、つまり基礎となるAPIが提供され、管理されたAPIが、クライアントに提供される。管理されたAPIは、ネイティブAPIにアクセスしてその操作を行う。
以下は、本発明の態様による例示的なネイティブAPIである。
#define E_ALREADY_REGISTERED ERROR_ALREADY_REGISTERED
#define E_DATATYPE_MISMATCH ERROR_DATATYPE_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を実行する際、変化した値が、l値
//として使用される、つまり、REG_CT_LESSは、変化した値が目標値より小さい場合、
//通知を発することを意味する。
//
//説明:
//以下は、比較が行われた場合にどのステートメントが真となるかを示す。大文字と小文
//字を区別しないCompareStringを使用してストリングを比較そ、以下の情報を使用して
//REG_COMPARISONTYPE値のインテントを明確にする。
//「cv」が、変化した値を表し、「psz」または「dw」が、NOTIFICATIONCONDITION構造の
//中で指定されたTargetValueを表すものとする。「1」が、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_ENDS_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 UNIT 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 - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 取り出すべき値の名前(既定値を取り出すためにNULL
//とすることができる)
//OUTDWORD*pdwData - 値に関連付けられたデータを受け取ることになるバッファに対
//するポインタ
//
//戻り値:
//HRESULT
//S_OK - データがバッファにコピーされた
//E_INVALIDARG - hKeyまたはpdwDataが無効である
//E_DATATYPE_MISMATCH - 値がREG_DWORDタイプではない
//RegOpenKeyExまたはRegQueryValueExから戻されたエラー値はFACILITY_WIN32 HRESULT
//としてラップ
//
//結果:
//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 - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 取り出すべき値の名前(既定値を取り出すためにNULL
//とすることができる)
//OUT LPSTR pszData - 値に関連付けられたデータを受け取ることになるバッファに
//対するポインタ
//IN UNIT cchData - pDataによってポイントされるバッファの文字の長さである変数に
//対するポインタ
//
//戻り値:
//HRESULT
//S_OK - データがバッファにコピーされた
//E_INVALIDARG - hKeyまたはpszDataが無効である
//E_DATATYPE_MISMATCH - 値がREG_SZタイプではない
//E_INSUFFICIENT_BUFFER - cchDataによって判定されたpszDataによってポイントされ
//るバッファのサイズが、文字列を保持するのに十分に大きくない
//RegOpenKeyExまたはRegQueryValueExから戻されたエラー値はFACILITY_WIN32 HRESULT
//としてラップ
//
//結果:
//SUCCEEDED - pDataが値に関連付けられたデータにポイントしている
//FAILED - 変化なし
//
//説明:
//値に関連付けられた文字列が、pDataによってポイントされるバッファにコピーされる
//hKey+pszSubKeyによってポイントされるキーが存在しない場合、RegistryGetStringは
//キーにアクセスするのにRegOpenKeyを使用するので、失敗することになる
//
//***********************************************************
HRESULT WINAPI RegistryGetString(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
LPTSTR pszData,
UINT cchData);

//***********************************************************
//関数名:RegistrySetDWORD
//
//目的:REG_DWORDレジストリ値を設定するのに使用
//
//引数:
//IN HKEY hKey - 現在開いているキーに対するハンドル、または所定のルート値
//IN LPCTSTR pszSubKey - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 設定すべき値の名前(既定値を設定するためにNULL
//とすることができる)
//IN DWORD dwData - 新たな値
//
//戻り値:
//HRESULT
//S_OK - pszValueNameのデータ値がdwDataの中のデータに変更された
//E_INVALIDARG - hKeyが無効である
//E_DATATYPE_MISMATCH - 値がREG_DWORDタイプではない
//RegOpenKeyExまたはRegQueryValueExから戻されたエラー値はFACILITY_WIN32 HRESULT
//としてラップ
//
//結果:
//SUCCEEDED - 値に関連付けられたデータが変更された
//FAILED - 変化なし
//
//説明:
//値に関連付けられたデータが、新たな値に変更される。hKey+pszSubKeyによってポイン
//トされたキーが存在しない場合、RegistryGetDWORDは、キーにアクセスするのにRegOpe
//nKeyを使用するので、失敗することになる
//
//***********************************************************
HRESULT WINAPI RegistrySetDWORD(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
DWORD dwData);

//***********************************************************
//関数名:RegistrySetString
//
//目的:REG_SZレジストリ値を設定するのに使用
//
//引数:
//IN HKEY hKey - 現在、開いているキーに対するハンドル、または所定のルート値
//IN LPCTSTR pszSubKey - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 設定すべき値の名前(既定値を設定するためにNULL
//とすることができる)
//IN LPCTSTR pszData - 新たな値。この文字列はNULLで終了される
//
//戻り値:
//HRESULT
//S_OK - pszValueNameのデータ値がpszDataの中のデータに変更された
//E_INVALIDARG - hKeyまたはpszDataが無効である
//E_DATATYPE_MISMATCH - 値がREG_SZタイプではない
//RegOpenKeyExまたはRegQueryValueExから戻されたエラー値はFACILITY_WIN32 HRESULT
//としてラップ
//StringCbLengthから戻されたエラーHRESULT
//
//結果:
//SUCCEEDED - 値に関連付けられたデータが変更された
//FAILED - 変化なし
//
//説明:
//値に関連付けられたデータが、新たな値に変更される。hKey+pszSubKeyによってポイン
//トされるキーが存在しない場合、RegistrySetStringは、キーにアクセスするのにRegOp
//enKeyを使用するので、失敗することになる
//
//***********************************************************
HRESULT WINAPI RegistrySetString(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
LPCTSTR pszData);

//***********************************************************
//関数名:RegistryTestExchangeDWORD
//
//目的:条件に基づいて値をアトミック的に設定するのに使用
//
//引数:
//IN HKEY hKey - 現在開いているキーに対するハンドル、または所定のルート値
//IN LPCTSTR pszSubKey - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 設定すべき値の名前(既定値を設定するためにNULL
//とすることができる)
//IN DWORD dwOldValue チェックする値
//IN DWORD dwNewValue - 条件付きで設定する値
//
//戻り値:
//HRESULT//S_OK - データがdwNewValueに変更された
//S_FALSE - pszValueNameに関連付けられたDWORDがdwOldValueに等しくなかったので、
//目標値がdwNewValueに設定されなかった
//E_INVALIDARG - ハンドルまたは渡されたポインタの1つが無効であった
//E_DATATYPE_MISMATCH - 値がREG_DWORDタイプではない
//E_NOT_FOUND - 値を指定されたキーの下で見つけることができなかった
//エラー値はFACILITY_WIN32 HRESULTとしてラップ
//
//結果:
//SUCCEEDED - pszDataに関連付けられたデータ値が、dwOLDValueであったが、現在は、
//dwNewValueである
//FAILED - 変化なし
//
//説明:
//この関数は、インターロックされた関数である。換言すれば、アトミックであると考え
//ることができる。この関数は、pszValueNameに関連付けられたDWORD値がOldValueに等
//しいかどうかをチェックする。等しい場合、この関数は、目標をNewValueに設定し、
//それ以外の場合、失敗することになる
//
//***********************************************************
HRESULT WINAPI RegistryTestExchangeDWORD(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
DWORD dwOldValue,
DWORD dwNewValue);

//***********************************************************
//関数名:RegistryNotifyApp
//
//目的:指定された値が変更されたとき、アプリケーションが起動されるか、または通知
//を受けることを要求するのに使用
//
//引数:
//IN HKEY hKey - 現在開いているキーに対するハンドル、または所定のルート値
//IN LPCTSTR pszSubKey - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 変化通知が要求される値の名前(既定値を示すために
//NULLとすることができる)
//IN LPCTSTR pszName - この通知要求を表すユーザ定義の文字列。この文字列は、通知
//がもはや必要とされないとき、RegistryStopNotificationに渡されなければならない
//IN LPCTSTR pszApp - 起動する実行可能ファイルへのパスである文字列に対するポイ
//ンタ
//IN LPCTSTR pszClass - 実行可能ファイルが起動されるか、または実行可能ファイル
//が、既に実行中である場合、IN LPCTSTR pszWindowというウインドウ名およびクラス
//タイプを有するウインドウがプロセスにおいて特定され、通知がそのウインドウに送
//られる。これらのパラメータの両方ともNULLである場合、この関数は、アプリケー
//ションだけを起動することになる。
//IN UINT msg - ウインドウに渡されることになるメッセージ
//IN NOTIFICATIONCONDITION * pCondition - 新たなレジストリ値に対する条件の比較が
//真である場合に変化通知が送られるべき条件(いかなる変化も通知をもたらすべきこと
//を示すためにNULLとすることができる)
//
//戻り値:
//HRESULT
//S_OK - 通知の要求が、通知リストに追加された
//E_INVALIDARG - hKey、pszAppまたはpszNameが無効である
//E_ALREADY_REGISTERED pszNameによって指定された名前に等しい名前を有する通知
//が既に存在する
//エラー値はFACILITY_WIN32 HRESULTとしてラップ
//
//結果:
//SUCCEEDED - これでこの値の変更が行われるたびに、呼び出し元が通知を受けること
//になる。
//FAILED - 変化なし
//
//説明:
//通知要求が通知リストに追加される。呼び出し元がRegistryStopNotificationをコール
//して、さらなる通知を停止する。このタイプの通知要求は、永久的である、つまり、デ
//バイスがリセットされた場合でも通知要求はアクティブである。通知時、この関数は、
//pszAPPにおいて指定された名前を有する実行可能ファイルが既に実行されているかどう
//かを、pszClassおよびpszWindowで指定されたクラス名およびウインドウ名に対して
//FindWindowを実行することにより判定し、実行中でない場合、アプリケーションを起動
//する。アプリケーションに渡されるコマンドラインは、ユーザによって指定された任意
//のコマンドラインに加えて、pszApp文字列において指定されなければならず、以下のも
//のが付加される。
// /notify “pszName”
// pszName - pszNameパラメータにおいて関数に渡されるハンドル文字列
//アプリケーションが起動された後、pszClassおよびpszWindowにおいて指定されたクラ
//ス名およびウインドウ名を有するウインドウを探すFindWindowが実行される。ウインド
//ウが見つかった場合、msgによって指定されたメッセージが、PostMessageを介して、
//RegistryNotifyWindowと同様にポストされる。PostMessageに対するパラメータは、
//以下のとおりである。
// WPARAM - REG_DWORDタイプの値について、これは新たな値または値が削除された場
//合、0であり、他のすべてのタイプについて、この値は0である
// LPARAM - 0
//msgパラメータは、クライアントが複数の通知を区別することができるように、Registr
//yNotifyAppに対する各コールに対して固有でなければならない。クライアントは、値が
//追加されたときならびに変更時に通知を受けることになる。通知が着信したとき、psz
//Appによってポイントされるアプリケーションを起動することができないか、またはpsz
//Classタイプのクラスを有するウインドウを見つけることができないか、またはPostMes
//sageが失敗した場合、通知は通知リストから削除されることになる。
//
//***********************************************************
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 - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 変化通知が要求される値の名前(既定値を示すためにNUL
//Lとすることができる)
//IN HWND hWnd - メッセージが送られることになるウインドウのハンドル
//IN UINT msg - ウインドウに渡されることになるメッセージ
//IN DWORD dwUserData - 通知とともにユーザに返送されることになるユーザデータ
//IN NOTIFICATIONCONDITION * pCondition - 新たなレジストリ値に対する条件の比較が
//真であるときに変化通知が送られるべき条件(いかなる変化も通知をもたらすべきこと
//を示すためにNULLとすることができる)
//OUT HREGNOTIFY * phNotify - 通知要求に対するハンドルを受け取る。このハンドルは
//、このキーに関する通知がもはや必要とされないとき、RegistryCloseNotificationを
//使用して閉じられなければならない。
//
//戻り値:
//HRESULT
//S_OK - 通知の要求が、通知リストに追加された
//E_INVALIDARG - hKey、phNotify、またはhWndが無効である
//エラー値はFACILITY_WIN32 HRESULTとしてラップ
//
//結果:
//SUCCEEDED - これでこの値の変更が行われるたびに、呼び出し元が通知を受けること
//になる。
//FAILED - 変化なし
//
//説明:
//msgパラメータは、クライアントが複数の通知を区別することができるように、Registr
//yNotifyWindowに対する各コールに対して固有でなければならない。通知要求が、通知
//リストに追加される。呼び出し元が、RegistryCloseNotificationをコールして、さら
//なる通知を停止し、通知ハンドルを閉じる。このタイプの通知要求は、一時的である、
//つまり、デバイスがリセットされた場合、通知要求はもはや存在しないことになる。
//pszValueNameによって指定された値が変更されると、クライアントが、PostMessageを
//介して通知を受ける。PostMessageが失敗するか、またはhWndによって指定されたウイ
//ンドウがもはや有効ではない場合、通知要求が通知キューから削除され、phNotifyにお
//いて戻されたハンドルが閉じられる。
//PostMessage上で渡されるパラメータは、以下のとおりである。
// WPARAM - REG_DWORDタイプの値について、これは新たな値または値が削除された場
//合、0であり、他のすべてのタイプについて、この値は0である
// LPARAM dwUserData上で渡される値
//RegistryNotifyWindowに対するコールの時点で値が存在しない場合、クライアントは、
//値が追加されたときに通知を受けることになる。
//
//***********************************************************
HRESULT WINAPI RegistryNotifyWindow(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
HWND hWnd,
UINT msg,
DWORD dwUserData,
NOTIFICATIONCONDITION * pCondition,
HREGNOTIFY * phNotify);

//***********************************************************
//関数名:RegistryNotifyMsgQueue//
//目的:指定された値が変更されたときにメッセージキューが通知を受けるように要求す
//るのに使用
//
//引数:
//IN HKEY hKey - 現在開いているキーに対するハンドル、または所定のルート値
//IN LPCTSTR pszSubKey - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 変化通知が要求される値の名前(既定値を示すためにNUL
//Lとすることができる)
//IN LPCTSTR pszMsgQueue - 通知すべきメッセージキューの名前である文字列に対する
//ポインタ。このメッセージキューがまだ作成されていない場合、RegistryNotifyMsgQue
//ueがそのキューを作成することになる。
//IN DWORD dwUserData - 通知とともにユーザに返送されることになるユーザデータ
//IN NOTIFICATIONCONDITION * pCondition - 新たなレジストリ値に対する条件の比較が
//真である場合に変化通知が送られるべき条件(いかなる変化も通知をもたらすべきこと
//を示すために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 count|BYTE[] new value|
//hNotify - phNotifyにおいて戻されるのと同じhNotify
//dwUserData - dwUserDataとして渡されるユーザデータ
//byte count - 後に続くバイトの数(削除の場合、この値は0)
//new value - 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 - 値が格納されるキー(この値がNULLである場合、pszValue
//NameがhKeyにあるものと想定される)
//IN LPCTSTR pszValueName - 変化通知が要求される値の名前(既定値を示すためにNUL
//Lとすることができる)
//IN REGISTRYNOTIFYCALLBACK pfnRegistryNotifyCallback - 通知が着信したときに
//コールバックされることになる関数に対するポインタ
//IN DWORD dwUserData - 通知とともにユーザに返送されることになるユーザデータ
//IN NOTIFICATIONCONDITION * pCondition -新たなレジストリ値に対する条件の比較が
//真である場合に変化通知が送られるべき条件(いかなる変化も通知をもたらすべきこと
//を示すためにNULLとすることができる)
//OUT HREGNOTIFY * phNotify - 通知要求に対するハンドルを受け取る。このハンドルは
//、このキーに関する通知がもはや必要とされないとき、RegistryCloseNotificationを
//使用して閉じられなければならない。
//
//戻り値:
//HRESULT
//S_OK - 通知の要求が、通知リストに追加された
//E_INVALIDARG - hKey、phNotify、またはpfnRegistryNotifyCallbackが無効である
//エラー値はFACILITY_WIN32 HRESULTとしてラップ
//
//結果:
//SUCCEEDED - これでこの値の変更が行われるたびに、呼び出し元が通知を受けること
//になる。
//FAILED - 変化なし
//
//説明:
//通知要求が、通知リストに追加される。呼び出し元が、RegistryCloseNotificationを
//コールして、さらなる通知を停止し、通知ハンドルを閉じる。このタイプの通知要求は
//、一時的である。つまり、デバイスがリセットされた場合、通知要求はもはや存在しな
//いことになる。クライアントは、コールバックを介して変更について通知されることになる。RegistryNotifyCallbackに対するコールの時点で値が存在しない場合、クライアン
//トは、値が追加されたときに通知を受けることになる。
//
//***********************************************************
HRESULT WINAPI RegistryNotifyCallback(HKEY hKey,
LPCTSTR pszSubKey,
LPCTSTR pszValueName,
REGISTRYNOTIFYCALLBACK pfnRegistryNotifyCallback,
DWORD dwUserData,
NOTIFICATIONCONDITION * pCondition,
HREGNOTIFY * phNotify);

//***********************************************************
//関数名:RegistryCloseNotification
//
//目的:通知の要求を通知リストから削除し、通知ハンドルを閉じるのに使用
//
//引数:
//IN HREGNOTIFY hNotify - 有効なHREGNOTIFYに対するハンドル、RegistryNotify*関数
//の1つが戻されていなければならない
//
//戻り値:
//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 - RegistryNotify*関数の1つが戻された有効なHREGNOTIFYに
//対するハンドル
//IN DWORD dwMillisecondsIdle - 通知が発せられる前に値が一定でなければならない
//ミリ秒数
//IN DWORD dwMillisecondsMax - 最初の変化が生じた時と通知が送られた時の間の最大
//ミリ秒数
//
//戻り値:
//HRESULT
//S_OK - 通知要求がリストから削除された
//E_INVALIDARG - dwMillisecondsIdleがINFINITEに設定される
//E_INVALID_HANDLE - hNotifyが無効である
//エラー値はFACILITY_WIN32 HRESULTとしてラップ
//
//結果:
//SUCCEEDED - 新たなバッチ時刻が設定された
//FAILED - 変化なし
//
//説明://値が変更されると、通知システムは、dwMillisecondsIdleミリ秒間待ち、その後、通知
//を送る。その待ち時間中に別の変化が生じた場合、タイマがリセットされ、通知システ
//ムは、通知を送るのにさらにdwMillisecondsIdleミリ秒間待つことになる。dwMillisec
//ondsIdleにより、通知がずっと送られるのを妨げられることがないようにするため、
//dwMillisecondsMaxが使用される。dwMillisecondsMaxは、最初の通知が着信した時と通
//知が送られた時から経過しうる最大ミリ秒数である。dwMillisecondsMaxが、INFINITE
//に設定された場合、通知は、値がアイドルになるまでバッチ化される。DwMilliseconds
//は、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である。
namespace A.Mobile
{
///デバイスがスタンバイ状態にある間にイベントが生じたときに、何が発生するべきか
///を指定するのに使用
public enum StandbyBehavior
{
///イベントを全く生じさせない
Ignore,
///デバイスをスタンバイ状態から戻し、イベントを生じさせる
Wake,
///別の何らかによってデバイスがウェークアップされると、イベントを生じさせる
Delay
}

public interface IAppLaunchable
{
///この通知の固有名
public string appLaunchId{get;}

///特定の実行可能ファイルおよびコマンドラインパラメータについてこの通知を登録する
///これがコールされるまで、通知はアクティブでない

///<param name=“appLaunchId”>
///この通知の固有識別子
///アプリケーションが閉じた/再起動したときに、バックアップで開くのに使用される
///このIDが既に使用中である場合、例外がスローされる
///</param>
///<param name=“filename”>
///通知が生じたときに起動するアプリケーション
///NULLまたは空である場合、呼び出し実行可能ファイルが使用される
///</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);
///パラメータなしで呼び出し実行可能ファイルについてこの通知を登録する
///これがコールされるまで、通知はアクティブではない
///
///これが、EXEではなくDLLからコールされた場合、例外がスローされる
///DLLは、その他のオーバーロードの1つをコールする必要がある
///<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>
///<returns>通知が登録されている場合、真</returns>
public static bool AppLaunchIdExists(string appLaunchId){}

public event EventHandler Occurred;
///所与の名前を有する新たな永続的通知を作成する
///<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();
}
}

}

namespace A.Mobile.Status
{
///新たな値が所望の値とどのように比較されるべきかを指定する条件付き変化通知に使用される
public enum StateComparisonType
{
///値にかかわらずイベントが生ぜられる。これが既定である
All,
Equal,
NotEqual,
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 ChangeNotificationEventHandler Changed;
}
///システム定義のプロパティが変化したときに生じる一時的通知
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 ChangeNotificationEventArgs : EventArgs
{
public object CurrentValue{get;}
}
}
(管理されたAPIの使用例)
//システムプロパティを照会する
int signal=SystemState.PhoneSignalStrength;
//または...
int signal=(int)SystemState.GetValue(SystemProperty.PhoneSignalStrength);
//または...
SystemState state=new SystemState(SystemProperty.PhoneSignalStrength);
int signal=(int)state.CurrentValue;
――――――――――――――――――――――――――――――――――――――――
//一時的通知の登録
SystemState state=new SystemState(SystemProperty.PhoneSignalStrength);
state.Changed+=new ChangeNotificationEventHandler(...);
――――――――――――――――――――――――――――――――――――――――//条件付けを有する永続的通知の登録
SystemState state;
if(SystemState.AppLaunchIdExists("MyApp.GoodSignal"))
{
state=new SystemState("MyApp.GoodSignal");
}
else
{
state=new SystemState(SystemProperty.PhoneSignalStrength,
ComparisonType.Greater,75);
state.EnableAppLaunch("MyApp.GoodSignal");
}
state.Changed+=new ChangeNotificationEventHandler(...);
――――――――――――――――――――――――――――――――――――――――//スケジュールされた通知の登録
ScheduledNotification daily;
if(ScheduledNotification.AppLaunchIdExists("MyApp.Daily"))
{
daily=new ScheduledNotification("MyApp.Daily");
}
else
{
daily=new ScheduledNotification(DateTime.Now,new TimeSpan(24,0,0));
daily.EnableAppLaunch("MyApp.Daily");
}
daily.Occurred+=new EventHandler(...);
上記の明細、例およびデータは、本発明の構成の製造および使用の完全な説明を提供している。本発明の多くの実施形態は、本発明の趣旨および範囲を逸脱することなく、実施することができるので、本発明は、本明細書に添付された特許請求の範囲に存する。
例示的なコンピューティングデバイスを示す図である。 例示的なモバイルデバイスを示す図である。 例示的な状態管理−通知システムを示す図である。 状態変化通知システムのプロセスを示す図である。 本発明の態様による、状態変化情報を処理するためのプロセスを示す図である。
符号の説明
100 コンピューティングデバイス
102 処理装置
104 システムメモリ
105 オペレーティングシステム
106 プログラムモジュール
107 プログラムデータ
109 リムーバブルなストレージ
110 リムーバブルでないストレージ
112 入力デバイス
114 出力デバイス
116 通信接続
118 他のコンピューティングデバイス
200 モバイルデバイス
228 ディスプレイ
232 キーパッド
240 通信接続
260 プロセッサ
262 メモリ
266 アプリケーション
268 ストレージ
270 電源
272 無線インタフェースレイヤ
274 オーディオインタフェース
300 通知システム
310 状態変化コンポーネント
315 クライアント
320 クライアント
330 データストア
335 通知ブローカ
340 通知リスト
345 キャッシュプロパティ
350 スケジューラ

Claims (25)

  1. 状態プロパティ変化に応答してクライアントに通知を提供するための方法であって、
    状態プロパティに関連付けられた変化に応答して通知を受け取る通知要求をクライアントから受け取ることと、
    デバイス内の異なるコンポーネントによって更新される少なくともいくつかの状態プロパティを含む通知システムに前記状態プロパティが登録されることを確実にすることと、
    前記状態プロパティが変化したときを判定することと、
    前記クライアントが前記状態プロパティ変化の通知を受け取るべきときを判定することと、
    判定されたときに前記状態プロパティ変化を前記クライアントに通知することと
    を備えることを特徴とする方法。
  2. APIを利用して前記状態プロパティに関わるアクションを行うことをさらに備え、前記アクションは、状態プロパティを登録すること、前記状態プロパティを照会すること、および前記状態プロパティを設定することのうちの少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  3. 前記クライアントが通知を受け取るべきときを判定することは、前記状態プロパティに条件式を適用することと、前記条件が満たされたときに前記状態プロパティを前記クライアントに通知することとを備えることを特徴とする請求項2に記載の方法。
  4. 前記条件式は、「すべて」、「等しい」、「等しくない」、「超えている」、「以上」、「以下」、「未満」、「含む」、「で始まる」、および「で終わる」の条件のうちの少なくとも1つを含むことを特徴とする請求項3に記載の方法。
  5. 状態プロパティ変化およびスケジュールされたイベントのうちの少なくとも1つに応答して前記クライアントを起動することをさらに備えることを特徴とする請求項2に記載の方法。
  6. 前記クライアントによって定義されたスケジュールに応答して前記クライアントに通知することをさらに備えることを特徴とする請求項2に記載の方法。
  7. 前記状態プロパティが変化したときを判定することは、所定の期間内に生じた前記状態プロパティの変化に関してバッチ操作を行うことをさらに備えることを特徴とする請求項2に記載の方法。
  8. 前記状態プロパティに関連付けられた前記変化に応答して前記通知を受け取る前記通知要求を前記クライアントから受け取ることは、前記要求に関連付けられた識別子が状態プロパティのカテゴリを判定すると、前記クライアントからの前記通知要求を状態プロパティのグループに関連付け、前記状態プロパティは前記通知システム内で階層的に構成されていることをさらに備えることを特徴とする請求項1に記載の方法。
  9. デバイスの再起動を越えて前記通知要求を永続化することをさらに備えることを特徴とする請求項2に記載の方法。
  10. 状態管理および通知のためのシステムであって、
    状態プロパティに関係する情報を格納するように構成されたデータストアであって、前記状態プロパティの少なくともいくつかが異なるコンポーネントによって変更されるデータストアと、
    前記状態プロパティに関係する操作を行うように構成されたAPIと、
    通知要求を登録し、登録した状態プロパティの変化に応答して通知を受け取るように構成されたクライアントであって、前記通知要求は前記状態プロパティに関連付けられた変化に応答して前記クライアントが通知を受け取るべきときを示すクライアントと、
    通知要求を受け取るように登録されているクライアントを記憶するように構成された通知リストと、
    前記データストア、前記通知リストおよび前記クライアントに結合された通知ブローカであって、
    少なくとも1つのクライアントを前記通知リストに追加する通知要求を受け取ることと、
    前記少なくとも1つのクライアントを前記通知リストに追加することと、
    登録された状態プロパティが変化したときおよび前記状態プロパティが変化したときを判定し、通知を受け取るべきクライアントを判定し、前記判定されたクライアントに前記状態プロパティ変化を通知することと
    を含むアクションを行うように構成されたアプリケーションを含む通知ブローカと
    を備えたことを特徴とするシステム。
  11. 前記APIは、状態プロパティを登録すること、状態プロパティを照会すること、および状態プロパティを設定することのうちの少なくとも1つを行うようにさらに構成されたことを特徴とする請求項10に記載のシステム。
  12. 前記通知を受け取るべきクライアントを判定することは、前記状態プロパティに条件式を適用することと、前記条件が満たされたときに前記クライアントに前記状態プロパティを通知することとを備えたことを特徴とする請求項11に記載のシステム。
  13. 前記条件式は、「すべて」、「等しい」、「等しくない」、「超えている」、「以上」、「以下」、「未満」、「含む」、「で始まる」、および「で終わる」の条件のうちの少なくとも1つを含むことを特徴とする請求項12に記載のシステム。
  14. 状態プロパティ変化およびスケジュールされたイベントのうちの少なくとも1つに応答して前記クライアントを起動することをさらに備えたことを特徴とする請求項11に記載のシステム。
  15. 前記クライアントによって定義されたスケジュールに応答して前記クライアントに通知することをさらに備えたことを特徴とする請求項11に記載のシステム。
  16. 前記状態プロパティが変化したときを判定することは、所定の期間内に生じた前記状態プロパティの変化に関してバッチ操作を行うことをさらに備えたことを特徴とする請求項11に記載のシステム。
  17. 前記状態プロパティは、階層的に構成されたことを特徴とする請求項10に記載のシステム。
  18. 前記データストア内のコンテンツは、デバイスの再起動を越えて永続化することを特徴とする請求項10に記載のシステム。
  19. 状態プロパティに関して操作を行うためのコンピュータ実行可能命令を有するコンピュータ可読媒体であって、
    状態パラメータのグループ内の少なくとも1つの状態プロパティを特定する識別子パラメータを受け取ることであって、状態パラメータの前記グループ内の前記状態パラメータのいくつかは、デバイス内の異なるコンポーネントによって更新されることと、
    前記状態パラメータに関連して行うべき操作を判定することと、
    前記操作を行うことと
    を備えたことを特徴とするコンピュータ可読媒体。
  20. 前記操作は、状態プロパティを登録する操作、前記状態プロパティを照会する操作、条件式を前記状態パラメータに関連付ける操作、および前記状態プロパティを設定する操作のうちの少なくとも1つを含むことを特徴とする請求項19に記載のコンピュータ可読媒体。
  21. 前記操作を行なうことは、前記条件式を前記状態プロパティに適用することと、前記条件が満たされたときに前記クライアントに前記状態プロパティを通知することとを備えたことを特徴とする請求項20に記載のコンピュータ可読媒体。
  22. 前記条件式は、「すべて」、「等しい」、「等しくない」、「超えている」、「以上」、「以下」、「未満」、「含む」、「で始まる」、および「で終わる」の条件のうちの少なくとも1つを含むことを特徴とする請求項21に記載のコンピュータ可読媒体。
  23. 前記操作を行なうことは、前記状態プロパティの変化およびスケジュールされたイベントのうちの少なくとも1つに応答してクライアントアプリケーションを起動することをさらに備えたことを特徴とする請求項20に記載のコンピュータ可読媒体。
  24. 前記操作を行なうことは、前記クライアントによって定義されたスケジュールに応答して前記クライアントに通知することをさらに備えたことを特徴とする請求項20に記載のコンピュータ可読媒体。
  25. 前記操作を行なうことは、所定の期間内に生じた前記状態プロパティの変化に関してバッチ操作を行うことをさらに備えたことを特徴とする請求項20に記載のコンピュータ可読媒体。
JP2004310058A 2003-10-23 2004-10-25 状態変化をアプリケーションに通知するための柔軟性のあるアーキテクチャ Expired - Fee Related JP4790245B2 (ja)

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

Publications (2)

Publication Number Publication Date
JP2005129067A true JP2005129067A (ja) 2005-05-19
JP4790245B2 JP4790245B2 (ja) 2011-10-12

Family

ID=34526892

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004310058A Expired - Fee Related JP4790245B2 (ja) 2003-10-23 2004-10-25 状態変化をアプリケーションに通知するための柔軟性のあるアーキテクチャ

Country Status (5)

Country Link
US (3) US7644376B2 (ja)
EP (1) EP1679596A3 (ja)
JP (1) JP4790245B2 (ja)
KR (1) KR100920850B1 (ja)
CN (2) CN1617501B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007024438A1 (en) * 2005-08-25 2007-03-01 Microsoft Corporation Data change notifications
JP2007133881A (ja) * 2005-11-09 2007-05-31 Samsung Electronics Co Ltd UPnPイベントに関する情報を効率的に送受信する方法及び装置
JP2010520533A (ja) * 2007-02-28 2010-06-10 マイクロソフト コーポレーション 情報技術管理のための存在認識通知
JP2011175633A (ja) * 2010-01-26 2011-09-08 Ntt Docomo Inc 情報処理装置および情報処理方法
JP2013106159A (ja) * 2011-11-11 2013-05-30 Sharp Corp 情報端末、その制御方法、および、制御プログラムおよびコンピュータ読み取り可能な記録媒体

Families Citing this family (99)

* Cited by examiner, † Cited by third party
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 삼성전자주식회사 이동통신 단말기에서 통화 모드를 자동변경하기 위한 장치및 방법
US8418075B2 (en) 2004-11-16 2013-04-09 Open Text Inc. Spatially driven content presentation in a cellular environment
US8001476B2 (en) 2004-11-16 2011-08-16 Open Text Inc. Cellular user interface
US9479468B2 (en) 2005-07-11 2016-10-25 Google Inc. Presenting instant messages
US8225231B2 (en) 2005-08-30 2012-07-17 Microsoft Corporation Aggregation of PC settings
KR100717047B1 (ko) * 2005-10-20 2007-05-10 삼성전자주식회사 간편하게 웹 페이지를 표시하는 방법 및 장치
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
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
US20080039169A1 (en) * 2006-08-03 2008-02-14 Seven Lights, Llc Systems and methods for character development in online gaming
US9417758B2 (en) * 2006-11-21 2016-08-16 Daniel E. Tsai AD-HOC web content player
US8015571B2 (en) * 2007-03-16 2011-09-06 Google Inc. Registering an event
JP4413941B2 (ja) * 2007-03-22 2010-02-10 株式会社東芝 情報処理装置
US20090017802A1 (en) * 2007-04-13 2009-01-15 At&T Mobility Ii Llc Undelivered Call Indicator
US8805346B1 (en) 2007-04-13 2014-08-12 At&T Mobility Ii Llc Caller information retrieval system for unavailable calls
JP5088080B2 (ja) * 2007-10-04 2012-12-05 ソニー株式会社 電子機器及び異常状態表示方法
US20090210822A1 (en) * 2008-02-18 2009-08-20 Microsoft Corporation Locating meeting users
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
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
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
US20120066694A1 (en) 2010-09-10 2012-03-15 International Business Machines Corporation Event overflow handling by coalescing and updating previously-queued event notification
US8694625B2 (en) * 2010-09-10 2014-04-08 International Business Machines Corporation Selective registration for remote event notifications in processing node clusters
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
US20120159395A1 (en) 2010-12-20 2012-06-21 Microsoft Corporation Application-launching interface for multiple modes
US20120159383A1 (en) 2010-12-20 2012-06-21 Microsoft Corporation Customization of an immersive environment
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
GB2501180B (en) * 2011-01-28 2020-06-17 Hewlett Packard Development Co Distributing information
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
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
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
US8893033B2 (en) 2011-05-27 2014-11-18 Microsoft Corporation Application notifications
US9658766B2 (en) 2011-05-27 2017-05-23 Microsoft Technology Licensing, Llc Edge gesture
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
US10353566B2 (en) 2011-09-09 2019-07-16 Microsoft Technology Licensing, Llc Semantic zoom animations
US8922575B2 (en) 2011-09-09 2014-12-30 Microsoft Corporation Tile cache
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
US9244802B2 (en) 2011-09-10 2016-01-26 Microsoft Technology Licensing, Llc Resource user interface
US9146670B2 (en) 2011-09-10 2015-09-29 Microsoft Technology Licensing, Llc Progressively indicating new content in an application-selectable user interface
WO2013040674A1 (en) * 2011-09-23 2013-03-28 Research In Motion Limited System and method for managing transient notifications using sensors
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
JP6342014B2 (ja) 2014-04-09 2018-06-13 コンヴィーダ ワイヤレス, エルエルシー サービスイネーブラ機能
CN105378582B (zh) 2014-04-10 2019-07-23 微软技术许可有限责任公司 计算设备的可折叠壳盖
EP3129847A4 (en) 2014-04-10 2017-04-19 Microsoft Technology Licensing, LLC Slider cover for computing device
US10592080B2 (en) 2014-07-31 2020-03-17 Microsoft Technology Licensing, Llc Assisted presentation of application windows
US10678412B2 (en) 2014-07-31 2020-06-09 Microsoft Technology Licensing, Llc Dynamic joint dividers for 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
CN106662891B (zh) 2014-10-30 2019-10-11 微软技术许可有限责任公司 多配置输入设备
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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08129536A (ja) * 1994-10-28 1996-05-21 Oki Electric Ind Co Ltd イベント処理システム
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
JP2003044320A (ja) * 2001-07-31 2003-02-14 Pfu Ltd 教育システム
JP2003337710A (ja) * 2002-05-17 2003-11-28 Ntt Docomo Inc 電子機器、イベント提供方法、プログラム、及び記録媒体

Family Cites Families (161)

* Cited by examiner, † Cited by third party
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
CA2067650C (en) 1991-07-24 1996-10-22 Eric Jonathan Bauer Method and apparatus for operating a computer-based file system
CA2067633C (en) 1991-07-24 1996-10-01 Eric Jonathan Bauer Method and apparatus for accessing 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
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
US5434974A (en) 1992-03-30 1995-07-18 International Business Machines Corporation Name resolution for a multisystem network
US5359724A (en) 1992-03-30 1994-10-25 Arbor Software Corporation Method and apparatus for storing and retrieving multi-dimensional data in computer memory
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
EP0820008A3 (en) 1992-12-01 2006-05-24 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
US5721922A (en) 1994-10-13 1998-02-24 Intel Corporation Embedding a real-time multi-tasking kernel in a non-real-time operating system
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
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
DE69615565T2 (de) 1995-07-20 2002-07-11 Novell Inc Transaktionssynchronisierung in einem netz abtrennbarer rechner
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
DE69720857T2 (de) * 1996-05-31 2004-02-05 Hewlett-Packard Co. (N.D.Ges.D.Staates Delaware), Palo Alto Systeme und Verfahren zum Betrieb einer Netzwerk-Verwaltungsstation
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
US6016478A (en) 1996-08-13 2000-01-18 Starfish Software, Inc. Scheduling system with methods for peer-to-peer scheduling of remote users
KR100260028B1 (ko) 1996-08-13 2000-06-15 윤종용 화일시스템의 정보 복구방법
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
US5826265A (en) 1996-12-06 1998-10-20 International Business Machines Corporation Data management system having shared libraries
US5920873A (en) 1996-12-06 1999-07-06 International Business Machines Corporation Data management control system for file and database
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
US5991778A (en) 1997-09-30 1999-11-23 Stratfor Systems, Inc. Method and apparatus for real-time secure file deletion
US6070174A (en) 1997-09-30 2000-05-30 Infraworks Corporation 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
CA2307635C (en) * 1997-11-05 2004-07-06 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
EP1058884A1 (en) * 1998-02-26 2000-12-13 Sun Microsystems, Inc. Method and system for facilitating access to a lookup service
US6098093A (en) * 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
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
US6915457B1 (en) * 1999-04-23 2005-07-05 Nortel Networks Limited Apparatus and method for monitoring messages forwarded between applications
US7950017B1 (en) * 1999-04-23 2011-05-24 Avaya Inc. Apparatus and method for forwarding messages between two 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
WO2001069387A2 (en) * 2000-03-16 2001-09-20 Microsoft Corporation Notification platform architecture
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
US20020105548A1 (en) * 2000-12-12 2002-08-08 Richard Hayton Methods and apparatus for creating a user interface 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
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
GB0223498D0 (en) * 2002-10-09 2002-11-13 Nokia Corp Provision of information regarding a mobile station
US7809384B2 (en) * 2002-11-05 2010-10-05 Microsoft Corporation User-input scheduling of synchronization operation on a mobile device based on user activity
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08129536A (ja) * 1994-10-28 1996-05-21 Oki Electric Ind Co Ltd イベント処理システム
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
JP2003044320A (ja) * 2001-07-31 2003-02-14 Pfu Ltd 教育システム
JP2003337710A (ja) * 2002-05-17 2003-11-28 Ntt Docomo Inc 電子機器、イベント提供方法、プログラム、及び記録媒体

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007024438A1 (en) * 2005-08-25 2007-03-01 Microsoft Corporation Data change notifications
JP2007133881A (ja) * 2005-11-09 2007-05-31 Samsung Electronics Co Ltd UPnPイベントに関する情報を効率的に送受信する方法及び装置
US8054831B2 (en) 2005-11-09 2011-11-08 Samsung Electronics Co., Ltd. Method and apparatus for transmitting and receiving information regarding UPnP event
JP2010520533A (ja) * 2007-02-28 2010-06-10 マイクロソフト コーポレーション 情報技術管理のための存在認識通知
US8671146B2 (en) 2007-02-28 2014-03-11 Microsoft Corporation Presence aware notification for information technology management
JP2011175633A (ja) * 2010-01-26 2011-09-08 Ntt Docomo Inc 情報処理装置および情報処理方法
JP2013106159A (ja) * 2011-11-11 2013-05-30 Sharp Corp 情報端末、その制御方法、および、制御プログラムおよびコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
CN102291446B (zh) 2014-11-26
US7644376B2 (en) 2010-01-05
EP1679596A2 (en) 2006-07-12
CN1617501B (zh) 2011-09-14
US8990695B2 (en) 2015-03-24
CN102291446A (zh) 2011-12-21
US20150150027A1 (en) 2015-05-28
JP4790245B2 (ja) 2011-10-12
KR100920850B1 (ko) 2009-10-09
US20050091219A1 (en) 2005-04-28
US10169111B2 (en) 2019-01-01
KR20050039665A (ko) 2005-04-29
CN1617501A (zh) 2005-05-18
US20100077310A1 (en) 2010-03-25
EP1679596A3 (en) 2007-08-22

Similar Documents

Publication Publication Date Title
JP4790245B2 (ja) 状態変化をアプリケーションに通知するための柔軟性のあるアーキテクチャ
US7716651B2 (en) System and method for a context-awareness platform
US9448680B2 (en) Power efficient application notification system
KR101739216B1 (ko) 중앙집중식 태스크 스케줄링
EP2665001B1 (en) Architectural pattern for persistent web application design
US8621494B2 (en) Managing processes within suspend states and execution states
EP2756389B1 (en) Managing processes within suspend states and execution states
US7647075B2 (en) Terminal device and program
US20140068624A1 (en) Quota-based resource management
US20060253548A1 (en) Method and system for hosting and executing a component application
JP2012523048A (ja) ソフトウェアアプリケーションの起動コストを低減するためのシステムおよび方法
KR101943133B1 (ko) 중단 상태 및 실행 상태에 있는 프로세스의 관리 기법
JP2015511749A (ja) ローカル・データーおよびリモート・データーの同期
US7191449B2 (en) System and method for providing componentized transports and forms
JP2002163118A (ja) 情報処理装置及びその方法、コンピュータ可読メモリ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071025

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20091210

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091215

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100305

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110314

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110317

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110413

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20110414

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110414

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110511

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110516

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110610

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110701

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110720

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140729

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4790245

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees