JP2004310745A - 共有リソースのための通知方法 - Google Patents

共有リソースのための通知方法 Download PDF

Info

Publication number
JP2004310745A
JP2004310745A JP2004050482A JP2004050482A JP2004310745A JP 2004310745 A JP2004310745 A JP 2004310745A JP 2004050482 A JP2004050482 A JP 2004050482A JP 2004050482 A JP2004050482 A JP 2004050482A JP 2004310745 A JP2004310745 A JP 2004310745A
Authority
JP
Japan
Prior art keywords
notification
listener
session
client
registration
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
JP2004050482A
Other languages
English (en)
Other versions
JP4638676B2 (ja
Inventor
Adina M Trufinescu
エム.トルフィンスク アディナ
Khaled S Sedky
エス.セドキ ハレド
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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2004310745A publication Critical patent/JP2004310745A/ja
Application granted granted Critical
Publication of JP4638676B2 publication Critical patent/JP4638676B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J42/00Coffee mills; Spice mills
    • A47J42/02Coffee mills; Spice mills having grinding cones
    • A47J42/10Grinding cones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1203Improving or facilitating administration, e.g. print management
    • G06F3/1207Improving or facilitating administration, e.g. print management resulting in the user being informed about print result after a job submission
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1259Print job monitoring, e.g. job status
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • G06F3/1288Remote printer device, e.g. being remote from client or server in client-server-printer device configuration
    • AHUMAN NECESSITIES
    • A47FURNITURE; DOMESTIC ARTICLES OR APPLIANCES; COFFEE MILLS; SPICE MILLS; SUCTION CLEANERS IN GENERAL
    • A47JKITCHEN EQUIPMENT; COFFEE MILLS; SPICE MILLS; APPARATUS FOR MAKING BEVERAGES
    • A47J42/00Coffee mills; Spice mills
    • A47J42/38Parts or details

Abstract

【課題】ユーザインターフェースメッセージが、要求の責任を担うユーザに表示されないので、リソースを要求しているユーザが、リソース要求の失敗が生じたことに気付かないことがある。
【解決手段】 共有リソースからの通知を、適切なクライアントに向けて送ることができる。クライアントのリスナ登録を、共有リソースの送信者登録と一致させて、共有リソースから適切なクライアントに通知を転送することができる。ターミナルサーバまたはユーザ簡易切り替え環境において、リスナ登録によって、リスナがセッションに関連する通知に関与することを指定することができる。ローカルまたはリモートセッションに関連する処理についての通知を、その処理を開始したセッションにルーティングすることができる。通知の処理を求める要求は、同じマシンからでも、異なるマシンからでも開始することができる。ユーザ名またはセキュリティコンテキストについての通知を、要望どおりに示すことができる。双方向通信をサポートすることができる。通知を使用して、ユーザインターフェース表示を生成することができる。
【選択図】 図3B

Description

本技術分野は、コンピュータネットワーク上で共有されるリソースなどの共有リソースのための通知方法に関する。
組織は、費用効果の大きい高いレベルの生産性を維持するために、共有コンピューティングリソースにますます依存している。多数のリソースが共有され得るが、共有リソースの身近な例は、一般に印刷キューを用いて共有されるプリンタである。プリンタに印刷しようとする者は、キューに印刷ジョブを追加するソフトウェアを起動する。印刷ジョブは最終的に、適切なソフトウェア(印刷モニタ、印刷ドライバなど)によって処理され、印刷文書などの適切な出力が生成される。
ターミナルサーバ環境
図1に、印刷サービス114などのリソースを共有するための例示的な従来のシステム100を示す。この例は、複数のユーザのためのユーザインターフェース104、106および108をサポートする、ターミナルサーバソフトウェア(terminal server software)102を含む。ユーザインターフェース104は、ターミナルサーバソフトウェア102を実行するコンピュータの物理コンソール(モニタやキーボードなど)103に関連付けられるという点で特殊なケースである。コンソール103にアクセスするには一般に、ターミナルサーバソフトウェア102が実行されているコンピュータシステムに物理的にアクセスすることが必要なので、実際には、コンソールユーザインターフェース(console user interface)104に関連する処理は、特権アクセス権に関連付けることができる。ユーザインターフェース106および108を、ネットワーク110を介してコンソール103からリモートで表示することができる。したがって、こうしたユーザインターフェースに特権アクセス権を付与することが望ましくないことがある。
図示するユーザインターフェースのいずれかを使用して、メールサービス、印刷サービス、ファイルサービスなどの共有リソースと対話することができる。こうした共有リソースに対して操作を実施する場合は、こうしたサービスが、そのタスクを遂行するために特権リソースにアクセスするので、ローカルコンソール(local console)103(セッション0など)に関連する特別なセッション内で共有サービスを実行するのが従来のやり方である。共有リソースについてのメッセージが生成されると、そのメッセージは、適切なタスクに関連するユーザインターフェースに向けられる。したがって、共有サービスでは、こうしたメッセージが、コンソール(セッションユーザインターフェース(session user interface)104など)に送られる。
たとえば、ユーザは、印刷サービスを要求するために、ネットワーク110を介してターミナルサーバ102と通信して、リモートコンソール上のユーザインターフェース106と対話することができる。印刷ドライバは、ローカルコンソールのもとで(すなわちセッション「0」で)実行されている印刷サービス(スプーラなど)によってホストされているため、プリンタ114が、プリンタの紙切れを示すメッセージを付けて印刷要求に応答する場合には、そのメッセージが、コンソール103に関連するグラフィカルユーザインターフェース104に表示される。したがって、リモートのユーザインターフェース106で印刷サービスを要求したユーザは、そのプリンタのメッセージを認識しない。
ユーザ簡易切り替え(fast−user−switch)
図2に、印刷サービス222などのリソースを共有するための別の例示的な従来システム200を示す。この例では、コンピュータ206が、「ユーザ簡易切り替え」機能を提供する。ユーザ「D」用のユーザインターフェース表示204がコンピュータ206上に現在示されている場合は、ユーザ「D」をログアウトしないで、ユーザ「E」が、(たとえば適切なコマンドを用いて)ユーザインターフェース表示204をユーザ「E」用の表示212に切り替えることができる。実際には、表示を切り替える前に、パスワードが要求されることがある。同様に、ユーザ「F」がコンピュータ206を使用しようとする場合は、ユーザ「F」がコマンドをアクティブ化することができ、ユーザ「E」をログアウトしないで、ユーザ「F」用のユーザインターフェース表示214が、コンピュータ206上に表示される。
この例では、ユーザ「D」204が共有リソース(印刷キューなど)にサービスを要求し、プリンタから紙切れのメッセージが受信される場合は、印刷を要求したユーザではなく、コンピュータ206が紙切れのメッセージを受信するときに、どのユーザが画面を制御していようとも、そのユーザ表示上にメッセージが表示される。
こうした例では、ユーザインターフェースメッセージが、要求の責任を担うユーザに表示されないので、リソースを要求しているユーザが、リソース要求の失敗が生じたことに気付かないことがある。
ここで述べる技術によって、クライアントのために共有リソースからの通知を提供することができる。たとえば、1つまたは複数の共有リソースと対話している1人または複数のクライアントに、1つまたは複数の通知を送信することができる。
いくつかの例では、複数のクライアントが1つまたは複数の共有リソースを使用する。共有リソースを使用するクライアントは、リスナとして、通知サーバに登録することができる。共有リソースが通知を送る場合には、通知サーバによって、その通知に関連する1つまたは複数のプロパティが、登録されているクライアントに関連する1つまたは複数のプロパティに一致すると判断されたときに、その通知がクライアントに転送される。
送信者登録を用いて、プロパティを通知に関連付けることができる。プロパティは、セッション識別子、ユーザ識別子、通知タイプなどを含み得る。一致を判断するために、通知サーバ上のフィルタ方法を用いることができる。
例によっては、ターミナルサーバが複数のセッションを処理する。セッションに関連する通知を受信するため、セッションについての登録を作成することができる。共有リソースがコンソールセッションで実行されている場合、共有リソース呼び出しの責任を担うセッションに、通知をやはり送り返すことができる。この通知を使用して、そのセッションについてのユーザインターフェース表示を生成することができる。たとえば、ユーザインターフェース表示では、共有リソースの状態を示すことができる。
コンソールセッションで実行されている共有リソースが通知サーバに通知を送信すると、通知サーバは、共有リソース呼び出しの責任を担うセッションの表示を含み得る、共有リソースについての登録済みプロパティを比較する。共有リソースについて登録された適切なプロパティが、そのセッションについて登録されたプロパティと一致することが判断されると、それに従って通知が転送される。その通知を使用して、ユーザインターフェース表示を生成する(たとえば、共有リソースを要求したセッションについてのユーザインターフェースを生成する)ことができる。
複数のセッションを伴うターミナルサーバまたは他のシナリオでは、共有リソースを要求した通知用のユーザインターフェース表示を生成することによって、プライバシーを保護し、セキュリティを強化することができる。通知は、別のユーザから見られない、またはアクセスされない私的なまたはセキュリティの情報を含み得る。さらに、通知は、関連する機能(処理のキャンセルなど)を含み得る。別のユーザによってアクセス可能であり得るコンソールセッションに通知を送信するのではなく、リソースを要求したセッションによる処理のため通知が送信される。このようにして、リソース要求およびリソース制御に関する表示情報が、リソースを要求した当事者の元にとどまることになる。
通知サービスは、通知に対する返信をサポートすることができる。したがって、双方向通信をサポートすることができる。
登録に関連するプロパティを、登録側クライアントまたは共有リソース以外のソースから取得することができる。たとえば、クライアントの登録呼び出しに関する情報またはセキュリティコンテキスト(security context)からプロパティを取得することができる。セッション識別子の場合、呼び出し側クライアントに関連するセッション識別子を、以降の取出し(クライアントによって使用される共有リソースの登録時など)に備えて格納することができる。
通知サービスは、通知に含まれるデータに関係なく動作することができる。たとえば、通知タイプによって、通知がどのように処理されるかを示すことができる。通知サービスは、どんな通知タイプの通知をも処理し転送することができる。
追加の特徴および利点は、添付の図面を参照して行う、図示する実施形態についての以下の詳細な説明から明らかになろう。
(実施例1)
例示的なシステム概要
図3Aに、共有リソース306についての通知を適切なクライアント326に向けて送る、例示的なシステム300を示す。たとえば、通知316に関連するプロパティとクライアント326に関連するプロパティの比較に基づいて、通知316をクライアント326に転送することができる。1つの共有リソース306、1つの通知316、および1つのクライアント326だけが示されているが、実際には、システムは、複数のリソース306、複数の通知316、複数のクライアント326、またはその何らかの組合せを含み得る。
(実施例2)
別の例示的なシステム概要
図3Bに示す例示的なシステム330では、1つまたは複数の通知が、1つまたは複数の共有リソース332から通知サーバ334に送信され、この通知サーバは、1つまたは複数のクライアント340A、340Bに、少なくともその通知の表示を送信する(通知の転送など)。他の仲介が通知の転送に関与することがあり、共有リソースまたはクライアントは、通知サーバによってホスト(たとえば、通知サーバと同じプロセスで実行)され得る。
この例では、通知サーバ334は、共有リソースに関連付けられており、通知が共有リソース332から受信されたときに参照される送信者登録336を含む。同様に、リスナ登録338Aは、クライアント340Aに関連付けられており、受信された通知がクライアント340Aに一致し、そこに転送すべきかどうかを判断するために参照される。同様に、リスナ登録338Aは、クライアント340Bに関連付けられる。
登録336、338A、338Bは、プロパティ337、339A、339Bをそれぞれ含む。通知ルーティングの制御のため、送信者プロパティ337をリスナプロパティ(listener property)339A、339Bと比較して、一致しているものがあるかどうかを判断することができる。プロパティのサブセットが同一であるかどうかなど、様々なやり方で一致を定義することができる。プロパティによっては、一致するいずれかの値として定義することができる。
(実施例3)
別の例示的なシステム概要
図3Cに、通知をクライアントに送信する、別の例示的なシステム350を示す。例示的なシステム350では、1つまたは複数のクライアント352、354が、1つまたは複数のサーバ356、358を使用して、1つまたは複数の共有リソース357、359に(たとえば要求360、362を介して)アクセスする。さらに、クライアント352は、通知サーバ364に、リスナとして登録して、リスナ登録366を作成することができ、サーバ356は、通知サーバ364に、送信者として登録して、送信者登録368を作成することができる。
この例では、送信者登録368を有する共有リソースサーバ356によって通知が生成されると、通知サーバ364のフィルタ方法370が、通知の表示を受信するために登録されているクライアントがいるかどうかを判断する。たとえば、クライアント352は、特定のサーバ356の共有リソースについて関連するリスナ登録366を有しており、フィルタ370によって、そのクライアントがリスナ登録366のプロパティに一致する通知のために登録されていると判断された場合に、通知の表示を受信する。
この例では、図3Cに示すエンティティ(クライアント352、354、サーバ356、358および通知サーバ364など)は、プロセスアドレス空間(process address space)に依存しない。たとえば、エンティティは、同じプロセス空間で実行されるオブジェクトでも、同じプロセス空間で動作するスレッドでも、またネットワーク上のどこかで、異なるマシン上の異なるプロセス空間でそれぞれが動作する別個のプロセスでもよい。またシナリオは、共有された別個のプロセスまたはアドレス空間の置換えおよび組合せを含み得る。いずれの例でも、共有リソース、クライアントまたサーバは、プログラム、プロセス、スレッド、(たとえばオブジェクトモデルによる)コンポーネント、複合プログラム、(たとえば動的にリンクまたはパッケージ化された)複合コンポーネントなどであり得る。
(実施例4)
例示的な共有リソース
いずれの例でも、1つまたは複数のサーバによって、1つまたは複数のクライアントから1つまたは複数の共有リソースにアクセスできるようになる。例示的な共有リソースは、ファイルサービス、メールサービス、印刷サービス、あるいは他の任意の共有アプリケーション、プログラムまたはサービスを含む。
プリンタなどの物理デバイスは時には、共有リソースと称されるが、適切なソフトウェアの対応物(印刷キューなど)がしばしば存在する。
いずれの例でも、共有リソースは、関連するサーバに対してローカルにでも、外部的にでも実行することができる。たとえば、サーバは、共有リソースの実行をホストすることができる。
(実施例5)
印刷シナリオにおける例示的な共有リソース
いずれの例にも適用される例示的なプリンタシナリオ(printer scenario)では、印刷スプーラは、コンソールセッション(すなわち「0」)の、ターミナルサーバ環境で実行される通知サーバの働きをし、共有リソースは、通知サーバによってホストされる印刷ドライバであり得る。
こうしたシナリオでは、印刷スプーラ/通知サーバは、印刷ドライバ、印刷プロセッサ、印刷モニタなどスプーラによってホストされているコンポーネントが、様々なセッションおよびセキュリティコンテキストで実行されているアプリケーションに通知を送信(またそこから返信を受信する)するやり方を提供する。したがって、スプーラプロセスで実行される印刷コンポーネントは、印刷ジョブが開始されたセッションまたはコンテキストに、ユーザインターフェース通知を送信することができる。このシナリオを用いて、クライアント/コンポーネントがスプーラアドレス空間(spooler address space)の内部に存在しようが、外部に存在しようが、登録されているどのクライアント/コンポーネントにも通知を送信することができる。
別のシナリオでは、印刷プロセッサの手差し両面コンポーネントが共有リソースになることがあり、通知システムを使用して、クライアントコンポーネントに通知を送信して、ユーザにページをめくるように伝えるユーザインターフェースを表示する。別のシナリオでは、ドライバ自動構成コンポーネントが共有リソースになることがあり、通知システムを使用して、ドライバのリッチ状態(rich status)を更新する。別のシナリオでは、ファックスコンポーネントが共有リソースになることがあり、通知システムを使用して、ファックスが受信されたことの通知を送信する。
(実施例6)
例示的なリスナおよび送信者プロパティ
リスナおよび送信者のプロパティは様々な形をとり得る。一実装では、少なくとも1つの識別コンテキストプロパティ(identity context property)が、通知に関連付けられる。次いで通知に関連付けられた識別コンテキストプロパティを、(たとえば登録を用いて)潜在的なリスナのプロパティ(リスナの登録に関連付けられたプロパティなど)と比較し、もしあれば、一致するものを見つけることができる。
識別コンテキストプロパティは、ユーザ識別子、セキュリティコンテキスト識別子(セキュリティidすなわち「SID」など)、セッション識別子(ターミナルサーバセッション(terminal server session)の識別やユーザ簡易切り替えセッションの識別など)、またその何らかの組合せを含み得る。
ターミナルセッション識別子(terminal session identifier)は、数あるセッションからあるセッションを識別できるほど十分な1つまたは複数の識別子を含むことができる。場合によっては、こうした識別子は、複数のターミナルサーバ上の複数のセッションを区別し得る。
識別コンテキストプロパティの代わりに、またはそれに加えて使用することができる他の例示的なリスナおよび送信者プロパティは、通知タイプ(グローバル一意識別子、メッセージ形式識別子、タイプバージョン番号、タイプ有効期限など)、通信タイプまたはプロトコルタイプ(双方向チャネル、単一方向チャネル、非同期メッセージなど)、プロセス識別子、共有リソース識別子、マシン識別子、ネットワーク場所情報、別の識別またはネットワークトポロジの識別子(network topological identifier)、他のメッセージルーティングまたは識別情報、あるいはその何らかの組合せを含む。
適切なプロパティを指定することによって、リスナは、どの通知を受信したいかを指定することができる。一部の場合では、(たとえばユーザの識別またはセッションを指定するときなど)プロパティを、送信者/リスナによって指定することができるが、他の場合では、送信者/リスナについてのプロパティを収集し、確認し、またその両方を行うことができる。
(実施例7)
通知を処理するための方法の例示的な概要
図4Aに、通知の送信を遂行するための例示的な方法400を示す。この方法および本明細書で示す他のいずれの方法も、コンピュータ実行可能命令を用いてソフトウェアで実装することができる。
402で、共有リソースについての通知が受信される。422で、通知に基づいてまたそれに応答して、少なくともその通知の表示が、(送信者とリスナなどの)プロパティの比較に基づく適切なクライアントに送信される(たとえば通知が転送される)。こうしたプロパティは、たとえば送信者(共有リソースやサーバなど)およびリスナ(サーバまたは共有リソースのクライアントなど)の登録時に判断することができる。
422の送信される通知は、402の受信された通知と同じフォームを含んでも、それと同じフォーム(たとえば通知を転送する)でも、また異なるフォームでもよい。図4Aに示す操作は、通知サーバでも、他の何らかのソフトウェアでも実施することができる。
(実施例8)
登録を含む例示的な方法
図4Bに、登録を用いて通知の送信を遂行するための例示的な方法450を示す。456で、送信者(サーバや他の共有リソースなど)が、登録要求の結果として、通知送信のため(通知サーバなどに)登録される。実際は、こうした登録要求は、通知を送信しようとするエンティティ(サーバまたは他の共有リソース)によって送信されるが、送信者の代理で、(たとえば共有リソース用のサーバによって)登録を実施することができる。
送信者の登録は、送信者プロパティを取得することを含み得る。この送信者プロパティは、(たとえばパラメータを用いて)登録要求自体に設けられることも、何らかの別の方法によって(たとえば、要求のソースに関する情報を判断することによって)決定されることもある。送信者プロパティは、本明細書で述べるどの例示的な送信者プロパティをも示すことができる。
送信者の登録は、送信者プロパティを送信者に関連付けることを含み得る。ある例では、送信者登録コンポーネントが作成され、関連付けが、(たとえば識別子によって)送信者に関連付けられたプロパティおよび送信者識別子(共有リソース識別子など)を保持する、コンポーネント内に(たとえばデータ構造体として)含められる。
458で、登録要求の結果として登録を受信するため、リスナ(クライアントなど)を(通知サーバなどに)登録する。実際には、こうした登録要求は、リスナから送信されるが、登録をリスナの代理で実施することができる。
リスナの登録は、リスナのプロパティを取得することを含み得る。このリスナプロパティは、(たとえばパラメータを用いて)登録要求自体に設けられることも、何らかの別の方法によって(たとえば、要求のソースに関する情報を判断することによって)決定されることもある。リスナプロパティは、本明細書で述べる例示的な、どのリスナプロパティをも示すことができる。
リスナの登録は、リスナプロパティをリスナに関連付けることを含み得る。ある例では、リスナ登録コンポーネントが作成され、プロパティは、コンポーネントに(たとえばデータ構造体として)格納され、(たとえば識別子によって)リスナに関連付けられる。
460で、共有リソースについての通知が(たとえばそこから)受信される。いずれの例でも、通知は、共有リソースから送信されたオブジェクトを示すことを含み得る。オブジェクトは、通知を表し、通知のためのデータを含むことができる。
466で、通知を受信したことに応答して、この方法では、(たとえば、通知を送信する共有リソースによって登録されている)送信者プロパティを、登録されているリスナプロパティと比較する。468で、もしあれば、登録済みの送信者プロパティに一致する登録済みのリスナプロパティを有する1つまたは複数のリスナ(クライアントなど)に、少なくともその通知の表示が送信される(たとえば通知が転送される)。
特権を有する一部のクライアント(管理者によって実行されるコンポーネントなど)は、(たとえば特権を有するなど)特殊なタイプの通知、また他のユーザに送信される通知のために登録することができる。こうしたケースでは、プロパティ間の一致は、適切な送信者プロパティ(ユーザ識別子など)が、同じプロパティのいずれかの値(いずれかのユーザなど)または特定の値(指定されたユーザなど)のプロパティと一致するように定義することができる。
またクライアントコンポーネント自体が、こうした通知のためにプロパティを登録していないとしても、特権を有するクライアントは、他のコンポーネントにある特定の通知(他のセッションについての通知など)を受信させるために登録を作成することができる。
所望であれば、次いで登録を閉じることができ、または追加の通知を送信することができる。474で、送信者の登録を閉じる。478で、リスナの登録を閉じる。
図面では、明示的には図示されていないが、シナリオによっては、この方法は、様々な要求を受信する間は待機状態になり得る。所望であれば、操作の順序(456/458および474/478など)は並べ替えても、逆にしてもよい。したがって、非同期動作をサポートすることができる。
(実施例9)
印刷シナリオにおける登録を伴う例示的な方法
図4Bに示す方法を、様々な印刷シナリオで使用することができる。あるシナリオでは、クライアントコンポーネントは、そのセキュリティコンテキストで実行される間に印刷ドライバコンポーネントによって生成される通知のために登録する。別のシナリオでは、クライアントコンポーネントは、ある特定のターミナルセッション(クライアントと同じターミナルセッションなど)で実行される印刷モニタコンポーネントによって生成される通知のために登録する。別のシナリオでは、クライアントコンポーネントは、特定の通知タイプのスプーラ通知のために登録する。
このようにして、クライアントに所望の通知を提供することができる。クライアントは、印刷サーバと同じマシン上でも、異なるマシン上でも実行することができる。クライアントマシンは、ユーザがリモートでターミナルサーバセッションに接続する、ターミナルサーバであり得る。
(実施例10)
例示的なクライアント登録および通知方法
図5に、通知サーバから通知を受信するためにリスナプロパティを登録するクライアントプログラムによって実施される例示的な方法500を示す。あるシナリオでは、クライアントは、ターミナルサーバで実行されるセッションに関連付けられる。別のシナリオでは、クライアントは、複数のユーザ(ユーザ状態など)のうち1つに関連付けられ、ユーザは、あるコンピュータ環境で、ログオンまたはログオフを行わないで、複数ユーザ間の切り替えを行うことができる。クライアントは一般に、共有リソースにサービスを要求し、通知サーバを介して通知のために登録する複数のクライアントのうち1つである。
502で、クライアントは、通知サーバに、1つまたは複数のリスナプロパティを登録する。リスナプロパティは、パラメータを用いてクライアントから、または別の方法で(たとえばクライアントがどのセッションで実行されているかを判断することによって)取得することができる。上述のように、管理者の代理で実行されるコンポーネントは、追加の機能を有し得る。次いでクライアントは、通知サーバから登録済みプロパティと一致する通知を受信するまで、他の処理タスクを続けることができる。
504で、クライアントが通知を受信する。こうした通知は、クライアントのために登録されたプロパティと、(たとえば通知の送信者のために登録された)通知に関連するプロパティの一致に基づいてクライアントに転送することによって発信することができる。
506で、通知が受信されると、クライアントはその通知を処理する。この例では、クライアントコンポーネントが画面用のユーザインターフェース表示(ダイアログボックス(dialog box)や他のグラフィカルユーザインターフェース要素)を生成する。たとえば、ユーザインターフェース表示では、共有リソースの状態(エラー処置のためユーザに表示されるエラー状態など)を示すことができる。しかし、適切な機能を指定することによって、他のどんな処理も可能である。
あるシナリオでは、適切なユーザインターフェースが、リスナプロパティまたは通知オブジェクト自体に置かれた通知タイプ識別子(グローバル一意識別子など)を用いて、クライアントコンポーネントによって識別される。ターミナルサーバのセッションで実行されるクライアントを伴う例では、生成されたユーザインターフェースをリモートターミナルで表示することができる。
受信504および処理506の繰り返しを、複数回、実施することができる。所望であれば、また通知サーバからの追加の通知を望まない場合には、512で、クライアントは、通知サーバに登録されているリスナプロパティを閉じるように要求することができる。再登録することによって、追加の通知を受信することができる。あるシナリオでは、クライアントが他のコンピューティングタスクを処理しており、コンポーネントの寿命は、クライアントが、いずれかの共有リソースから通知を受信するために、どのくらいの期間登録されているかによって限定されるものではない。
(実施例11)
例示的な共有リソースの登録および通知方法
図6に、通知を送信するための送信者プロパティ登録のため、共有リソースによって実行される例示的な方法600を示す。あるシナリオでは、共有リソースは、印刷スプーラで実行される印刷コンポーネントである。別のシナリオでは、スプーラは、印刷コンポーネントの共有リソースをホストする通知サーバである。別のシナリオでは、共有リソースは、複数のユーザによって共有されるコンピュータ上で実行される印刷ドライバであり、ユーザは、ログオンまたはログオフなしに、ユーザ状態の切り替えを行うことができる。共有リソースは一般に、通知サーバからの通知のために登録している複数の要求元クライアントにリソースを提供する。
602で、共有リソースは、通知サーバに、1つまたは複数の送信者プロパティを登録する。送信者プロパティは、(たとえばパラメータを用いて)共有リソースから、または別の方法(たとえば共有リソースがどのセッションで実行されているかを判断することによって)取得することができる。
604で、共有リソースは、通知サーバに通知を送信する。こうした通知を最後には、適切な登録済みプロパティを有する1つまたは複数のクライアントに転送することができる。送信604を繰り返すことによって、2つ以上の通知を送信することができる。
所望であれば、また追加の通知が送信されない場合には、610で、この方法は、通知サーバへの登録を閉じる。再登録することによって、追加の通知を送信することができる。
(実施例12)
送信者/リスナプロパティを取得するための例示的な技術
いずれの例でも、登録のため格納されている送信者/リスナプロパティを様々なやり方で取得することができる。たとえば、プロパティを、リスナまたは送信者を登録する呼び出しに含まれるパラメータとして渡すことができる。
しかし、場合によっては、呼び出し側クライアント以外のソースからプロパティを取得することが有利であり得る。たとえば、こうした情報は、クライアントからの呼び出し(リスナまたは送信者を登録する呼び出しなど)またはクライアント呼び出し側(登録している呼び出し側など)に関する情報から、取得することができる。こうした情報は、システムサービス(セキュリティまたはRPCサービスなど)から収集することができる。たとえば、識別コンテキストプロパティの場合では、こうしたプロパティをそのようにして取得することができる。
セッション識別子の場合は、通知サービス(通知サーバなど)を呼び出すクライアントは、それが実行されているのと同じセッションについての通知のために登録を望んでいることを指定することができる。こうしたセッションは、登録呼び出しまたは(たとえばRPCサブシステムからの)登録している呼び出し側に関する情報を取得することによって決定することができる。ユーザ識別子またはセキュリティコンテキストについて、同様の手法を用いることができる。
サービスを要求する呼び出しが、登録している送信者(共有リソースまたは共有リソースをホストするサーバ)によって受信されると、クライアント呼び出しまたは呼び出し側クライアントに関する情報を、以降の取出しに備えて(たとえばメモリに)格納することができる。たとえば、共有リソースが引き続き、送信者としての登録を望む場合は、こうした格納済みプロパティを使用することを指定することができる。このようにして、共有リソースは、共有リソースを実行する対象であるセッションと同じセッションにその通知を送信するために登録を望むことを指定することができる。
セキュリティコンテキストなどの他のソースから、プロパティを収集することもできる。たとえば、セキュリティコンテキストでは、どのユーザのためにシステムサービスが実行されているか(たとえば、サービスがどのユーザを偽装しているか)を示すことができる。
さらに、登録呼び出しまたは登録している呼び出し側から情報を収集すると、それを使用して、別のセッション、ユーザまたはセキュリティコンテキストについての通知のためにリッスン(listen)したいことを呼び出し側が確実に指定するようにできるので、追加のセキュリティがもたらされ得る。一部の場合では(たとえば管理権限に関連する呼び出しでは)、こうしたシナリオを受け入れることができるが、他の場合では、こうした盗聴を許すことは、望ましくないセキュリティおよびプライバシーの違反であり得る。
(実施例13)
登録を含む例示的なシステム概要
図7に、例示的な通知システム700を示す。シナリオ700では、1つまたは複数のクライアント702、704が1つまたは複数のサーバ706、708を使用し、これらのサーバが、クライアントに、1つまたは複数の共有リソースを提供する。この例では、複数のクライアント702、704が、共有リソースを提供する複数のサーバ706、708にサービスを要求する。さらに、クライアント704は、リスナ登録716、718によって、通知サーバ720にそれ自体を登録し、サーバ706は、送信者登録722によって、通知サーバ720にそれ自体を登録し、また別のサーバ708は、送信者登録724によって、通知サーバに登録する。このシナリオでは、通知が、送信者登録722を有するサーバ706によって生成されると、通知サーバ720は、0または1つ以上のクライアントにメッセージの表示を送信するべきかどうかを判断するために、登録722について格納されているプロパティと、リスナ登録718、716、726について格納されているプロパティを比較する。
この例では、通知サーバ720は、1つのサーバ706をホストし、関連する登録724を含むリモートサーバ708をサポートする。他のシナリオでは、通知サーバは、複数のサーバをホストし、複数のリモートサーバをサポートし、またはその両方を行う。この例では、クライアント704は、複数のリスナ登録716、718を含む。こうした複数のクライアント登録を使用して、(1)同じサーバから異なるタイプの通知を受信する、(2)同じサーバによってホストされる複数の異なる共有サービスから複数の異なる通知を受信する、(3)同じ通知サーバによってホストされる複数のサーバから通知を受信する、(4)複数のサーバによってホストされる共有リソースから複数の通知を受信する、またその何らかの組合せを行うことができる。
図示していないが、たとえばそれぞれ異なる通知タイプについての通知を送信するために、またはサーバによってホストされている複数の共有リソースから通知を送信するために、サーバは、同じ通知サーバに、複数の送信者登録を登録することができる。さらに、たとえば、サーバによって提供されるリソースを共有するクライアントが、潜在的に異なる通知サーバに、リスナとして登録されると予想される場合には、サーバは、複数の通知サーバ(図示せず)に、送信者として登録することができる。
(実施例14)
例示的なターミナルサーバ通知システム
図8に、ターミナルサーバのシナリオ(terminal server scenario)で使用する別の例示的な通知システム800を示す。システム800で、ターミナルサーバ814は、複数のセッション802、804、806、および(たとえば共有リソースを提供する)サーバ820をホストする通知サーバ822を実行している。あるいは、通知サーバ822は、ターミナルサーバ814の外部で実行することもできる。
ユーザが、ターミナルサーバ対応のコンピュータにログオンすると、そのユーザ用のセッションが開始される。そのセッションのために実行される処理は、一意のセッション識別子に関連付けられる。特殊なセッション識別子(すなわち「0」)がコンソールに関連付けられ、コンソールセッション802のためのユーザインターフェース808が一般に、ローカルで表示される。あるセッションで実行される特定の処理(印刷などのシステムサービス)は、別のセッションの代理で実行されている場合でも、コンソールに関連付けられる。
この例では、リモートユーザは、ネットワーク816を介して、リモートターミナル810からターミナルサーバにログオンし、セッション識別子「1」が割り当てられたセッション804(プロセスなど)で処理が遂行される。別のリモートユーザは、ターミナルサーバ814への専用接続を介して、リモートターミナル812からターミナルサーバにログオンし、セッション識別子「2」が割り当てられたセッション806(プロセスなど)で処理が遂行される。こうしたターミナルサーバシナリオでは、ターミナルサーバ814上で実行される複数のクライアントセッション(client session)802、804、806が、共有リソース820にアクセス818する。この例では、共有リソース820は、通知サーバ822によってホストされる。
セッション802、804、806は、適切な通知(セッション登録についての通知など)を受信するため、リスナ登録830を作成することができる。登録作成の要求を受信する際に、要求の発信元のセッションを(たとえばRPCサブシステムを介して)判断することができる。このようにして、登録が管理者用に作成されない限りは、セッションが、他のセッションからの通知(たとえば他のセッションの盗聴)のために登録しないようにすることができる。またセッションは、同じユーザについての通知を受信したいことを、そのセッションとは関係なく、指定することができる。この場合も、登録が管理者用に作成されない限りは、他のユーザについての通知のため登録が行われないように、要求に関連するユーザを決めることができる。
次いで、あるセッションのための処理が、サーバ820にアクセスする場合は、サーバ820に関連する共有リソースは、通知の生成を希望することができる。通知が送信される前に、またはそのときに、適切な送信者登録826を作成することができる。次いで送信者登録826を用いて、通知を送信することができる。
サーバ820または共有リソースがコンソール802に関連付けられている(たとえば、それがシステムサービスである)場合には、それは別のセッション804、806のために開始された可能性がある。セッションが、サーバ820に対して呼び出しを行うときに、呼び出しを開始するそのセッションに関するセッション識別子を(たとえばスレッドローカル記憶域(thread local storage))に格納することができる。その呼び出しに関する情報を取得することによって、セッションを判断することができる。次いで、サーバ820に関する共有リソースが、送信者として登録しようとする場合には、格納されている識別子を参照することによって、適切なセッション識別子を、送信者登録に関連付けることができる。このようにして、共有リソースは、コンソールではなく、それを開始したセッションに、通知を送信することができる。
サーバ820のいずれかの共有リソースから通知を受信すると、通知サーバ822は、一致するリスナプロパティを有する登録されているセッションに、通知の表示を転送するかどうかを判断するために、送信者登録826内の共有リソース820について登録されたプロパティと、セッションによって、リスナ登録830に登録されたプロパティとを比較する。たとえば、リスナ登録が、リスナと同じセッションに関する通知が望まれていることを示している場合には、そうした通知が送信される。あるいは、リスナ登録が、リスナと同じユーザに関する通知が望まれていることを示している場合には、そうした通知が送信される。
これによって、複数のクライアントセッションが、共有リソースを共有し、また通知が生成されたときに、共有リソースがどのセッションで実行されているかに関係なく、通知をやはり受信することができる。たとえば、セッション804は、サーバ820によって提供される関連する共有リソース(外部リソース用のサーバなど)に、適切な要求を送信することによって、外部リソース828によるタスクの実施を要求することができる。外部リソース828が、サーバ820によって提供される共有リソースにメッセージを送信すると、サーバ820によって提供される共有リソースが、コンソールセッション802のもとで実行されていたとしても、メッセージの表示を適切なセッション804に送り返すことができる。したがって、セッション「0」コンソールにではなく、共有リソースを要求したセッション804に関連するユーザインターフェース810に、メッセージを送信することができる。
場合によっては、こうした手法によって、セキュリティを強化することができる。たとえば、セッション804のユーザが、他のものが外部リソース828に関連する動作について知ることを望まない場合には、コンソールユーザインターフェース808に、リソース828に関するメッセージを送信することが、セキュリティまたはプライバシーの違反になり得る。さらに、メッセージが、処理を開始したユーザではなく、コンソールに送信されるときには、場合によっては、コンソールユーザインターフェース808のユーザに、処理に関するオプション(処理のキャンセルまたは削除など)が提示され得る。処理を開始したユーザインターフェース810にメッセージの表示を可能にすることによって、セキュリティおよびプライバシーの強化をもたらすことができる。
(実施例15)
印刷シナリオにおける例示的なターミナルサーバ通知システム
図8に示す例示的な通知システム800を印刷シナリオで使用して、ターミナルサーバ環境内の適切なユーザまたはセッションに、印刷に関するメッセージをルーティングすることができる。
たとえば、新しいセッション804を開始するとき、シェル(デスクトップなど)のためのリスナ登録824を作成して、(たとえば印刷に関する通知を示す通知タイプを特定することによって)シェルが印刷に関するセッションについてのどんなメッセージも受信したいことを示すことができる。
次いで、(たとえばユーザ要求によって)印刷が開始されると、印刷サービス820が起動され、セッション0で実行される。しかし、印刷サービスが別のセッション804のために起動され、その起動セッション804に関する識別子を、メモリ(スレッドローカル記憶域など)に格納することができる。
外部リソース828は、プリンタの紙切れを示すために、(たとえばプリンタドライバを含む)プリンタサービス820に、メッセージ(紙切れの通知など)を送るプリンタであり得る。プリンタサービス820は、送信者登録826を作成し、(たとえば印刷に関する通知を示す通知タイプを指定することによって)印刷関連の通知を送信することができる。その通知では、(たとえば格納されているセッション識別子を取り出すことによって)どのセッション804のために印刷が開始されたかを示すことができる。通知は、グラフィカルメッセージの表示(「プリンタ紙切れ」GUIなど)を含むことができ、このメッセージは、(たとえば印刷を開始した同じセッションの)適切なリスナに転送される。
次いで、セッションが、通知を処理して、セッション「0」コンソールではなく、共有リソース(印刷ジョブなど)を要求したセッション804に関連するユーザインターフェース810に、適切なユーザインターフェース(ダイアログボックスなど)を送信する。ユーザインターフェース表示が、正しいセッションのユーザインターフェースに表示される。
所望であれば、以下に述べる特徴によって、双方向通信を遂行することができる。このように、ユーザは、オプションを選択することができ、通知の発信元820に、そのオプションを返信することができる。
(実施例16)
ユーザシナリオ切り替えのための例示的な複数セッション通知システム
図9に、ユーザシナリオを切り替える際に使用する例示的な通知システム900を示す。例900では、コンピュータ902が現在のセッション904を実行しており、他のセッション906,908のために状態を保存している。ユーザは、(たとえばポインタまたはキーボード操作を介して)切り替えコマンドを呼び出すことによって、別のアクティブセッション(active session)906、908に切り替えることができる。実際には、それぞれのセッションは、異なるユーザ名に関連付けられるが、切り替えは、現在のユーザをログオフしないで行うことができる。
コンピュータが、共有リソース912、916を使用する新しいセッションを生成したとき、セッション904、906、908は、(たとえばそのセッションに関する)通知を受信するために、適切なプロパティ922を作成する。図示するように、共有リソース912、916は、セッション904、906、908で使用可能である。共有リソース912、916が、セッション904、906、908(それを呼び出したセッションなど)のいずれかに通知を送ろうとする場合、共有リソース912、916は、適切な送信者登録918、920を作成することができる。共有リソースがメッセージを生成すると、通知サーバ914は、共有リソース912、916によって登録されているプロパティが、セッションによって登録されているプロパティ922に一致するかどうか(たとえばセッション識別子が一致するかどうか)を判断する。もしそうであれば、通知の表示(たとえば通知自体)が、対応するセッション904、906、908に転送される。
たとえば、アクティブセッションは、共有データベースリソースへのアクセスを要求し、次いで非アクティブになり得る(たとえば、コンピュータ902のユーザが切り替わる)。次いでデータベースは、結果的には非アクティブセッションについてのユーザインターフェース通知メッセージになる通知を生成することがある。このような場合、通知サーバは、登録されているプロパティから、メッセージ(通知など)が、現在のアクティブセッションに届けるためのものではなく、現在は非アクティブになっているセッションに届けられるためのものであると判断し、そのようにする。次いでその対象のセッションがアクティブになり、アクティブなディスプレイ910に表示され、再アクティブ化されたセッションが、メッセージ表示を表示する。
(実施例17)
例示的なフィルタ
図10に、例示的な通知サーバ1000を示す。この例では、クライアント(図示せず)が、リスナ登録1002を生成して、共有リソースから通知を受信し、共有リソース(図示せず)が送信者登録1004を作成して、登録されているリスナに通知を送信する。本明細書に示すいずれの例でも、共有リソースによって通知が生成されたときに、フィルタ1006を使用して、通知が対応するリスナ登録のプロパティに一致するかどうかを判断することができる。フィルタが考慮するプロパティは、本明細書で述べるリスナプロパティまたは送信者プロパティのいずれをも含み得る。
様々なやり方で、一致を定義することができる。たとえば、プロパティのサブセットが同一であれば、2つの登録を、一致するものとして定義することができる。一致は、少なくとも識別コンテキストプロパティ(登録が同一のプロパティを有しているかどうかなど)に基づくものとすることができる。ある場合では、どんなプロパティも一致すると考えられ得る。たとえば、登録が、特定のユーザについてのどんなセッションの通知をも転送すると示すことがある。こうした場合、そのユーザについてのどのセッションの登録も、一致するものとみなされる。
あるシナリオでは、クライアントコンポーネントは、(リスナ登録で、「NULL」通知タイプを指定することによって)すべての通知タイプに関与することを指定することができる。その場合、フィルタは、登録されているリスナに、すべてのタイプの通知を転送する。
さらに、プロパティによっては、登録および関連する通知の動作に影響を及ぼすことができる。たとえば、送信者登録プロパティ(通知タイプなど)では、リスナがどのように受信された通知を処理するかを示すことができ、またリスナがどのように通知の登録を行うかについて影響を及ぼすことができる。たとえば、登録時に、クライアントは、(たとえばどの通知タイプが使用可能か、または望まれるかについて、送信者登録とネゴシエーション(negotiation)することによって)リスナ登録をセットアップする際に、こうした情報を使用することができる。通信タイププロパティでは、クライアントと共有リソースの間の通信が、双方向かそれとも単一方向かを示すことができる。通知タイププロパティでは、通知タイプ、共有リソースが返信を望んでいるかどうか、またその両方を示すことができる。通知タイププロパティは、通知を処理するために使用される論理の識別にも役立つ。
あるシナリオでは、クライアントは、リスナプロパティを、そのクライアントのセキュリティコンテキスト識別子の形で登録する。セキュリティコンテキスト識別子は、(たとえばリモートプロシージャコール(「RPC」:remote procedure call)サブシステムを介した)クライアントからの呼び出しを検査することによって決めることができる。共有リソースがクライアントからのサービス要求を受け付けたときに、共有リソースが、(たとえば偽装することによって)クライアントのセキュリティコンテキストで実行されていることがある。共有リソースが通知を生成すると、その通知は、共有リソースが実行されているセキュリティコンテキスト(セキュリティコンテキスト識別子など)に、(たとえば、メッセージに識別子を含める、または共有リソースが登録のための呼び出しを行うときに、識別子を決定することによって)関連付けられる。このシナリオでは、共有リソースのセキュリティコンテキストが、サービスを要求しているクライアントのセキュリティコンテキストと一致するので、通知の表示は、クライアントに転送される。
クライアントは、通知を使用して、通知を示す画面上のユーザインターフェースを生成することができる。こうした一例では、クライアントは、メッセージに含まれる通知タイプを使用して、(たとえばダイナミックリンクライブラリ(「DLL」:dynamic link library)を指定することによって)正しいメッセージを表示するルーチンを識別する。通知を示す画面上のインターフェースは、ターミナルがローカルか、それともリモートかに関係なく、クライアントに関連するターミナル上に表示することができる。
偽装とは、スレッドを所有するプロセスのセキュリティコンテキストとは異なる、スレッドのセキュリティコンテキストで、スレッドを実行できることである。サーバが、クライアントのセキュリティコンテキストで実行されている場合、そのサーバは、クライアントのように見える。これによって、アクセスチェック(access check)をクライアントの識別に対して実施することができる。アクセスチェックのためにクライアントの識別を用いることによって、クライアントの許可レベルに応じて、アクセスを制限または拡大することができる。
別のシナリオでは、クライアントが、ターミナルセッション識別子とともに、クライアントのセキュリティコンテキストの形のリスナプロパティを登録する。(たとえばRPCサブシステムを用いた)クライアントからの呼び出しに基づいて、プロパティを取得することができる。こうしたシナリオでは、共有リソースがクライアントからのサービス要求を受け付けると、共有リソースは、クライアントのセキュリティコンテキストで実行される。しかし、割り当てられているセッションは、コンソールセッションであり得る。したがって、呼び出し側クライアントのセッション識別子を、以降の取出しに備えて格納することができる。
次いで、共有リソースが通知を生成するとき、その通知メッセージおよび/または共有ソースについての送信者登録は、共有リソースが実行されているセキュリティコンテキストおよび共有リソースを要求したターミナルセッション(たとえばどのターミナルセッションのために共有リソースが実行されているかなど)を含む。共有リソースのセキュリティコンテキスト、および共有リソースについて格納されているターミナルセッションが、登録されているリスナプロパティに一致するので、通知サーバフィルタによって、通知の表示がクライアントに転送されることになる。
(実施例18)
例示的なユーザフィルタ
以下の例では、様々な印刷シナリオにおけるフィルタが示されているが、こうした技術は、共有リソースについての通知が有用である他のシナリオに適用することができる。図11に、例示的な通知システム1100を示す。このシナリオ1100では、クライアントは、印刷スプーラサーバ(print spooler server)1102の形態の通知サーバによってホストされている、印刷コンポーネント(印刷ドライバ、ポートモニタ(port monitor)、言語モニタなど)の形態の共有リソースから通知を受信するためのリスナ登録1122、1124を含む。
この例では、ユーザ識別子(「Joe」および「Mary」として示すが、ユーザを識別する他の何らかの形であり得る)の形の識別コンテキスト識別子を含む、リスナ登録1122、1124がセットアップされている。ユーザJoeは、2つのターミナルセッションを実行しており、この両方のセッションは、スプーラサーバ1102内で、コンポーネント1112、1114を(同時または異なる時などに)実行させるサービスを要求している。コンポーネント1112、1114は、Joeを偽装し、また「0」以外のセッションに関連付けられるが、システムサービスによってホストされているので、コンソールセッション(すなわち「0」)で実行される。この例では、コンポーネント1112、1114が通知を送信したいときに、適切な登録を作成し、通知を送信することができる。その登録では、ユーザJoeが指定されているので、コンポーネント1112、1114のいずれかまたは両方についての通知が、リスナ登録1112に関連するクライアントに渡される。
(実施例19)
例示的なセキュリティコンテキストフィルタ
図12に、例示的な通知システム1200を示す。このシナリオ1200では、クライアントは、印刷スプーラサーバ1202の形態の通知サーバによってホストされている、印刷コンポーネント(印刷ドライバ、ポートモニタ、言語モニタなど)の形態の共有リソースから通知を受信するためのリスナ登録1222、1224を含む。
この例では、特定のセキュリティコンテキストについての通知を受信することを指定する、セキュリティ識別子の形の識別コンテキスト識別子(「ABC」および「DEF」として示すが、セキュリティコンテキストを識別する他の何らかの形であり得る、SIDなど)を含む、リスナ登録1222、1224がセットアップされている。2つのターミナルセッションが、セキュリティコンテキストABCのもとで実行されているが、その両方のセッションが、スプーラサーバ1202内で、コンポーネント1212、1214を(同時または異なる時などに)実行させるサービスを要求している。コンポーネント1212、1214は、セキュリティコンテキストABCで実行されているが、システムサービスによってホストされているので、コンソールセッション(すなわち「0」)に関連付けられる。
この例では、コンポーネント1212、1214が、通知を送信したいときに、適切な登録を作成し、通知を送信することができる。その登録では、セキュリティコンテキストABCが指定されているので、コンポーネント1212、1214のいずれかまたは両方についての通知が、リスナ登録1212に関連するクライアントに渡される。
(実施例20)
例示的なセッションフィルタ(session filter)
図13に、例示的な通知システム1300を示す。このシナリオ1300では、クライアントは、印刷スプーラサーバ1302の形態の通知サーバによってホストされている、印刷コンポーネント(印刷ドライバ、ポートモニタ、言語モニタなど)の形態の共有リソースから通知を受信するためのリスナ登録1322、1324を含む。
この例では、セッション識別子の形の識別コンテキスト識別子(たとえば、ターミナルサーバについて、「1」および「2」として示されているが、特定のセッションについての通知を受信することを指定する、セッションを識別する他の何らかの形であり得る)を含む、リスナ登録1322、1324がセットアップされている。2つのコンポーネント1312、1314は、スプーラ1302内で実行されており、またそれらはシステムサービスに関連するので、コンソールセッションのもとで、(同時または異なる時などに)実行されている。しかし、コンポーネント1312、1314は、それぞれ異なるセッションの代理で実行されており(たとえばそのユーザインターフェースが、スプーラ1302が実行されているマシンと同じまたは異なるマシン上に表示される)、また(たとえば本明細書の例に示すように)どのセッションのためにコンポーネントが実行されているかが格納されている。
この例では、コンポーネント1312、1314が通知を送信したいときに、適切な登録を作成し、通知を送信することができる。登録によって、通知に関連するセッションの一致について指定されているので、第1セッションの代理で実行されているコンポーネント1312についての通知は、第1セッションについての登録1322に関連するクライアントに転送され、第2セッションの代理で実行されているコンポーネント1314についての通知は、第2セッションについての登録1324に関連するクライアントに転送される。
(実施例21)
混合プロパティフィルタ(mixed property filter)の登録
フィルタによって、本明細書で示す例示的なプロパティの2つ以上の任意の組合せを指定することもできる。図14に、例示的な通知システム1400を示す。このシナリオ1400では、クライアントは、印刷スプーラサーバ1402の形態の通知サーバによってホストされている、印刷コンポーネント(印刷ドライバ、ポートモニタ、言語モニタなど)の形態の共有リソースから通知を受信するためのリスナ登録1422、1424を含む。
この例では、セッション1で、かつタイプ「印刷」の場合に、ユーザJoeに関する通知を受信するために、リスナ登録1422がセットアップされている。リスナ登録1424は、タイプ「印刷」の場合に、ユーザMaryに関する通知を受信するためにセットアップされている。実際のプロパティ値(Joe、Mary、1、印刷など)は、それと異なる形であり得る。2つのコンポーネント1412、1414は、スプーラ1402内で実行されており、またそれらはシステムサービスに関連するので、コンソールセッションのもとで、(同時に、異なる時などに)実行されている。しかし、コンポーネント1412、1414は、それぞれ異なるセッションの代理で実行されており、(たとえば本明細書の例に示すように)どのセッションのためにコンポーネントが実行されているかが格納されている。
この例では、コンポーネント1412、1414が通知を送信したいときに、適切な登録を作成し、通知を送信することができる。登録プロセスの一環として、通知自体の一部として、または他の何らかの機構を介して、コンポーネント1412、1414は、通知タイプを指定することができる。この例では、コンポーネント1412、1414の両方が、タイプ「印刷」の通知を送信する。
ユーザJoeの代理および第1セッションの代理で実行されているコンポーネント1412についての通知は、通知に関して一致しているので、第1セッションについての登録1422に関連するクライアントに転送される。ユーザMaryの代理および第2セッションの代理で実行されているコンポーネント1414に関する通知は、通知に関して一致しているので、登録1424に関連するクライアントに転送される。「印刷」以外のタイプの通知が送信される場合は、一致していないので、登録1422、1424については通知が転送されない。
図示していない別のシナリオでは、クライアントコンポーネントが、複数のフィルタにリスナ登録を行い、共有リソースが複数のリソースに送信者登録を行う。こうしたシナリオの1つでは、フィルタ方法によって、通知を転送する前に、複数のプロパティが一致していることが必要とされる。たとえば、クライアントは、セッション識別子、セキュリティコンテキスト識別子、コンピュータ識別子、および通知タイプのフィルタプロパティが一致している通知だけが転送されるように、登録をセットアップすることができる。
(実施例22)
管理者およびプロパティフィルタ
図15に、図14の例示的な通知システム1400を示す。しかし、この例では、管理権限を有するユーザが、どんなセッションのどんなユーザ、またどんなタイプについても通知を受信するための登録1526を作成している。(たとえば特定のユーザ、特定のセッションなどの通知を受信するために)別の管理者登録を作成することができる。システム1400では、管理者が、その特権に基づいてこうした登録を作成することができる。
システム1400では、上記と同様に進行するが、登録1526に関連するクライアントへも通知を送信する。このようにして、管理者は、ユーザ、セキュリティコンテキスト、セッションに関係なく、登録を監視することができる。
さらに、管理者は、他のユーザ/セッションについての通知を受信するため、非管理者クライアントを登録することが許され得る。
このようにして、通知用に生成された関連するユーザインターフェースを、こうした通知を受信するために管理者が登録しているターミナルセッションに関連するローカルまたはリモートのマシンに向けて送ることができる。
(実施例23)
チャネルおよび独立した寿命
「チャネル」と称される機構を使用して、通知の伝達に対処することができる。所望であれば、こうしたチャネルを双方向になるようにセットアップすることができ、それによって、クライアントと共有リソースの間で双方向通信を実現することができる。送信者登録の一部として、チャネルを実装することができる。またここで述べるチャネル機能は、したがって、送信者登録(送信者登録コンポーネントなど)上で実施することができる。
いずれかのリスナ登録があるかどうかにかかわらず、共有リソースコンポーネントは、チャネルコンポーネントを開くことができる。チャネルが開かれた後、共有リソースは、チャネルコンポーネントを介して通知を送信することができる。登録されているリスナがいない場合には、チャネルコンポーネントインターフェース呼び出し(channel component interface call)は、それでも成功するが、呼び出しの結果(HRESULTなど)には、通知を受信したリスナがいなかったことが示される。
たとえば、スプーラによってロードされた印刷コンポーネントは、開かれたチャネルがあるかどうかにかかわらず、通知を送信するためにプリンタまたはサーバ(ローカルまたはリモート)に登録することができる。同様に、クライアントコンポーネントも、開かれたチャネルがあるかどうかにかかわらず、通知を受信するためにプリンタまたはサーバ(ローカルまたはリモート)に登録することができる。チャネルが開かれ、通知が送信されたら、リッスン側のクライアントは、通知、ならびに双方向通信のため、返信を戻すためのチャネルコンポーネントインターフェースを受信する。したがって、リスナコンポーネントと、チャネルコンポーネントの寿命は、それぞれ独立している。
フィルタ処理プロセスの一環として、チャネル機能を使用することができる(たとえば特定のタイプの通知を送信するために、チャネルをセットアップすることができる)。双方向シナリオでは、フィルタを使用して、送信者が受信に関与する返信のタイプを指定することができる。
(実施例24)
共有リソースおよびリスナ用のインターフェース
図16に、例示的な通知システム1600を示す。この例では、共有リソース1604をホストする通知サーバ1602が示されている。同じマシン上にあるか、それとも異なるマシン上にあるかにかかわらず、登録されているリスナプロパティとチャネルプロパティの比較に基づいて、クライアントコンポーネント1606、1608と共有リソース1604を一致させる。
あるシナリオでは、クライアントコンポーネントは、クライアントから受信される要求を非同期に処理するサーバの共有リソースに、サービスを要求する。クライアントコンポーネント1606,1608は、サーバに要求を送信し、次いで、サーバがサービスを実施する間は待機せずに、クライアントコンポーネント1606が、後でサーバから送られてくる可能性がある通知のために登録をする。ある例では、クライアントコンポーネント1606は、リスナプロパティを含むリスナ登録1610、1612を登録する。クライアントコンポーネントは、サーバ上でローカルでも、ネットワークを介してでも実行することができる。こうしたシナリオの1つでは、通信1614は、ローカルであろうと、ネットワークを介して(RPC、COM、DCOMなど)であろうと、プロセス間通信をサポートするランタイム環境によって確立される。
クライアントコンポーネントは、共有リソースのプロセス空間または別のプロセス空間で実行することができる。クライアントコンポーネントは、共有リソースと同じマシンでも、異なるマシンでも実行することができる。このようなシナリオでは、スプーラは、それがホストしているコンポーネント(印刷プロセッサ、ドライバ、モニタなど)が、異なるセッションでローカルで実行されているアプリケーションに通知を送ることができるようにするインターフェースをサポートし、別のシナリオでは、コンポーネントが、ローカルとリモートの両方のクライアントに通知を送信することができる。このようなシナリオでは、通知は、プリントハンドル(print handle)に基づいており、すなわちスプーラによってホストされているコンポーネントが、プリントハンドルを開いたセッションに通知を送信するように要求することができる。スプーラは、印刷コンポーネントが通知を送信できるようにする1組のインターフェース、およびアプリケーション(セッション、クライアントコンポーネントなど)が通知を受信するために登録できるようにする1組のインターフェースを提供する。
このシナリオでは、共有リソース1604は、通知サーバ1602によってホストされる(たとえばその内部で実行される)。共有リソース1604は、通知を送信したいときに、チャネルコンポーネント1616を作成する。クライアントコンポーネントは、通知オブジェクトを受信したいときに、リスナ登録1610、1612を生成する。共有リソースは、開かれたチャネルコンポーネントの論理リスト1618、および共有リソースから通知を受信するため登録されたリスナ登録(時に、「リスナコンポーネント」と称される)の論理リスト1620を保持する。この場合、プロセス間通信1614を使用して、プロセス間で通知データを送信する。
リスナコンポーネント1612およびチャネルコンポーネント1616は、それらに関連する通知タイプ、通信タイプ、ユーザ識別、セッション識別子、およびマシン識別子(たとえば登録済みのリスナ/送信者プロパティなど)を追跡する。通知サーバ1602は、チャネルコンポーネントとリスナコンポーネント間でこうしたプロパティを一致させる論理を実装し、チャネルのプロパティと一致したリスナだけにデータを送信する。
このシナリオでは、リスナコンポーネントは、通知サーバが通知データを渡す(pass in)ために呼び出すICallBackインターフェース1622を提示する。チャネルコンポーネントは、共有リソース1604が通知データを送信するために呼び出すINotifyChannelインターフェース1626を提示する。双方向通信をサポートするために、チャネルコンポーネントは、通知サーバがリスナから戻された通知データを渡すために呼び出すICallBackインターフェース1624を提示する。
このシナリオでは、共有リソースとクライアントコンポーネント間で送信される通知データが、通知タイプで識別される。共有リソースとクライアントコンポーネント間の通信は、単一方向または双方向であり、これは通信タイプによって決まる。
このシナリオでは、通知サーバは、共有リソースおよびクライアントコンポーネントが実行されているセキュリティコンテキストを認識する。こうしたシナリオでは、通知サーバは、ターミナルセッション識別子、および通知の送信または通知受信の登録のために行われる呼び出しのユーザ偽装を認識する。このシナリオでは、こうした情報が、チャネルコンポーネントおよびリスナコンポーネントに格納される。
ある具体的なシナリオでは、通知サーバは、クライアントコンポーネントが通知受信のため登録および登録解除できるようにする1組のインターフェースを定義し実装する。通知サーバ内で、登録がコンポーネントに関連付けられるが、クライアントコンポーネントは、ネットワーク上のどこにでも存在し得る。共有リソースコンポーネントごとに複数の登録がサポートされる。こうしたシナリオでは、通知サーバは、共有リソースが通知データを送信できるようにする1組のインターフェースをサポートする。通知サーバは、クライアントコンポーネントが実装し、登録時に通知する1組のインターフェースをサポートする。こうしたインターフェースが通知サーバによって呼び出され、通知データが登録されているリスナを介してクライアントコンポーネントに渡される。双方向通信では、通知サーバは、リスナを介してクライアントコンポーネントに、どのチャネルコンポーネントを介して通知データが届いたかを通知する。こうしたシナリオでは、クライアントコンポーネントが、リスナを介して共有リソースに、返信通知を返送する。
こうしたシナリオの1つでは、共有リソースは、それが潜在的リスナと確立する必要がある通信のタイプ、送信されるデータの通知タイプ、およびサービスを要求するリスナの所望のセキュリティコンテキストを指定する。このシナリオでは、クライアントコンポーネントは、リスナコンポーネントを介して、通信タイプ、通知タイプ、共有リソースのセキュリティコンテキストを指定する。通知サーバは、条件を一致させ、こうした条件に合うリスナコンポーネントだけに通知を送信する。
(実施例25)
通知オブジェクトを送信するためのインターフェース
図17に、例示的な通知システム1700を示す。このシナリオでは、共有リソース1704をホストする通知サーバ1702が示されている。このシナリオでは、リスナおよびチャネルコンポーネントに登録されているプロパティの比較に基づいて、クライアントプログラム1706と共有リソースを一致させる。
たとえば、チャネル1705が登録するときに、登録で使用可能なフィルタプロパティのタイプを「通知」する。クライアントが、リスナ1710、1712を後で登録する場合は、クライアントは、こうした通知済みのフィルタプロパティを、登録時に使用することができる。ある例では、クライアントは、チャネルがそのチャネルを介してフィルタプロパティ(通知タイプなど)を使用できると通知していることを判断する。チャネルに登録している共有リソース1704によって通知が送信される場合に、クライアントは、この「通知された」フィルタプロパティを使用して、そのタイプの通知のために登録する。
あるシナリオでは、通知オブジェクト1714が、共有リソース1704とクライアントプログラム1706の間を流れる。通知オブジェクトは、INotifyChannelインターフェース1708を介してチャネルコンポーネント1705に渡される。通知サーバ1702は、チャネルコンポーネント1705のプロパティを、リスナコンポーネント1712のプロパティと一致させ、リスナコンポーネント1710に、通知オブジェクト1714を転送する。以下の図面のリスナコンポーネント1710、1712は、同じ論理登録を示す。プロセス間通信を介して、通知オブジェクト1714がリスナコンポーネントに1712に渡され、このリスナコンポーネントに、クライアントプログラム1706からアクセスすることができる。双方向通信の場合には、クライアント側では、チャネルコンポーネント1718の論理表現がリスナに提示される。
上記で述べたインターフェースを用いて、通知オブジェクト1714が、共有リソースからクライアントプログラム1706に送信される。あるシナリオでは、通知サーバは、それに提示された内容は何でも、バイナリオブジェクト(バイナリラージオブジェクト(binary large object)すなわちBLOBなど)を指すポインタの形で送信する。このシナリオでは、クライアントおよび共有リソースの開発者は、通知オブジェクトの内容が何であるか、およびデータ形式を前もって認めることができる。この形式は、グローバル一意識別子をもつクライアントおよび共有リソースによって識別可能である。このグローバル識別子は、通知タイプの登録をし、それを受信するために使用されるフィルタプロパティであり得る。このようにして、通知サーバは、内容または形式を知らないで(たとえば、検査または認識のための論理をもたないで)、データを送信することができるが、内容または形式は、クライアントおよび共有リソースの開発者によって事前に取り決められる。こうしたシナリオでは、通知サーバは、データ内容および形式にとらわれないものであると考えられる。
あるシナリオでは、スプーラは、リスナとチャネルの間で送信されるデータ型を認識しない。クライアントコンポーネントおよび共有リソースは、チャネルを介して送信されるデータのスキーマを定義する。実際には、マークアップ言語(XMLなど)を用いて、データスキーマ(data schema)が定義されるが、スプーラは、フィルタ処理のために通知タイプ(GUIDなど)をおそらく使用する以外には、データの整合性を検証する必要はない。これによって、コンポーネント(共有リソースコンポーネント、リスナコンポーネント、チャネルコンポーネント、クライアントコンポーネントなど)のプログラマが、様々なデータ型および形式を自由に選択できるようになる。このシナリオでは、通知データは、BLOBとして定義され、スプーラによるデータ内容の検証は行われない。通知データを処理するために、(たとえば通知タイプに関連する)適切な論理を呼び出すことができる。たとえば、通知タイプを、通知データを処理する関数を含むコードライブラリ(library of code)(DLLなど)に関連付けることができる。
(実施例26)
通知の返信を送信するためのインターフェース
図18に、通知のための双方向通信をサポートする、例示的な通知システム1800を示す。図示するように、双方向通信では、クライアントプログラム1801が、提示された論理チャネルコンポーネント1806を介して、共有リソースに返信通知を送信する。こうしたシナリオでは、クライアントコンポーネントは、チャネルコンポーネント1806上のINotifyChannelインターフェースを呼び出す。チャネルコンポーネントは、論理リスナコンポーネント1808上のICallBackインターフェースを呼び出し、通知サーバ1802に返信通知が送り返されるようにし、この通知サーバ上で、リスナコンポーネント1810が、チャネルコンポーネント1812上のICallBackインターフェースを呼び出し、このインターフェースによって、返信通知1814が共有リソース1816に送り届けられる。このシナリオでは、クライアントプログラム1801は、共有リソース1816をホストする通知サーバ1802に、返信通知オブジェクト1804を送信する。
(実施例27)
登録および通知をサポートするインターフェース
例示的な通知システムは、1組のインターフェースおよびタイプを含む。ここで論じるインターフェースは、様々なオブジェクトモデル(ワシントン州レッドモンドのマイクロソフトコーポレーションによってサポートされるコンポーネントオブジェクトモデル(「COM」:Component Object Model)に準拠したオブジェクトなど)をサポートする環境で実装することができる。COMをサポートする環境では、ここで論じるインターフェースは、IUnknownを継承することができる。しかし、こうした技術は同様に、インターフェースをサポートしていることも、サポートしていないこともある、他のオブジェクトモデル(任意のC++やC++ライクなオブジェクトモデルなど)に適用することができる。
この例では、サービスは、サービス自体の一部(たとえば、Spoolsv.exeなどのスプーラ実行可能ファイル)として、あるいはクライアントコンポーネントの一部またはリンクされた実行可能ファイル(Winspool.drvなど)として、スプーラによって実装可能な機能を指す一般名称である。印刷コンポーネントは、印刷プロセッサ、ドライバ、モニタなど、スプーラ実行可能ファイルにロードされるコンポーネントを指す。リッスン側クライアントは、印刷通知を受信するためにリスナ登録されている、クライアントコンポーネントまたはスプーラ内部コンポーネントである。通知は、印刷コンポーネントとリッスン側クライアントの間の通知チャネルを介して送られるデータである。チャネルコンポーネントは、印刷コンポーネントが通知を送信したいときに、その印刷コンポーネントによって作成されるコンポーネントである。
以下の表1に示すように、共有リソースが通知サーバにチャネルコンポーネントの作成を要求したときに、例示的なセッションフィルタが、共有リソース(たとえば、印刷プロセッサ、ドライバ、モニタなどの印刷コンポーネント)によって使用される。したがって、セッションフィルタは、印刷コンポーネントとスプーラプロセス(spooler process)の間の例示的なインターフェースである。
Figure 2004310745
このシナリオでは、表1を参照すると、セッションフィルタが、チャネルコンポーネントの作成を要求する、共有リソース(印刷コンポーネントなど)から通知サーバ(スプーラなど)へのインターフェース呼び出しの中で指定される場合、その作成要求内で、セッションフィルタに値が割り当てられる。共有リソースがセッションフィルタ値を「1」に設定する場合(すなわちESessionFilter=1)、通知の受信時、スプーラは、プリントハンドルを開いたクライアントコンポーネントと同じセッションおよび同じユーザアカウント(user account)で実行されている(または同じユーザアカウントを偽装している)どのリスナにも、その通知を送信する。共有リソースがセッションフィルタ値を「2」に設定する場合(すなわちESessionFilter=2)、通知の受信時、スプーラは、プリントハンドルを開いたクライアントコンポーネントと同じユーザアカウントで実行されている(または同じユーザアカウントを偽装している)どのリスナにも、その通知を送信する。共有リソースがセッションフィルタ値を「0」に設定する場合(すなわちESessionFilter=0)、通知の受信時、スプーラは、印刷コンポーネントまたはサーバからの通知の受信に関与している(すなわちその登録をしている)どのリスナにも、その通知を送信する。
このシナリオでは、表1を参照すると、セッションフィルタが、リスナコンポーネントの生成を要求するクライアントからのインターフェース呼び出しの中で指定される場合、その生成要求内で、セッションフィルタに値が割り当てられる。クライアントコンポーネントがセッションフィルタ値を「1」に設定する場合(すなわちESessionFilter=1)、セッション「1」から通知が受信されると、スプーラは、セッション「1」の登録をしているクライアントコンポーネントに、その通知を送信する。クライアントコンポーネントが、セッションフィルタ値を「2」に設定する場合(すなわちESessionFilter=2)、共有リソースから通知が受信されると、スプーラは、登録を行ったクライアントコンポーネントと同じユーザアカウントで実行されている(または同じユーザアカウントを偽装している)どのリスナにも、その通知を送信する。クライアントコンポーネントが、セッションフィルタ値を「0」に設定する場合(すなわちESessionFilter=0)、通知が受信されると、リスナは、どのセッションまたはどのリスナコンポーネントにも送信された通知を受信する。
このシナリオでは、管理者は、特定の印刷コンポーネントについて、プリンタの管理権限(PRINTER_ADMIN_RIGHTSなど)を有するユーザである。したがって、管理者は、どのコンポーネントにも通知を送信し、どのコンポーネントからも通知を受信することができる。しかし、たとえばkPerSessionFilter値に登録されているチャネルコンポーネント上のセッション「1」から通知が送信される場合には、通知タイプフィルタがやはり適用される。kPerSessionFilterによれば、通知は、そうでなければ、セッション「1」に送信される。しかし、セッション「2」で実行している管理者が要求している場合は、通知タイプが同じである限りは、リッスンしている管理者が存在するので、通知がセッション「2」に送信される。しかし、管理者が通知タイププロパティを「NULL」に設定する場合、管理者は、通知タイプが一致しているか否かにかかわらず、通知を受信する。
このシナリオでは、表2に示すように、印刷コンポーネントは、通信タイプを指定することによって、リスナからの返信通知を望んでいるかどうかを指定する。さらに、通信タイプによって、通知が複数のクライアントから返送される場合に、スプーラがどのようにそのケースに対処するかを指定することができる。
Figure 2004310745
このシナリオでは、2つの通信タイプ、すなわち双方向および単一方向がある。単一方向の場合、リッスン側のクライアントは、返信通知を返送しない。しかし、複数のクライアントコンポーネントが、1つのチャネルコンポーネントから通知を受信する登録をすることができるので、複数の返信が、そのチャネルコンポーネントを介して共有リソースに返送される場合があり得る。
このシナリオでは、複数のクライアントコンポーネントが、通知受信の登録をする場合は、応答する最初のクライアントコンポーネントから、返信を受信する。継続しているダイアログ(通知、返信、通知など)の場合には、スプーラは、他のチャネルを閉じ、その最初のクライアントとのダイアログを続ける。別のシナリオでは、複数のクライアントコンポーネントとのダイアログがサポートされる。たとえば、通知サーバまたはチャネルコンポーネントは、複数のダイアログ/リスナの同期をとるやり方を提供することができる。
たとえば、2人のユーザ、Joeおよび管理者が、Joeのユーザアカウントフィルタに基づいて、通知受信の登録をしており、通知がJoeと管理者の両方から受信される場合は、最初に受信された返信通知が、印刷コンポーネントに転送される。
このシナリオでは、通知タイプ(GUIDなど)をスプーラが使用して、リスナのためにフィルタをかける。さらに、印刷コンポーネントおよび/またはクライアントコンポーネントは、通知タイプを使用して、通知オブジェクトのデータスキーマを識別する。
このシナリオでは、クライアントコンポーネント(印刷コンポーネントなど)は、通知サーバ(スプーラなど)に登録する。クライアントが通知のために登録すると、サーバ側のリスナコンポーネントは、リスナプロパティなどのクライアントコンポーネントに関する情報を含む内部テーブルを維持する。表3に示すように、登録要求に応答して、不透明な登録ハンドルポインタ(registration handle pointer)がクライアントコンポーネントに戻される。クライアントコンポーネントは、この登録ハンドルを用いて、通知の登録を解除する。
Figure 2004310745
このシナリオでは、表4に示すように、通知データが、INotifyDataObjectインターフェースを公開するオブジェクトとして取り扱われる。クライアントコンポーネントおよび通知サーバの共有リソースコンポーネントは、データスキーマを定義し、その定義したスキーマで、データを送受信することができる。たとえば、スプーラのクライアントは、それ自体のデータスキーマを定義し、様々なタイプにGUIDを割り当て、所与の通知システムについてどれを実装するかを知らせることができ、またどんなデータ型をも送受信することができる。スキーマは、通知サーバには必ずしも知られていないが、移送のためサイズが必要となることがあり、通知タイプ(GUIDなど)が、リスナまたは送信者のプロパティの一部となり得る。たとえば、スプーラは、BYTEポインタの通知データオブジェクト、データの長さおよび通知タイプを尋ねる。通知タイプはGUIDポインタである。
Figure 2004310745
このシナリオでは、印刷コンポーネントは、INotifyDataObjectにデータをパックし、リッスン側のクライアントは、AquireDataデータを呼び出して、通知データ、通知データのサイズ、および通知タイプを指す生ポインタを取得する。リッスン側クライアントは、このデータを使用して完了すると、ReleaseDataを呼び出す。好ましくは、リスナコンポーネント上でRelease()を呼び出す前に、INotifyDataObjectを実装するクライアントがReleaseData()を呼び出す。このシナリオでは、AquireData呼び出しによって、オブジェクトの参照カウントが増分され、ReleaseDataによって、オブジェクトの参照カウントが減分される。
このシナリオでは、表5に示すように、オブジェクトによっては、ICallbackインターフェースを公開する。
Figure 2004310745
ICallBackインターフェースを公開するオブジェクトが、印刷コンポーネントとリッスン側アプリケーションの両方によって提供される。通知の受信に関与するコンポーネントは、ICallBackインターフェースを公開する。したがって、リッスン側クライアントは、登録時に、ICallbackインターフェースを指すポインタを提供する。このポインタを使用して通知を送信する。さらに、共有リソースは、返信通知を受信するために、ICallbackインターフェースを指すポインタを公開する。
共有リソース(印刷コンポーネントなど)からクライアントプログラムに通知が送信されると、通知を送り届けるため、チャネルのクライアントプログラム側で、サービスが、OnEventNotifyメソッドを呼び出す。一方の端で、チャネルが閉じられると、もう一方の端で、サービスがChannelClosedメソッドを呼び出して、チャネルが閉じられたことを知らせる。チャネルを閉じた理由は、通知として送り届けられる。共有リソースまたは通知サーバがシャットダウンした場合は、サービスがChannelClosedを呼び出して、Notification_Diedタイプのメッセージを送り届ける。
このシナリオでは、表6に示すように、印刷コンポーネントがCreateNotificationChannelを呼び出すと、通知チャネルの開始に応答して、IAsynchNotificationインターフェースを公開するコンポーネントが、サービスによって、クライアントプログラム側と通知サーバ側の両方に提供される。
Figure 2004310745
IAsynchNotificationインターフェースは、チャネルを識別し、またそれを使用して、通知を送信しまたはチャネルを閉じることができる。送信者は、SendNotificationを呼び出して、通知を送信する。送信者の役割は、チャネルを開き通知を送信する印刷コンポーネントによっても、また返信通知を返送しようとするときにリッスン側クライアントによっても果たすことができる。チャネルを閉じるために、送信者とリスナのどちらともが、CloseChannelを呼び出すことができる。チャネルを閉じた理由、または単にNULLポインタを保持する通知を渡すことができる。チャネル作成者が、通知タイプをチャネルに関連付ける場合は、GetChannelNotificationTypeによって、NULLデータを含むINotifyDataObjectとして、チャネル通知タイプが戻される。
このシナリオでは、通知チャネル作成のため、CreatePrintNotificationChannelが印刷コンポーネントによって呼び出される。チャネルは、プリンタ単位のハンドルでも、サーバ単位のハンドルでもよい。印刷コンポーネントは、スプーラによってロードされるチャネルを開くことができる。たとえば、スプーラにロードされると、ドライバ(Winspool.drvなど)は、この機能を公開し、それによって、印刷ドライバは、チャネルを開くことができる。さらに、このシナリオでは、スプーラライブラリ(spooler library)(Spoolss.libなど)は、この機能を公開し、それによって、ポートモニタおよび他の印刷コンポーネントは、チャネルを開くことができる。したがって、スプーラライブラリへのリンクを含む、スプーラサーバによってホストされているコンポーネントは、CreatePrintNotificationChannelを呼び出すことができる。
このシナリオでは、表7に示すように、CreatePrintNotificationChannel呼び出しは、特定の入力および出力を含む。
Figure 2004310745
表7に示すように、チャネルは、プリントハンドルを開いたセッション(プリンタ名など)に関連付けられる。セッションフィルタは、通知を受信するセッション(eSessionFilterなど)を指定する。チャネル通知タイプは、サポートされる通知のタイプを指定する。通信フィルタは、チャネルが単一/双方向かを指定する。ICallbackインターフェースは、チャネルのもう一方の端から通知が返送されたときに、何を呼び出すかを指定する。呼び出し側が応答に関与していない場合は、これはNULLであり得る。
このメソッドは、チャネルを識別し、また通知を送信し、チャネルを閉じるために使用されるIAsyncNotificationオブジェクトを戻す。たとえば、チャネルを閉じるために、IAsynchNotificationインターフェースのCloseChannelメソッドを呼び出すことができる。
このシナリオでは、表8に示すように、RegisterForPrintNotifications呼び出しは、特定の入力および出力を含む。
Figure 2004310745
RegisterForPrintNotificationsメソッドは、通知受信の登録をするリッスン側のクライアントによって呼び出される。リッスン側クライアントは、スプーラ内でも、いずれかのアプリケーション内でも生存することができる。ドライバ(Winspool.drvなど)は、どこにロードされるかに関係なく、この機能を公開する。スプーラライブラリ(Spoolss.libなど)は、この機能を公開し、それによって、ポートモニタは、通知のための登録をすることができる。スプーラライブラリ(Spoolss.libなど)にリンクするスプーラによってホストされるコンポーネントは、RegisterForPrintNotificationsを呼び出すことができる。図示するように、ローカル/リモートプリンタ名またはサーバ名(プリントハンドルなど)が指定される。通知タイプは、リスナに送信する通知のタイプを示す。セッションフィルタは、どのセッションの通知をリスナに送信するかを示す。通信フィルタは、リスナが双方向通信/単一方向通信のどちらに関心があるかを指定する。ICallbackインターフェースは、どこに通知を送信するかを指定する。このメソッドは、UnRegisterForPrintNotificationsを呼び出して登録を解除するため、クライアントが使用する不透明な登録ハンドルを戻す。この登録は、登録呼び出しを行うスレッドのセッションIDに関連付けられる。このシナリオでは、スプーラは、チャネルのセッションフィルタ、ならびにクライアントの登録セッションおよびクライアントセッションのフィルタに基づいて、リッスン側クライアントをフィルタにかける。
(実施例28)
例示的な登録および通知サーバ方法
図19に、通知の送信および返信通知の受信を遂行するための、通知サーバ方法による例示的な方法1900を示す。1902で、この方法は、複数のクライアントのいずれからの要求を待つ。待ちを回避するために、通知サーバまたは例示的な方法1900を、要求が生じたときに、ランタイム環境によってインスタンス化することができる。実際に、待ちが肯定の動作(affirmative action)である必要はない(たとえば、サーバは待ち命令を実行する必要はない)。前述の要求は、オブジェクトモデル(COM、DCOM、JAVA(登録商標)、C++など)に基づくメソッド呼び出しであり得る。
1904で、通知を受信するためのリスナプロパティ登録の要求が、クライアントコンポーネントから受信される。1906で、その要求についての(たとえば要求に含まれる、またはそれから判断される)リスナプロパティが、(たとえばリスナ登録を介して)要求を送信するクライアントコンポーネントに関連付けられる。あるシナリオでは、前記の関連付けは、受信されたプロパティを、要求のソースの識別子とともに保持するデータ構造体に含められる。次いで、方法は戻り1908、次の要求を待つ1902。リスナプロパティは、本明細書で述べる例示的なプロパティのうち少なくとも1つを示す。要求がリスナの登録要求でない場合は、この方法は1910に続く。
1910で、チャネルプロパティ登録の要求が、共有リソースから受信される。1912で、その要求についての(たとえば要求に含まれる、またはそれから判断される)送信者プロパティが、要求を送信する共有リソース(すなわち、送信者登録)に関連付けられる。あるシナリオでは、前記の関連付けは、受信されたプロパティおよび共有リソース識別子を保持するデータ構造体に含められる。次いで、方法は戻り1908、次の要求を待つ1902。送信者プロパティは、本明細書で述べる例示的なプロパティのうち少なくとも1つを示す。要求が送信者の登録要求でない場合は、この方法は1914に続く。
1914で、通知(通知オブジェクトなど)が共有リソースから受信される。要求が通知である場合は、1916で、この方法は、通知を送信する共有リソースによって登録されている送信者プロパティを、登録されているリスナプロパティと比較する。比較が肯定的であれば1916、通知は、その肯定比較をもたらしたリスナプロパティを有するクライアントコンポーネントに転送される1918。あるシナリオでは、クライアントコンポーネントは、印刷ドライバコンポーネントがクライアントコンポーネントのセキュリティコンテキストで実行されている間に生成する通知のために登録をする。別のシナリオでは、クライアントコンポーネントは、特定のターミナルセッションで実行されている印刷モニタコンポーネントによって生成される通知のために登録をする。別のシナリオでは、クライアントコンポーネントは、特定の通知タイプのすべてのスプーラ通知のために登録をする。比較が肯定的であれば1916、その通知は、対応する肯定的なリスナプロパティを有するクライアントコンポーネントに転送される1918。比較が肯定的でなければ1916、方法は戻り1908、次の要求を待つ1902。しかし、要求が通知要求でない場合には1914、要求は1920に続く。
1920で、要求が、クライアントコンポーネントからの、返信通知の送信を求める要求であれば、返信通知は、その返信が応答する元になった通知を送信した共有リソース1922に戻され、次いで、この方法は戻り1908、次の方法を待つ。要求が返信要求でない場合には、方法は1924に続く。
1924で、要求が、クライアントコンポーネントからの、そのクライアントコンポーネントとリスナプロパティの間の関連付けを閉じる要求である場合には、その関連付けを閉じ1926、方法は戻り1908、次の要求を待つ1902。
1928で、要求が、共有リソースからの、その共有リソースと送信者プロパティの間の関連付けを閉じる要求である場合には、その関連付けを閉じ1928、方法は戻り1908、次の要求を待つ1902。
本明細書で述べる他のどんな方法とも同様に、この方法1900はおそらく、複数のプロセス空間にわたって分散され機能する。このような場合には、この方法の操作を、複数のプロセス空間で実施することができる。たとえば、通知は一般に、通知サーバの空間で受信され、返信通知は一般に、クライアントコンポーネントの空間で受信される。他の操作は、両方のアドレス空間で実行されるコードを含み得る。たとえば、リスナ登録要求は、クライアントコンポーネントのアドレス空間で受信することができ、また部分的には、プロセス間通信を受け持つ通知サーバ空間で完了される。
実際には、比較操作(1904、1910など)は、肯定的には実行されないことがあるが、適切な実行可能メソッド(適切なインターフェースのメンバ関数など)を呼び出すことによって、様々な関数にアクセスすることができる。
(実施例29)
例示的なクライアント登録および通知方法
図20に、通知サーバと連携して通知を処理するために、クライアントプログラムによって実施される例示的な方法2000を示す。あるシナリオでは、クライアントプログラムは、ターミナルサーバで実行されているセッションである。別のシナリオでは、クライアントプログラムは、単一のコンピュータ環境において、ユーザがログオフしないで切り替えることができる、複数のユーザ状態のうち1つで実行されている。クライアントプログラムは一般に、共有リソースにサービスを要求し、また共有リソースから発信され、最初に通知サーバに送り届けられる通知を受信するために通知サーバに登録をする、複数のクライアントプログラムのうち1つである。
2002で、クライアントプログラムは、(たとえばリスナ登録を介して)通知サーバにリスナとして登録する。登録のためのリスナプロパティは、要求の中に含めることも、それから判断することもできる。次いで、登録されているプロパティに一致する通知が、通知サーバから受信されるまで、クライアントは任意選択で、他のタスクの処理を続ける。たとえば、あるシナリオでは、クライアントプログラムは、リモートターミナルでログインしているユーザのための、アプリケーション(文書処理、スプレッドシート処理など)を実行するターミナルセッションである。そのセッションは、印刷サービスを要求した後に、リモートターミナルのユーザによって生成された追加の編集要求を、続けて処理することができる。したがって、ターミナルセッションは、印刷サービスを要求した後に、処理を続ける。
通知を受信すると、2008で、クライアントプログラムは、その通知を処理(たとえば、その通知用のユーザインターフェース表示を生成)する。次いで、クライアントは、他の処理を続けることができる。あるシナリオでは、通知がリスナプロパティと一致すると判断したことに応答して、その通知が、通知サーバによって送信される。たとえば、あるシナリオでは、クライアントプログラムは、ターミナルセッションであり、通知は、印刷コンポーネントに関する状態の変化である。あるシナリオでは、クライアントは、ターミナルセッションであり、リモートターミナルステーション(remote terminal station)で通知を表示するための制御論理が生成され、リモートターミナルに送信される。別のシナリオでは、ユーザインターフェースは、リスナプロパティ、または通知オブジェクト自体に置かれた通知タイプ識別子(グローバル一意識別子など)を用いて、クライアントプログラムによって識別される。あるシナリオでは、クライアントが、ターミナルサービスサーバ(terminal services server)上で実行されるターミナルセッションである場合に、生成されたユーザインターフェースが、リモートターミナルに表示される。
2012で、クライアントは判断して、2014で、通知サーバに返信通知を送信する。この返信は、共有リソースに転送される。たとえば、印刷シナリオでは、こうした返信は、ジョブがキャンセルまたは再度ルーティングされることを示すことがある。次いでクライアントは、他の処理に戻ることができ、他の通知を受信することがある。
所望であれば、登録済みクライアントは、複数の通知を受信するための登録を維持することができる。返信を一部に対しては送り、他に対しては送らないことができる。
2016で、クライアントが追加の通知の受信にもはや関与しない(たとえば、クライアントが終了する)ため、登録されているリスナを閉じる。
図示した様々な関数は、適切な実行可能メソッド(適切なインターフェースのメンバ関数など)を呼び出すことによってアクセスすることができる。
(実施例30)
例示的な共有リソース登録および通知方法
図21に、通知を送信するために共有リソースによって実行される例示的な方法2100を示す。あるシナリオでは、共有リソースは、印刷スプーラで実行される印刷コンポーネントである。別のシナリオでは、スプーラは、印刷コンポーネントの共有リソースをホストする通知サーバである。別のシナリオでは、共有リソースは、複数のユーザによって共有される1つのコンピュータ上で実行される印刷ドライバであり、ユーザは、毎回ログオン/オフを行わずに、ユーザ状態を切り替えることができる。通知は一般に、共有リソースにサービスを要求し、通知サーバからの通知のために登録をしている、複数のクライアントのうち1つにルーティングされる。
2102で、送信者プロパティが、通知サーバに登録される。送信者プロパティは、登録要求の中に含まれても、登録要求から判断されてもよく、本明細書で述べる例示的な送信者プロパティのうち少なくとも1つを示す。次いで、共有リソースは、他の処理を続けることができる。
2108で、何らかの時点で(プリンタ紙切れの表示の受信時など)、通知サーバに通知を送信する。次いで、共有リソースは、他の処理を続けることができる。
(もしあれば)返信を受信後、2112で、その返信を処理することができる。場合によっては、返信は望まれていないので、返信の処理を実施する必要はない。次いで共有リソースは、他の処理を続けることができる。
2114で、チャネルを閉じる(たとえば、登録を閉じる)。別の通知を処理する場合には、チャネルを閉じる必要はない。
(実施例31)
プリンタシナリオへの技術の例示的な適用
本明細書で述べたいずれの技術も、印刷シナリオに適用することができる。こうしたシナリオでは、プリンタがその状態を示す通知をユーザに返す(provide back)のが、しばしば有用である。本明細書で述べた技術を用いて、こうした通知を実現することができる。たとえば、印刷コンポーネントは、通知を送信することができる。
こうした通知で、プリンタの状況(プリンタの状態、エラーメッセージなど)を示すことができる。たとえば、紙切れまたは手差し給紙メッセージを、通知を介して送信することができる。任意の数の印刷に関する他のメッセージを送ることができる。
双方向通信が実装されている場合は、ユーザは、措置を講じる必要があること(印刷ジョブのキャンセルまたは再スケジューリングなど)を示す通知を返送することができる。
(実施例32)
例示的な印刷共有リソースシステム
図22の例示的なシステム2200は、2つのマシン、すなわち印刷サーバ2218および別のマシン2220を備え、それぞれがターミナルセッションのユーザインターフェースを表示している。印刷サーバ2218は、ターミナルセッションのソフトウェア2204用に実行されており、もう一方のコンピュータ2220上の登録されているクライアントアプリケーション2210に通知を送信する印刷リソース2202を含む。この例では、通知システムを印刷スプーラ2208が使用して、送信されたジョブが印刷されたときに、リッスン側のアプリケーションに通知を送信する。このシナリオでは、3つの印刷アプリケーション2210、2212、2214が、ドメインゲストユーザ(domain guest user)を偽装して実行されて、別のセッション2216が、印刷装置の状況通知を監視する。
ゲストユーザ(guest user)として実行されるアプリケーション2210、2212、2214は、装置が印刷を完了したときに、通知を受信するために登録する。それぞれのアプリケーション2210、2212、2214は、それぞれ異なるセッションに関連付けられる。システムサービス(印刷リソース2202およびスプーラ2208など)は、コンソールセッションに関連付けられる。
この例では、アプリケーションが、同じユーザを偽装して実行されたとしても、通知は、文書を送信したアプリケーションにだけ送信される。この場合、セッションフィルタを使用して、ジョブを送信した登録済みセッション2210に通知を送付する。また「紙切れ」通知2222は、装置状況通知に関心がある登録済みアプリケーションにだけ送信される。
(実施例33)
ターミナルサーバ環境での例示的な実装
独立系ハードウェアベンダおよび独立系ソフトウェアベンダによって提供されるコンポーネントは、本明細書で述べた技術を使用して、印刷または他の共有リソースサービスを要求するクライアントコンポーネントに関連付けられるターミナルサーバセッションに、ユーザインターフェースを表示することができる。このようにして、ユーザインターフェースを、コンソールセッションではなく、要求の発信元である場所(リモートセッションなど)に表示することができる。
たとえば、プリンタ製造元またはプリンタドライバ開発者は、印刷ドライバに、適切な通知を生成し、ユーザと双方向通信を行う機能を含めることができる。ターミナルサーバまたはユーザ簡易切り替え環境では、メッセージ用のユーザインターフェースを、適切なセッションにでも、望まれるように適切なユーザ用にでも表示することができる。
(実施例34)
例示的な返信の使用
返信通知機構を、本明細書で述べたいずれかの例と組み合わせて使用して、ユーザアクション(user action)を、共有リソースに伝達して返すことができる。たとえば、通知を受信すると、クライアントは、ディスプレイ上の通知のユーザインターフェース表示を送信することができる。ユーザインターフェース表示は、対話型ユーザインターフェース要素(プッシュボタンなど)を含むことができる。ユーザインターフェース要素がアクティブ化された後、共有リソースに、返信通知を返信することができる。
たとえば、印刷シナリオでは、ユーザは、印刷ジョブをキャンセルし、再試行し、または再ルーティングすることを示すことができる。印刷ジョブを再ルーティングする場合には、返信通知に宛先を含めることによって、異なる宛先を伝達することができる。
こうしたシナリオは、ターミナルサーバ環境でサポートすることができる。このような場合、リモートターミナルに配置されたリモートディスプレイに、ユーザインターフェース表示を表示することができる。
(実施例35)
コンピューティング環境
図23および以下の議論は、実装に適したコンピューティング環境についての簡潔で一般的な説明を提供するためのものである。コンピュータおよび/またはネットワーク装置上で実行されるコンピュータプログラムのコンピュータ実行可能命令の一般的な文脈で本発明について説明するが、本発明は、他のプログラムモジュールと組み合わせて実施することもできることが当業者には理解されよう。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実装するルーチン、プログラム、コンポーネント、データ構造体などを含む。さらに、本発明は、マルチプロセッサシステム、マイクロプロセッサベースの(microprocessor−based)電子機器、ミニコンピュータ、メインフレームコンピュータ、ネットワーク装置、無線装置などを含めた、他のコンピュータシステム構成で実施できることが当業者には理解されよう。ネットワーク化されたコンピューティング環境でも、スタンドアロンコンピュータ上でも、拡張を実施することができる。
図23を参照すると、実装のための例示的なシステムが、処理装置2321、システムメモリ2322、およびシステムメモリを含めて様々なシステムコンポーネントを処理装置2321に接続するシステムバス2323を備えた、従来型のコンピュータ2320(パーソナルコンピュータ、ラップトップ、サーバ、メインフレーム、他の様々なコンピュータなど)を含んでいる。処理装置は、Intel x86 Pentium(登録商標)、ならびにIntelおよびCyrix、AMD、Nexgenを含めた他からの互換性のあるマイクロプロセッサ、DigitalからのAlpha、MIPS Technology、NEC、IDT、Siemensおよび他からのMIPS、ならびにIBMおよびMotorolaからのPowerPCを含めた、様々な市販プロセッサのうちいずれかでよい。デュアルマイクロプロセッサ(dual microprocessor)および他のマルチプロセッサアーキテクチュアを、処理装置2321として使用することもできる。
システムバスは、メモリバスまたはメモリコントローラ、周辺バス、およびいくつか例を挙げると、PCI、VESA、AGP、Microchannel、ISA、EISAなどの、様々な従来のバスアーキテクチュアのいずれかを使用するローカルバスを含めた、いくつかのタイプのバス構造のいずれかであり得る。システムメモリは、ROM(read only memory:読出し専用メモリ)2324、およびRAM(random access memory:ランダムアクセスメモリ)2325を含む。スタートアップ時などに、コンピュータ2320内の要素間で情報を転送する助けをする基本ルーチンを含むBIOS(basic input/output system:基本入出力システム)が、ROM2324に格納される。
コンピュータ2320はさらに、ハードディスクドライブ2327、たとえば取出し可能ディスクに対して読み書きするための磁気ディスクドライブ2328、およびたとえばCD−ROMディスク2331を読み出し、または他の光メディアに対して読み書きするための光ディスクドライブ2330を含む。ハードディスクドライブ2327、磁気ディスクドライブ2328、光ディスクドライブ2330はそれぞれ、ハードディスクドライブインターフェース2332、磁気ディスクドライブインターフェース2333、光ドライブインターフェース2334によって、システムバス2323に接続される。ドライブおよびその関連するコンピュータ読取り可能媒体は、コンピュータ2320のために、データ、データ構造体、コンピュータ実行可能命令などの不揮発性ストーレッジを提供する。前記のコンピュータ読取り可能媒体の説明は、ハードディスク、取出し可能磁気ディスクおよびCDに言及しているが、コンピュータ読取り可能な他のタイプの媒体、たとえば磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ(Bernoulli cartridge)などを、例示的なオペレーティング環境で使用することもできることを当業者には理解されたい。
実装2356に加えて、オペレーティングシステム2335、1つまたは複数のアプリケーションプログラム2336、他のプログラムモジュール2337およびプログラムデータ2338を含めたいくつかのプログラムモジュールを、ドライブおよびRAM2325に格納することができる。
ユーザは、キーボード2340およびマウス2342などのポインティング装置を介してコンピュータ2320に、コマンドおよび情報を入力することができる。こうしたおよび他の入力装置はしばしば、システムバスに接続されたシリアルポートインターフェース2346を介して処理装置2321に接続されるが、他のインターフェース、たとえばパラレルポート、ゲームポート、USB(universal serial bus:ユニバーサルシリアルバス)によって接続してもよい。モニタ2347、または他のタイプの表示装置もまた、ビデオアダプタ2348などのインターフェースを介してシステムバス2323に接続される。モニタに加えて、コンピュータは一般に、スピーカやプリンタなどの他の周辺出力装置(図示せず)を含む。
コンピュータ2320は、リモートコンピュータ2349などの1つまたは複数のリモートコンピュータとの論理接続を使用した、ネットワーク化された環境で動作する。リモートコンピュータ2349は、サーバ、ルータ、ピアデバイス(peer device)または他の通常のネットワークノードでよく、またメモリ記憶装置2350だけを示したが、コンピュータ2320に関して述べた要素の多数またはすべてを一般に含む。図示した論理接続は、LAN(local area network:ローカルエリアネットワーク)2351、WAN(wide area network:広域エリアネットワーク)2352を含む。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、インターネットでは一般的なものである。
LANネットワーキング環境で使用される場合には、コンピュータ2320は、ネットワークインターフェースまたはアダプタ2353を介してローカルネットワーク2351に接続される。WANネットワーキング環境で使用される場合には、コンピュータ2320は一般に、モデム2354、または(たとえばLAN2351およびゲートウェイまたはプロキシサーバ2355を介して)インターネットなどの広域エリアネットワーク2352上に通信を確立するための他の手段を含む。モデム2354は、内部にあっても、外部にあってもよく、シリアルポートインターフェース2346を介してシステムバス2323に接続される。ネットワーク化された環境では、コンピュータ2320に関して示したプログラムモジュール、またはその一部を、リモートメモリ記憶装置に格納することができる。図示したネットワーク接続は、例示的なものであり、コンピュータ間の通信リンクを確立する他の手段を使用できることが理解されよう。
代替方法
図示した一実施形態を参照して、本発明の原理を示し説明したが、図示した実施形態は、こうした原理から逸脱せずに、その構成および詳細を修正できることが理解されよう。本明細書で示したプログラム、プロセスまたは方法は、他に示されていない限りは、特定のタイプのコンピュータ装置に関するまたは限定されるものではないことを理解されたい。様々なタイプの汎用または専用のコンピュータ装置は、本明細書で述べた教示による操作で使用することも、それを実施することもできる。ソフトウェアにおいて図示した実施形態の要素をハードウェアで実装することも、またその逆も同様に行うことができる。
一例からの技術を、他のいずれかの例に組み入れることができる。一部の例では、通知の「転送」について述べている。こうした例は、少なくとも通知の表示を送信すること、通知自体を転送(中継など)すること、またその何らかの組合せを含み得る。
本発明の原理を適用することができる多数の可能な実施形態を考慮して、詳述した実施形態は例示的なものにすぎないことを理解すべきであり、本発明の範囲を限定するものとしてみなすべきでない。そうではなく、本発明について、こうしたすべての実施形態は、特許請求の範囲およびその等価物の、範囲および精神の内に含まれ得ることを主張する。
ターミナルサーバシステムの例を示す図である。 「ユーザ簡易切り替え」シナリオの例を示す図である。 共有リソースについての通知のための例示的なシステムを示す図である。 共有リソースからの通知のための登録を実現する例示的なシステムを示す図である。 共有リソースからの通知のための登録を実現する別の例示的なシステムを示す図である。 通知を処理するための方法のフローチャートである。 送信者およびリスナを登録し、通知を処理するための方法のフローチャートである。 クライアントが登録し、共有リソースから通知を受信するための方法のフローチャートである。 通知を送信する送信者を登録するための方法のフローチャートである。 共有リソースからの通知のためのクライアント登録の例示的なシステムを示す図である。 共有リソースから通知を受信するクライアントの登録を含む、例示的なターミナルサーバシステムを示す図である。 共有リソースから通知を受信するためのユーザ表示の登録を含む、例示的な複数ユーザ切り替えシステムを示す図である。 通知にフィルタをかけるために潜在的に使用される、1つまたは複数の登録プロパティを示す、例示的な通知サーバを示す図である。 ユーザ識別子に基づいて通知にフィルタをかける、例示的なシステムを示す図である。 セキュリティコンテキストに基づいて通知にフィルタをかける、例示的なシステムを示す図である。 セッション識別子に基づいて通知にフィルタをかける、例示的なシステムを示す図である。 複数のプロパティに基づいて通知にフィルタをかける、例示的なシステムを示す図である。 管理者によって作成される登録を含む例示的なシステムを示す図である。 例示的なリスナおよびチャネルの登録のためのオブジェクトおよびインターフェースを示す図である。 例示的なリスナおよびチャネルの登録のためのオブジェクトおよびインターフェース、ならびに渡される通知オブジェクトを示す図である。 例示的なリスナおよびチャネルの登録のためのオブジェクトおよびインターフェース、ならびに渡される返信通知オブジェクトを示す図である。 クライアントおよび共有リソースを登録し、登録されたプロパティに従って通知および返信を転送するための通知方法のフローチャートである。 通知を受信し、返信を送信するクライアントを登録するためのクライアント方法のフローチャートである。 通知を送信し、返信を処理するチャネルを登録するための共有リソース方法のフローチャートである。 通知のために登録し、印刷リソースに共有リソースを要求するクライアントを含む、例示的なシステムを示す図である。 前述の通知技術を実施する方法および装置を実装するために使用することができる分散コンピュータシステムを示すブロック図である。
符号の説明
100 システム
102 ターミナルサーバソフトウェア
103 コンソール
104 ユーザインターフェース
106 ユーザインターフェース
108 ユーザインターフェース
110 ネットワーク
114 印刷サービス
200 システム
204 ユーザインターフェース表示
206 コンピュータ
212 ユーザインターフェース表示
214 ユーザインターフェース表示
222 印刷サービス
300 システム
306 共有リソース
316 通知
326 クライアント
332 共有リソース
334 通知サーバ
336 送信者登録
337 送信者プロパティ
338A リスナ登録
339A リスナプロパティ
338B リスナ登録
339B リスナプロパティ
340A クライアント
340B クライアント
352 クライアント
354 クライアント
356 サーバ
357 共有リソース
358 サーバ
359 共有リソース
360 要求
362 要求
364 通知サーバ
366 リスナ登録
368 送信者登録
370 フィルタ
400 方法
450 方法
500 方法
600 方法
700 通知システム
702 クライアント
704 クライアント
706 サーバ
708 サーバ
716 リスナ登録
718 リスナ登録
720 通知サーバ
722 送信者登録
724 送信者登録
726 登録
800 通知システム
802 セッション
804 セッション
806 セッション
808 ユーザインターフェース
810 リモートターミナル/ユーザインターフェース
812 リモートターミナル
814 ターミナルサーバ
816 ネットワーク
818 アクセス
820 共有リソース
822 通知サーバ
824 リスナ登録
826 送信者登録
828 外部リソース
830 リスナ登録
900 通知システム
902 コンピュータ
904 現在のセッション
906 セッション
908 セッション
910 アクティブディスプレイ
912 共有リソース
914 通知サーバ
916 共有リソース
918 送信者登録
920 送信者登録
922 プロパティ
1000 通知サーバ
1002 リスナ登録
1004 送信者登録
1006 フィルタ
1100 通知システム
1102 印刷スプーラサーバ
1112 コンポーネント
1114 コンポーネント
1122 リスナ登録
1124 リスナ登録
1202 印刷スプーラサーバ
1212 コンポーネント
1214 コンポーネント
1222 リスナ登録
1224 リスナ登録
1300 通知システム
1302 印刷スプーラサーバ
1312 コンポーネント
1314 コンポーネント
1322 リスナ登録
1324 リスナ登録
1400 通知システム
1402 印刷スプーラサーバ
1412 コンポーネント
1414 コンポーネント
1422 リスナ登録
1424 リスナ登録
1526 登録
1600 通知システム
1602 通知サーバ
1604 共有リソース
1606 クライアントコンポーネント
1608 クライアントコンポーネント
1610 リスナ登録
1612 リスナ登録
1614 通信
1616 チャネルコンポーネント
1618 論理リスト
1620 論理リスト
1622 ICallBackインターフェース
1624 ICallBackインターフェース
1626 INotifyChannelインターフェース
1700 通知システム
1702 通知サーバ
1704 共有リソース
1705 チャネルコンポーネント
1706 クライアントプログラム
1708 INotifyChannelインターフェース
1710 リスナコンポーネント
1712 リスナコンポーネント
1714 通知オブジェクト
1718 チャネルコンポーネント
1800 通知システム
1801 クライアントプログラム
1802 通知サーバ
1804 返信通知オブジェクト
1806 チャネルコンポーネント
1808 リスナコンポーネント
1810 リスナコンポーネント
1812 チャネルコンポーネント
1814 返信通知
1816 共有リソース
1900 方法
2000 方法
2100 方法
2200 システム
2202 印刷リソース
2204 ターミナルセッションソフトウェア
2208 印刷スプーラ
2210 印刷アプリケーション/クライアントアプリケーション/セッション
2212 印刷アプリケーション
2214 印刷アプリケーション
2216 セッション
2218 印刷サーバ
2220 コンピュータ
2222 紙切れ通知
2320 コンピュータ
2321 処理装置
2322 システムメモリ
2323 システムバス
2324 ROM
2325 RAM
2327 ハードディスクドライブ
2328 磁気ディスクドライブ
2330 光ディスクドライブ
2331 CD−ROMディスク
2332 ハードディスクドライブインターフェース
2333 磁気ディスクドライブインターフェース
2334 光ドライブインターフェース
2335 オペレーティングシステム
2336 アプリケーションプログラム
2337 プログラムモジュール
2338 プログラムデータ
2340 キーボード
2342 マウス
2346 シリアルポートインターフェース
2347 モニタ
2348 ビデオアダプタ
2349 リモートコンピュータ
2350 メモリ記憶装置
2351 LAN/ローカルネットワーク
2352 WAN
2353 アダプタ
2354 モデム
2355 ゲートウェイ/プロキシサーバ
2356 トランスレータ

Claims (57)

  1. 共有リソースについての通知を受信することであって、前記通知は、1つまたは複数の送信者プロパティに関連付けられ、前記送信者プロパティは、識別コンテキストプロパティを含むこと、および
    少なくとも前記送信者プロパティの前記関連する識別コンテキストプロパティと、クライアントの1つまたは複数の識別コンテキストプロパティの比較に基づいて、前記クライアントに、少なくとも前記通知の表示を送信することを含むことを特徴とする方法。
  2. 前記共有リソースは、ターミナルサーバ環境において複数のセッションによって共有され、
    前記クライアントは、前記共有リソースを呼び出す責任を担い、
    前記送信者プロパティの前記識別コンテキストプロパティは、前記共有リソースを呼び出す責任を担う前記クライアントのセッション識別子を示すことを特徴とする請求項1に記載の方法。
  3. 前記共有リソースは、ユーザ簡易切り替え環境において複数のユーザによって共有され、
    送信者の前記識別コンテキストプロパティは、前記複数のユーザのうちどれが前記共有リソースにアクセスしているかを示すことを特徴とする請求項1に記載の方法。
  4. 前記識別コンテキストプロパティはユーザ識別子を含むことを特徴とする請求項1に記載の方法。
  5. 前記識別コンテキストプロパティはセキュリティコンテキスト識別子を含むことを特徴とする請求項1に記載の方法。
  6. 前記識別コンテキストプロパティはセッション識別子を含むことを特徴とする請求項5に記載の方法。
  7. 前記送信者プロパティはさらに、通信タイプ、通知タイプおよびマシン識別子のうち少なくとも1つを含むことを特徴とする請求項1に記載の方法。
  8. 前記識別コンテキストプロパティは、セッション識別子およびセキュリティコンテキスト識別子を含むことを特徴とする請求項1に記載の方法。
  9. 前記通知は、前記共有リソースの状態条件(state condition)を示すユーザインターフェース表示のためのデータを含むことを特徴とする請求項1に記載の方法。
  10. 前記ユーザインターフェース表示は、対話型ユーザインターフェース要素を含み、
    前記対話型ユーザインターフェース要素はアクティブ化されたという表示を受信したときに、前記共有リソースに返信通知を送信することをさらに含むことを特徴とする請求項9に記載の方法。
  11. 前記状態条件はプリンタ状態に関連することを特徴とする請求項9に記載の方法。
  12. 前記状態条件は紙切れメッセージに関連することを特徴とする請求項9に記載の方法。
  13. 前記状態条件はエラー状態を含むことを特徴とする請求項9に記載の方法。
  14. 前記状態条件はプリンタの紙リソースの状態を含むことを特徴とする請求項9に記載の方法。
  15. 前記通知は、前記共有リソースについての印刷固有のデータを示すデータを含むことを特徴とする請求項1に記載の方法。
  16. 前記クライアントによって前記通知を受信したときに、前記通知のユーザインターフェース表示を生成することをさらに含むことを特徴とする請求項1に記載の方法。
  17. 前記クライアントによって前記通知を受信したときに、前記通知のユーザインターフェース表示を生成することであって、前記ユーザインターフェース表示は、対話型ユーザインターフェース要素を含むこと、および
    前記ユーザが前記対話型ユーザインターフェース要素を選択したという表示を受信したときに、前記共有リソースに返信通知を送信することをさらに含むことを特徴とする請求項1に記載の方法。
  18. 前記共有リソースは、印刷関連のコンポーネントであることを特徴とする請求項1に記載の方法。
  19. 前記クライアントについて1つまたは複数のリスナプロパティを取得することであって、前記リスナプロパティは、識別コンテキストプロパティを含むこと、および
    前記クライアントを前記リスナプロパティに関連付けることをさらに含むことを特徴とする請求項1に記載の方法。
  20. 前記クライアントについて前記識別コンテキストプロパティを、前記クライアントからのRPC呼び出しに含まれる情報から取得することを特徴とする請求項19に記載の方法。
  21. 前記共有リソースについて前記1つまたは複数の送信者プロパティを取得すること、および
    前記共有リソースを前記送信者プロパティに関連付けることをさらに含むことを特徴とする請求項19に記載の方法。
  22. 前記返信の転送は、前記送信者プロパティと前記リスナプロパティの比較に少なくとも基づくことを特徴とする請求項21に記載の方法。
  23. 前記クライアントから返信通知を受信すること、および
    前記共有リソースに前記返信通知を転送することをさらに含むことを特徴とする請求項19に記載の方法。
  24. 前記クライアントからの呼び出しに対するプロセス間呼び出しセットアップ時に取得された情報から、前記セッション識別子を判断することをさらに含むことを特徴とする請求項8に記載の方法。
  25. 前記共有リソースは、前記クライアントのセッションとは異なるセッションに関連付けられるが、前記送信者プロパティは、前記プロセス間呼び出しセットアップから判断された前記セッション識別子を示すことを特徴とする請求項24に記載の方法。
  26. 前記リスナプロパティはさらに、通信タイプ、通知タイプ、セッション識別子およびマシン識別子のうち少なくとも1つを含むことを特徴とする請求項19に記載の方法。
  27. 前記リスナプロパティはさらに、通信タイプ、通知タイプおよびマシン識別子のうち少なくとも1つを含むことを特徴とする請求項19に記載の方法。
  28. 前記リスナプロパティは、前記送信者プロパティより前に受信されることを特徴とする請求項19に記載の方法。
  29. 前記送信者プロパティは、前記リスナプロパティより前に受信されることを特徴とする請求項19に記載の方法。
  30. 第2のクライアントから、前記識別コンテキストプロパティを含む第2のリスナプロパティを受信すること、
    前記第2のクライアントを、前記第2のリスナプロパティに関連付けること、および
    前記第2のリスナプロパティと前記送信者プロパティの比較に基づいて、前記第2のクライアントに前記通知を転送することをさらに含むことを特徴とする請求項19に記載の方法。
  31. 前記通知を受信したときに、リモートターミナルに配置されたディスプレイに、前記通知のユーザインターフェース表示を送信することをさらに含むことを特徴とする請求項19に記載の方法。
  32. 前記リスナプロパティは、管理権限を有するクライアントによって指定され、
    前記リスナプロパティは、前記クライアントに関連するユーザ以外のユーザについての通知が受信されることを示すことを特徴とする請求項19に記載の方法。
  33. 前記リスナプロパティは、管理権限を有するクライアントによって指定され、
    前記リスナプロパティは、任意のユーザについての特定の通知タイプの通知が、クライアントコンポーネントに転送されることを示すことを特徴とする請求項19に記載の方法。
  34. 前記共有リソースは、印刷ジョブを処理するプリンタと通信するサーバ印刷システムコンポーネントであり、
    前記通知は、前記プリンタが紙切れであることを示し、
    前記リスナプロパティは、前記印刷ジョブを要求する前記クライアントのセッション識別子およびセキュリティコンテキストを示すことを特徴とする請求項19に記載の方法。
  35. 前記共有リソースは、印刷ジョブを処理するプリンタと通信するプラグインコンポーネントであり、
    前記通知は、前記プリンタが紙切れであることを示し、
    前記リスナプロパティは、前記印刷ジョブを要求する前記クライアントのセッション識別子およびセキュリティコンテキストを示すことを特徴とする請求項19に記載の方法。
  36. 前記共有リソースは、印刷ジョブを処理するプリンタと通信するプリンタドライバであり、
    前記通知は、前記プリンタは紙切れであることを示し、
    前記リスナプロパティは、前記印刷ジョブを要求する前記クライアントのセッション識別子およびセキュリティコンテキストを示すことを特徴とする請求項19に記載の方法。
  37. 前記リスナプロパティは、複数のクライアントから受信され、前記クライアントは、それぞれのリスナプロパティに関連付けられ、
    前記比較によって、前記通知は前記複数のクライアントのサブセットに転送されることを特徴とする請求項19に記載の方法。
  38. 前記共有リソースは、コンソールに関連するセッションのスプーラプロセスで実行される印刷コンポーネントであり、
    前記スプーラプロセスは、前記送信者プロパティを取得し、それを前記印刷コンポーネントに関連付け、前記スプーラプロセスは、前記リスナプロパティを取得し、それを前記クライアントに関連付け、
    前記印刷コンポーネントは、前記プリンタから、プリンタの状態変化を示すメッセージを受信し、
    前記印刷コンポーネントは、前記メッセージに応答して前記通知を生成し、
    前記スプーラは、前記比較を実施し、前記通知を転送することを特徴とする請求項37に記載の方法。
  39. 前記複数のクライアントは、ターミナルサーバ上で実行するターミナルセッションに関連付けられ、
    前記サブセットは、特定のセッションで実行される単一のクライアントであることを特徴とする請求項37に記載の方法。
  40. 前記共有リソースは、データベースであり、前記複数のクライアントは、前記データベースにアクセスするスレッドであることを特徴とする請求項37に記載の方法。
  41. ターミナルサーバ環境において、通知を処理する方法であって、
    ターミナルセッションで実行するクライアントから、前記ターミナルセッションに関する通知のための登録要求を受信すること、
    コンソールセッションで実行する共有リソースから、それに代って前記共有リソースが実行しているセッションに通知を送信するために要求を受信すること、および
    前記ターミナルセッションで実行する前記クライアントに、前記通知を転送することを含むことを特徴とする方法。
  42. 前記通知は、印刷状態を示すことを特徴とする請求項41に記載の方法。
  43. 前記通知は通知データを含み、
    前記クライアントで前記通知を受信したことに応答して、前記通知データに基づいて前記通知用のユーザインターフェース表示を生成することをさらに含むことを特徴とする請求項41に記載の方法。
  44. 前記転送は、前記クライアントについて登録されたターミナルセッション識別子と、前記共有リソースについて登録されたターミナルセッション識別子の比較に基づくことを特徴とする請求項41に記載の方法。
  45. 通知を処理するためのコンピュータベースのシステムサービスであって、
    1つまたは複数の送信者登録を作成する手段であって、前記送信者登録は、少なくとも識別コンテキストプロパティを含む手段と、
    1つまたは複数のリスナ登録を作成する手段であって、前記リスナ登録は、少なくとも識別コンテキストプロパティを含む手段と、および
    前記送信者登録のうち1つについての通知を受信したことに応答し、また前記通知に関連する前記送信者登録のプロパティに一致するプロパティを有するリスナに、前記通知を転送するために動作可能である手段とを含むことを特徴とするシステムサービス。
  46. 前記リスナ登録作成の手段は、リスナ登録の作成時に、前記リスナ登録について、同じセッションに関する通知が送信されることの表示を受信するために動作可能であることを特徴とする請求項45に記載のシステムサービス。
  47. 前記システムサービスは、前記リスナ登録を要求しているクライアントに関連するセッション識別子を、前記クライアント以外のソースから取得するために動作可能であることを特徴とする請求項46に記載のシステムサービス。
  48. 前記リスナ登録作成の手段は、リスナ登録の作成時に、前記リスナ登録について、同じユーザに関する通知が送信されることの表示を受信するために動作可能であることを特徴とする請求項45に記載のシステムサービス。
  49. 前記識別コンテキストプロパティは、セッション識別子を含むことを特徴とする請求項45に記載のシステムサービス。
  50. 前記識別コンテキストプロパティは、ユーザ識別子を含むことを特徴とする請求項45に記載のシステムサービス。
  51. 前記通知受信に応答する手段は、前記リスナ登録に関連する返信を取り扱うために動作可能であることを特徴とする請求項49に記載のシステムサービス。
  52. 前記送信者登録のうち少なくとも1つは、前記送信者登録に関連する通知のデータ形式を示す通知タイプをさらに含むことを特徴とする請求項49に記載のシステムサービス。
  53. 共有リソースについての通知を受信し、登録されたセッションに前記通知を転送するコンピュータ実施方法であって、
    あるセッションからある共有リソースに、サービス要求を、前記セッションに対応するセキュリティコンテキスト識別子およびセッション識別子とともに送信すること、
    前記セッションの偽装されたセキュリティコンテキストで前記共有リソースを実行すること、
    前記セキュリティコンテキスト識別子および前記セッション識別子を含むリスナプロパティを、前記セッションによって、通知インターフェースで登録すること、および
    前記セッションによって、前記通知インターフェースを介して、前記サービス要求の状態を示す通知を受信することを含むことを特徴とするコンピュータ実施方法。
  54. 方法を実施するための実施可能命令を含むコンピュータ読取り可能媒体であって、前記方法は、
    登録インターフェースを介して送信者登録の要求を受信すること、
    識別コンテキストプロパティを含む送信者プロパティを、送信者登録に関連付けること、
    前記送信者登録を求める前記要求に応答して、前記送信者登録に関するインターフェースへの参照を提供すること、
    登録インターフェースを介してリスナ登録要求を受信することであって、前記要求はコールバック関数を含むこと、
    セキュリティコンテキストプロパティを含むリスナプロパティを、リスナ登録に関連付けること、
    前記リスナ登録を求める前記要求に応答して、前記リスナ登録に関するインターフェースへの参照を提供すること、
    前記送信者登録に関する前記インターフェースを介して通知オブジェクトを受信すること、および
    前記リスナプロパティと前記送信者プロパティの間の一致を検出したときに、前記コールバック関数を用いて前記通知オブジェクトを転送することを含むことを特徴とするコンピュータ読取り可能媒体。
  55. 前記リスナ登録に関するインターフェースを介して返信通知オブジェクトを受信すること、および
    前記送信者に前記返信通知オブジェクトを転送することをさらに含むことを特徴とする請求項54に記載のコンピュータ読取り可能媒体。
  56. ターミナルサーバ環境において、複数のセッションに、プリンタ関連の通知をルーティングする方法であって、
    前記ターミナルサーバ環境において、新しいセッションが開始されたときに、前記セッションのセッション識別子を示す、前記セッションについてのリスナ登録を作成すること、
    印刷コンポーネントが呼び出される開始セッションの印刷ジョブを開始すること、
    前記印刷コンポーネントの呼び出しの責任を担うセッションのセッション識別子を判断すること、
    プリンタ関連の通知を生成するときに、前記プリンタ関連の通知を生成する前記印刷コンポーネントについての送信者登録を作成することであって、前記印刷コンポーネントは、コンソールセッションに関連付けられるが、前記送信者登録は、前記印刷コンポーネントの呼び出しの責任を担う前記開始セッションを示すこと、
    前記送信者登録を介して前記通知を送信すること、
    前記リスナ登録の前記セッション識別子と、前記送信者登録の前記セッション識別子を比較すること、
    前記リスナ登録の前記セッション識別子と、前記送信者登録の前記セッション識別子の間の一致を検出したときに、前記セッション識別子に関連するセッションに通知を転送することであって、前記セッションは前記開始セッションであること、および
    前記転送された通知を受信したときに、前記開始セッションのプリンタ操作に関連するメッセージを示すユーザインターフェースを表示することを含むことを特徴とする方法。
  57. チャネルを介した通知の送信に対処するアプリケーションプログラミングインターフェース(application programming interface)を実施するためのコンピュータ読取り可能命令を含む、1つまたは複数のコンピュータ読取り可能媒体であって、前記アプリケーションプログラミングインターフェースは、
    前記チャネルを介して通知を送信するためのメンバ関数であって、前記通知のための通知データを含むオブジェクトを指すポインタを受け付けるメンバ関数と、
    通知チャネルを閉じるためのメンバ関数であって、前記通知チャネルを閉じる理由を示すデータを含むオブジェクトを指すポインタを受け付けるメンバ関数と、
    前記チャネルがサポートする通知タイプに照会するためのメンバ関数であって、サポートされる通知タイプを示すオブジェクトがどこに格納されているかを示すポインタを受け付けるメンバ関数とを含むことを特徴とするコンピュータ読取り可能媒体。
JP2004050482A 2003-03-27 2004-02-25 共有リソースのための通知方法 Expired - Fee Related JP4638676B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/402,104 US7529823B2 (en) 2003-03-27 2003-03-27 Notifications for shared resources

Publications (2)

Publication Number Publication Date
JP2004310745A true JP2004310745A (ja) 2004-11-04
JP4638676B2 JP4638676B2 (ja) 2011-02-23

Family

ID=32825040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004050482A Expired - Fee Related JP4638676B2 (ja) 2003-03-27 2004-02-25 共有リソースのための通知方法

Country Status (7)

Country Link
US (1) US7529823B2 (ja)
EP (1) EP1463268B1 (ja)
JP (1) JP4638676B2 (ja)
KR (1) KR101066682B1 (ja)
CN (1) CN1591341B (ja)
AT (1) ATE364956T1 (ja)
DE (1) DE602004006902T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011513835A (ja) * 2008-02-25 2011-04-28 マイクロソフト コーポレーション 一貫性を有するシグナリング状態の変化
US8218166B2 (en) 2007-10-16 2012-07-10 Canon Kabushiki Kaisha Print processing system and print processing method

Families Citing this family (82)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7529823B2 (en) 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
US7508532B2 (en) * 2003-05-20 2009-03-24 Microsoft Corporation Method and system for sandboxing printer drivers
US7689986B2 (en) * 2003-10-21 2010-03-30 Gemstone Systems, Inc. Shared listeners in shared object space
US20050210129A1 (en) * 2004-03-19 2005-09-22 Microsoft Corporation Asynchronous channel for displaying user interface elements
US8115947B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for providing remote, descriptor-related data to an imaging device
US8006176B2 (en) 2004-10-08 2011-08-23 Sharp Laboratories Of America, Inc. Methods and systems for imaging-device-based form field management
US8120793B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for displaying content on an imaging device
US8060930B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential receipt and authentication
US8115945B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for imaging device job configuration management
US8120799B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for accessing remote, descriptor-related data at an imaging device
US8065384B2 (en) * 2004-10-08 2011-11-22 Sharp Laboratories Of America, Inc. Methods and systems for imaging device event notification subscription
US8237946B2 (en) 2004-10-08 2012-08-07 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting server redundancy
US8115946B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and sytems for imaging device job definition
US8115944B2 (en) 2004-10-08 2012-02-14 Sharp Laboratories Of America, Inc. Methods and systems for local configuration-based imaging device accounting
US8120798B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for providing access to remote, descriptor-related data at an imaging device
US8125666B2 (en) 2004-10-08 2012-02-28 Sharp Laboratories Of America, Inc. Methods and systems for imaging device document management
US8120797B2 (en) 2004-10-08 2012-02-21 Sharp Laboratories Of America, Inc. Methods and systems for transmitting content to an imaging device
US8384925B2 (en) 2004-10-08 2013-02-26 Sharp Laboratories Of America, Inc. Methods and systems for imaging device accounting data management
US8213034B2 (en) 2004-10-08 2012-07-03 Sharp Laboratories Of America, Inc. Methods and systems for providing remote file structure access on an imaging device
US8230328B2 (en) 2004-10-08 2012-07-24 Sharp Laboratories Of America, Inc. Methods and systems for distributing localized display elements to an imaging device
US7920101B2 (en) 2004-10-08 2011-04-05 Sharp Laboratories Of America, Inc. Methods and systems for imaging device display standardization
US8156424B2 (en) 2004-10-08 2012-04-10 Sharp Laboratories Of America, Inc. Methods and systems for imaging device dynamic document creation and organization
US8060921B2 (en) 2004-10-08 2011-11-15 Sharp Laboratories Of America, Inc. Methods and systems for imaging device credential authentication and communication
US8423602B2 (en) * 2004-10-13 2013-04-16 International Business Machines Corporation Web service broadcast engine
PT1844390E (pt) * 2005-01-31 2012-10-09 Cortado Ag Processo e disposição para imprimir através de um servidor de aplicação assim como um programa de computador correspondente e um meio de armazenamento legível por computador correspondente
JP4432798B2 (ja) * 2005-02-24 2010-03-17 セイコーエプソン株式会社 印刷システムおよびその管理方法
US8428484B2 (en) 2005-03-04 2013-04-23 Sharp Laboratories Of America, Inc. Methods and systems for peripheral accounting
US7546582B2 (en) * 2005-03-30 2009-06-09 International Business Machines Corporation Managing dynamic configuration data for producer components in a computer infrastructure
US20060277536A1 (en) * 2005-06-01 2006-12-07 Stein Michael V Non-visible remote control of console session
US20080045149A1 (en) * 2006-05-26 2008-02-21 Dinesh Dharmaraju Wireless architecture for a traditional wire-based protocol
US9198084B2 (en) * 2006-05-26 2015-11-24 Qualcomm Incorporated Wireless architecture for a traditional wire-based protocol
US8345272B2 (en) 2006-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Methods and systems for third-party control of remote imaging jobs
US20080184250A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Synchronizing Workflows
US20080183538A1 (en) * 2007-01-30 2008-07-31 Microsoft Corporation Allocating Resources to Tasks in Workflows
US8180658B2 (en) * 2007-01-30 2012-05-15 Microsoft Corporation Exploitation of workflow solution spaces to account for changes to resources
US7949741B2 (en) * 2007-02-20 2011-05-24 Microsoft Corporation Printer user interface redirection over a terminal services session
US20080228926A1 (en) * 2007-03-13 2008-09-18 Asher Shiratzky Methods, media, and systems for balancing session initiation protocol server load
KR101398908B1 (ko) * 2007-05-22 2014-05-26 삼성전자주식회사 모바일 아이피를 사용하는 이동 통신 시스템에서 단말의이동성 관리 방법 및 시스템
US8667144B2 (en) * 2007-07-25 2014-03-04 Qualcomm Incorporated Wireless architecture for traditional wire based protocol
US8838817B1 (en) 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US8856804B2 (en) * 2008-02-08 2014-10-07 Microsoft Corporation Performance indicator for measuring responsiveness of user interface applications to user input
US8566833B1 (en) * 2008-03-11 2013-10-22 Netapp, Inc. Combined network and application processing in a multiprocessing environment
US8811294B2 (en) * 2008-04-04 2014-08-19 Qualcomm Incorporated Apparatus and methods for establishing client-host associations within a wireless network
JP2010102612A (ja) * 2008-10-27 2010-05-06 Seiko Epson Corp デバイス状態通知装置
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US9398089B2 (en) * 2008-12-11 2016-07-19 Qualcomm Incorporated Dynamic resource sharing among multiple wireless devices
US8645324B2 (en) 2009-01-09 2014-02-04 Pivotal Software, Inc. Preventing pauses in algorithms requiring pre-image information concerning modifications during data replication
US9264248B2 (en) * 2009-07-02 2016-02-16 Qualcomm Incorporated System and method for avoiding and resolving conflicts in a wireless mobile display digital interface multicast environment
US8260960B2 (en) * 2009-07-23 2012-09-04 International Business Machines Corporation Supporting non-delivery notification between a switch and device in a network
US20110069339A1 (en) * 2009-09-21 2011-03-24 Canon Kabushiki Kaisha Network printing communication method and apparatus
EP2504772A4 (en) * 2009-11-23 2013-07-31 Hewlett Packard Development Co CONNECTION OF RESOURCES IN A COMMON COMPUTER ENVIRONMENT
US9582238B2 (en) * 2009-12-14 2017-02-28 Qualcomm Incorporated Decomposed multi-stream (DMS) techniques for video display systems
US20110239117A1 (en) * 2010-03-25 2011-09-29 Microsoft Corporation Natural User Interaction in Shared Resource Computing Environment
US20110239133A1 (en) * 2010-03-29 2011-09-29 Microsoft Corporation Shared resource computing collaboration sessions management
US8892628B2 (en) 2010-04-01 2014-11-18 Microsoft Corporation Administrative interface for managing shared resources
US20110258082A1 (en) * 2010-04-14 2011-10-20 Microsoft Corporation Application Store for Shared Resource Computing
US8539020B2 (en) 2010-06-14 2013-09-17 Microsoft Corporation Sessions to host processes with special requirements
US9787725B2 (en) 2011-01-21 2017-10-10 Qualcomm Incorporated User input back channel for wireless displays
US10135900B2 (en) 2011-01-21 2018-11-20 Qualcomm Incorporated User input back channel for wireless displays
US9582239B2 (en) 2011-01-21 2017-02-28 Qualcomm Incorporated User input back channel for wireless displays
US8964783B2 (en) 2011-01-21 2015-02-24 Qualcomm Incorporated User input back channel for wireless displays
US9065876B2 (en) 2011-01-21 2015-06-23 Qualcomm Incorporated User input back channel from a wireless sink device to a wireless source device for multi-touch gesture wireless displays
US9413803B2 (en) 2011-01-21 2016-08-09 Qualcomm Incorporated User input back channel for wireless displays
US8674957B2 (en) 2011-02-04 2014-03-18 Qualcomm Incorporated User input device for wireless back channel
US10108386B2 (en) 2011-02-04 2018-10-23 Qualcomm Incorporated Content provisioning for wireless back channel
US9503771B2 (en) 2011-02-04 2016-11-22 Qualcomm Incorporated Low latency wireless display for graphics
US9525998B2 (en) 2012-01-06 2016-12-20 Qualcomm Incorporated Wireless display with multiscreen service
US8990893B2 (en) * 2012-11-12 2015-03-24 International Business Machines Corporation Enterprise application session control and monitoring in a large distributed environment
US9100421B2 (en) 2012-11-12 2015-08-04 International Business Machines Corporation Enterprise application session control and monitoring in a large distributed environment
JP5966943B2 (ja) * 2013-01-23 2016-08-10 富士ゼロックス株式会社 プラグイン配信システム及び画像処理装置並びにプラグイン配信制御方法
JP6039506B2 (ja) * 2013-06-07 2016-12-07 株式会社ソニー・インタラクティブエンタテインメント 情報処理装置
US10223156B2 (en) 2013-06-09 2019-03-05 Apple Inc. Initiating background updates based on user activity
US11474767B1 (en) * 2014-05-28 2022-10-18 Amazon Technologies, Inc. Print from web services platform to local printer
US9432796B2 (en) 2014-05-30 2016-08-30 Apple Inc. Dynamic adjustment of mobile device based on peer event data
US9706518B2 (en) * 2014-05-30 2017-07-11 Apple Inc. Location based application feature notification
US9917760B2 (en) 2015-06-03 2018-03-13 International Business Machines Corporation Notifying original state listeners of events in a domain model
US10491708B2 (en) * 2015-06-05 2019-11-26 Apple Inc. Context notifications
CN105763601A (zh) * 2016-01-29 2016-07-13 北京小米移动软件有限公司 文件分享方法及装置
US10775956B2 (en) 2016-04-29 2020-09-15 Microsoft Technology Licensing, Llc Electronic data storage re-sharing notification
CN106649280B (zh) * 2017-02-13 2019-07-09 长沙军鸽软件有限公司 一种创建共享语料库的方法
JP2022528348A (ja) * 2019-04-01 2022-06-10 サイトリックス システムズ,インコーポレイテッド 統合アプリケーション通知フレームワーク
CN112749023A (zh) * 2019-10-30 2021-05-04 阿里巴巴集团控股有限公司 一种信息的处理方法、装置、设备及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0594390A (ja) * 1991-10-03 1993-04-16 Nec Corp 出力メツセージ制御方式
JPH08314858A (ja) * 1995-05-19 1996-11-29 Fujitsu Ltd 端末制御方法及びサービスプロセッサ
JPH09134298A (ja) * 1995-11-10 1997-05-20 Nec Corp コンソールメッセージ制御システム
JPH10228435A (ja) * 1997-02-13 1998-08-25 Fujitsu Ltd ゲートウエイ装置
JPH10336272A (ja) * 1997-05-29 1998-12-18 Mitsubishi Electric Corp データ通信システム及びデータ通信方法

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE430715B (sv) 1982-04-28 1983-12-05 Westinghouse Electric Corp Sett och inforande av sekundervatten genom ett inlopp till ett anggeneratorkerl
JPS5957337A (ja) 1982-06-04 1984-04-02 コンピユ−タ−ズ・インタ−ナシヨナル・インコ−ポレ−テツド ユニバ−サルコンピユ−タ−プリンタインタ−フエイス
JPS6123468A (ja) 1984-07-11 1986-01-31 Nippon Telegr & Teleph Corp <Ntt> 画像処理装置
JPS6391796A (ja) 1986-10-06 1988-04-22 シャープ株式会社 印字フオ−マツトの変更方式
US5220674A (en) 1987-07-17 1993-06-15 Digital Equipment Corporation Local area print server for requesting and storing required resource data and forwarding printer status message to selected destination
US4829468A (en) 1987-09-18 1989-05-09 Hitachi, Ltd. Print control system
US5014221A (en) 1988-01-29 1991-05-07 Digital Equipment Corporation Mechanism for arbitrating client access to a networked print server
US5047957A (en) 1988-10-21 1991-09-10 Minolta Camera Kabushiki Kaisha Printer controller
JP3168580B2 (ja) 1990-04-05 2001-05-21 セイコーエプソン株式会社 ページ記述言語インタープリタ
US5303336A (en) 1990-05-14 1994-04-12 Hitachi, Ltd. Printing system including print server
US5268993A (en) 1990-06-04 1993-12-07 Minolta Camera Kabushiki Kaisha Printer
US5388201A (en) 1990-09-14 1995-02-07 Hourvitz; Leonard Method and apparatus for providing multiple bit depth windows
JPH04227537A (ja) 1990-10-10 1992-08-17 Fuji Xerox Co Ltd プリンタおよびプリントジョブ制御装置
US5388200A (en) 1990-12-21 1995-02-07 Sun Microsystems, Inc. Method and apparatus for writing directly to a frame buffer
JP2661416B2 (ja) 1991-06-29 1997-10-08 ブラザー工業株式会社 印字システム
US5150454A (en) 1991-10-16 1992-09-22 Patrick Wood Printing system and method
US5353388A (en) 1991-10-17 1994-10-04 Ricoh Company, Ltd. System and method for document processing
US5299296A (en) 1991-10-17 1994-03-29 Ricoh Company, Ltd. Multi-function machine with interleaved job execution
US5287434A (en) 1991-10-28 1994-02-15 Monarch Marking Systems, Inc. Barcode identification system spooler
US5276799A (en) 1991-10-29 1994-01-04 Xerox Corporation Expandable electronic subsystem for a printing machine
US5388207A (en) 1991-11-25 1995-02-07 Industrial Technology Research Institute Architecutre for a window-based graphics system
US5222200A (en) 1992-01-08 1993-06-22 Lexmark International, Inc. Automatic printer data stream language determination
US5386503A (en) 1992-06-16 1995-01-31 Honeywell Inc. Method for controlling window displays in an open systems windows environment
US6667812B1 (en) 1992-06-19 2003-12-23 Canon Kabushiki Kaisha Information processing apparatus with device control language based program selection
US5577173A (en) 1992-07-10 1996-11-19 Microsoft Corporation System and method of printer banding
US5287194A (en) 1992-11-25 1994-02-15 Xerox Corporation Distributed printing
DE69326874T2 (de) 1992-12-10 2000-05-04 Matsushita Electric Ind Co Ltd Server und Klient
EP0674787B1 (en) 1992-12-18 2001-03-07 Hitachi Koki Imaging Solutions, Inc. Virtual printer
US5483653A (en) 1993-04-02 1996-01-09 Xerox Corporation Printing system with file specification parsing capability
US5625757A (en) 1993-12-24 1997-04-29 Hitachi, Ltd. Printing system
US5580177A (en) 1994-03-29 1996-12-03 Hewlett-Packard Company Printer/client network with centrally updated printer drivers and printer status monitoring
JP3448947B2 (ja) 1994-04-11 2003-09-22 株式会社日立製作所 リモート印刷システムおよびそのリモート印刷方法
US5559933A (en) 1994-04-22 1996-09-24 Unisys Corporation Distributed enterprise print controller
US5699495A (en) 1994-07-27 1997-12-16 Microsoft Corporation Point-and-print in a distributed environment
US5692111A (en) 1994-10-05 1997-11-25 Microsoft Corporation Automatic installation of printers in a distributed environment
US5602974A (en) 1994-10-05 1997-02-11 Microsoft Corporation Device independent spooling in a print architecture
US5905906A (en) * 1995-03-31 1999-05-18 Lexmark International, Inc. Method and apparatus for configuring multiple printers on a network
US5931909A (en) 1996-04-19 1999-08-03 Sun Microsystems, Inc. System for multiple-client software installation and upgrade
US5919247A (en) 1996-07-24 1999-07-06 Marimba, Inc. Method for the distribution of code and data updates
US5960167A (en) 1997-03-24 1999-09-28 Xerox Corporation Printer configuration system
US6125372A (en) 1997-10-03 2000-09-26 Hewlett-Packard Company Server system and method of updating server software
US5974454A (en) 1997-11-14 1999-10-26 Microsoft Corporation Method and system for installing and updating program module components
US5995723A (en) 1997-11-18 1999-11-30 Xerox Corporation Client subsystem for changing document/job attributes in a network printing system
US6031623A (en) 1997-12-11 2000-02-29 Hewlett-Packard Company Computer system with evolving printer
JP3873427B2 (ja) 1998-01-30 2007-01-24 ブラザー工業株式会社 プリンタ制御システムにおける中間ファイルの加工装置及びその制御プログラムが記録された記録媒体
JP4298034B2 (ja) 1998-03-05 2009-07-15 キヤノン株式会社 印刷システム、印刷管理装置、情報処理装置、およびそれらの制御方法、記憶媒体
NL1008659C2 (nl) 1998-03-20 1999-09-21 Oce Tech Bv Statuspresentatie van printers in een informatieverwerkings-systeem.
US6301012B1 (en) 1998-04-24 2001-10-09 Hewlett-Packard Company Automatic configuration of a network printer
US6289385B1 (en) 1998-06-05 2001-09-11 I2 Technologies, Inc. Computer workspace providing event management based on a permissibility framework
US6694354B1 (en) 1998-11-30 2004-02-17 Telefonaktiebolaget Lm Ericsson (Publ) Host computer access to peripheral device drivers
US6424424B1 (en) 1999-01-19 2002-07-23 Hewlett-Packard Company Method and apparatus for automatic installation of shared printers over a network
US6678068B1 (en) * 1999-03-11 2004-01-13 Electronics For Imaging, Inc. Client print server link for output peripheral device
US7130068B1 (en) 1999-10-05 2006-10-31 Canon Kabushiki Kaisha Print server apparatus, information processing apparatus, print job reservation management method, reservation job generation method and memory medium
US7213054B2 (en) 1999-12-15 2007-05-01 Microsoft Corporation Methods and apparatuses for handling single-user applications in multi-user computing environments
US6788429B1 (en) * 2000-04-14 2004-09-07 Hewlett-Packard Development Company, Lp. Remote print queue management
US6814510B1 (en) 2000-08-02 2004-11-09 Xerox Corporation Method and apparatus for automatic update of a printer driver configuration and status
CA2315270A1 (en) 2000-08-04 2002-02-04 Charon Systems Inc. Printer driver system for remote printing
US6711557B1 (en) * 2000-08-14 2004-03-23 Adobe Systems Incorporated Client-based background update monitoring
US6931447B1 (en) * 2000-09-27 2005-08-16 Hewlett-Packard Development Company, L.P. Remote hard copy apparatus control including firewall penetrating protocols
US7095518B1 (en) 2000-10-16 2006-08-22 Electronics For Imaging, Inc. Spooling server apparatus and methods for receiving, storing, and forwarding a print job over a network
EP1205843A3 (en) * 2000-11-13 2004-10-20 Canon Kabushiki Kaisha User interfaces
US7265819B2 (en) * 2000-11-30 2007-09-04 Hewlett-Packard Development Company, L.P. System and method for print system monitoring
US7207041B2 (en) * 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
JP3888452B2 (ja) * 2001-07-02 2007-03-07 セイコーエプソン株式会社 ネットワークを介した印刷方法
US7170625B2 (en) 2001-07-31 2007-01-30 Matsushita Electric Industrial Co., Ltd. Printer system and printing data notification method
JP3800320B2 (ja) 2001-08-01 2006-07-26 セイコーエプソン株式会社 プリントシステム及びプリント業務を監視するサーバ
US7089259B1 (en) * 2001-08-03 2006-08-08 Mcafee, Inc. System and method for providing a framework for network appliance management in a distributed computing environment
US7327482B2 (en) 2002-10-15 2008-02-05 Sharp Laboratories Of America, Inc. Integrated printer monitoring
US7233404B2 (en) 2002-10-29 2007-06-19 International Business Machines Corporation System for processing print jobs
US20040143651A1 (en) * 2003-01-21 2004-07-22 Allen Kram H. System and method for distributing configuration changes made to a printing device
US7529823B2 (en) 2003-03-27 2009-05-05 Microsoft Corporation Notifications for shared resources
JP2005071175A (ja) 2003-08-26 2005-03-17 Ricoh Co Ltd 印刷データ生成方法、その方法をコンピュータに実行させるプログラム、クライアント端末、プリンタサーバ、印刷データ生成装置および画像形成装置
JP2005165634A (ja) 2003-12-02 2005-06-23 Canon Inc 印刷システムおよび進捗表示処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム
US20050179936A1 (en) 2004-02-13 2005-08-18 Microsoft Corporation Scalable print spooler
US20050210129A1 (en) 2004-03-19 2005-09-22 Microsoft Corporation Asynchronous channel for displaying user interface elements

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0594390A (ja) * 1991-10-03 1993-04-16 Nec Corp 出力メツセージ制御方式
JPH08314858A (ja) * 1995-05-19 1996-11-29 Fujitsu Ltd 端末制御方法及びサービスプロセッサ
JPH09134298A (ja) * 1995-11-10 1997-05-20 Nec Corp コンソールメッセージ制御システム
JPH10228435A (ja) * 1997-02-13 1998-08-25 Fujitsu Ltd ゲートウエイ装置
JPH10336272A (ja) * 1997-05-29 1998-12-18 Mitsubishi Electric Corp データ通信システム及びデータ通信方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8218166B2 (en) 2007-10-16 2012-07-10 Canon Kabushiki Kaisha Print processing system and print processing method
JP2011513835A (ja) * 2008-02-25 2011-04-28 マイクロソフト コーポレーション 一貫性を有するシグナリング状態の変化

Also Published As

Publication number Publication date
KR20040086543A (ko) 2004-10-11
JP4638676B2 (ja) 2011-02-23
EP1463268A2 (en) 2004-09-29
EP1463268B1 (en) 2007-06-13
KR101066682B1 (ko) 2011-09-21
CN1591341B (zh) 2010-05-26
CN1591341A (zh) 2005-03-09
ATE364956T1 (de) 2007-07-15
EP1463268A3 (en) 2005-01-26
DE602004006902D1 (de) 2007-07-26
US7529823B2 (en) 2009-05-05
DE602004006902T2 (de) 2008-02-14
US20040193678A1 (en) 2004-09-30

Similar Documents

Publication Publication Date Title
JP4638676B2 (ja) 共有リソースのための通知方法
JP4965574B2 (ja) 複数のプロセスにおけるポートの共有
US7987278B2 (en) Web services device profile on a multi-service device: dynamic addition of services
JP3853592B2 (ja) 分散ウェブアプリケーションサーバ
JP4566273B2 (ja) 高速短待ち時間データ通信環境において冗長メッセージ・ストリームを使用する高信頼性メッセージングのための方法
EP2622484B1 (en) Debugger launch and attach on compute clusters
US9003428B2 (en) Computer data communications in a high speed, low latency data communications environment
US20070233869A1 (en) Restricting device access per session
EP3138007B1 (en) Cross-domain data sharing with permission control
US10313448B2 (en) Employing an auxiliary device to implement USB device redirection
US10223321B2 (en) Combining redirected USB interfaces into a single composite device
US8737262B2 (en) Zero copy transmission with raw packets
US7716290B2 (en) Send by reference in a customizable, tag-based protocol
US20180234517A1 (en) Redirecting scanners and printers over a wan
US10757182B2 (en) Contextually interacting with applications
JPWO2015049825A1 (ja) 端末認証登録システム、端末認証登録方法およびプログラム
US10635816B2 (en) Restricting reprogramming of a redirected USB device
US7873647B2 (en) Web services device profile on a multi-service device: device and facility manager
US8112766B2 (en) Multi-threaded device and facility manager
US10742776B1 (en) Accelerating isochronous endpoints of redirected USB devices
WO2017166166A1 (en) System and method for providing runtime tracing for web-based client accessing transactional middleware platform using extension interface
WO2010001797A1 (ja) 情報処理システム、プログラム、データ中継方法
JP5736346B2 (ja) 仮想化装置、仮想化制御方法、仮想化装置制御プログラム
EP1936922B1 (en) Discovery and addition of services in a multi-service device
JP2006268794A (ja) 画像処理装置及び方法並びに情報処理システム及び装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070226

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100216

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100517

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100520

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100616

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100621

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100716

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: 20101119

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: 20101126

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

Free format text: PAYMENT UNTIL: 20131203

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4638676

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees