"サーバにおけるコンピュータ読み取り可能媒体上に具体化したサーバオペレーティングシステムであって、該システムが、前記サーバが複数のクライアントのそれぞれに対し1つのウィンドウ処理環境を提供するようになった多数のクライアント-サーバセッションを可能にし、前記サーバオペレーティングシステムが、前記サーバにリモートクライアントを介して接続している第1のユーザが、該第1ユーザが先に開始した先のウィンドウ処理セッションと関連している場合、これを認識するため、サーバを指揮する第1のコンピュータ読み取り可能命令と、前記第1ユーザを前記先のウィンドウ処理セッションに再関連させるため、前記サーバを指揮する第2のコンピュータ読み取り可能命令と、を含み、前記第1コンピュータ読み取り可能命令は、さらに、前記サーバに同じ前記リモートクライアントを介して接続している第2のユーザが、該第2ユーザが先に開始した先のウィンドウ処理セッションと関連している場合、これを認識するため、サーバを指揮し、前記第2コンピュータ読み取り可能命令は、さらに、前記第2ユーザを前記先のウィンドウ処理セッションに再関連させるため、前記サーバを指揮すること、を特徴とするサーバオペレーティングシステム。サーバコンピュータにおいて、コンピュータ読み取り可能媒体上に具体化されかつサーバにおいて実行されるオペレーティングシステムであって、多数のクライアントに対し多数のグラフィカルユーザインターフェースウィンドウ処理セッションを可能にする、前記オペレーティングシステムを含み、前記オペレーティングシステムは前記ウィンドウ処理セッションに対しグラフィカルユーザインターフェースUIを走らせるクライアントと通信するように構成されていること、及び前記オペレーティングシステムは、多数のユーザが、前記クライアントを用いてこれらユーザ自身の対応するウィンドウ処理セッションを操作できるように、前記ウィンドウ処理セッションの種々のものと前記クライアントへの又はからの通信と関連させるように構成されていること、を特徴とするサーバコンピュータ。請求項2記載のサーバコンピュータにおいて、前記クライアントは、前記サーバに接続することができるオペレーティングシステムを備えて実現したクライアント上で走るように構成したこと、を特徴とするサーバコンピュータ。したがって、この問題を克服しそしてこのユーザのニーズによりうまく対処できるようにサーバオペレーティングシステムを改良する必要がある。発明の摘要本発明は、多数のクライアント-サーバセッションをサポートしそしてユーザがあるセッションを開始し、そしてその後に、ユーザが2つの異なったクライアントを用いる場合でもそのセッションにダイナミックに再接続できるようにするサーバオペレーティングシステムに関係している。1つの実現例によれば、オペレーティングシステムは、サーバ上における多数のクライアント-サーバセッションを可能にするマルチユーザセッションマネージャを有する。さらに、このオペレーティングシステムは、1つ以上のプロトコルスタックを管理するマルチユーザスタックプロトコルマネージャとを有し、各プロトコルスタックは、クライアント-サーバセッションの間に、対応するクライアントとの通信を容易にする。ユーザがサーバに対し第1のクライアントを介して接続したとき、スタックプロトコルマネージャは、この第1のクライアント-サーバ接続に対し第1のプロトコルスタックを割り当てる。次に、該セッションマネージャは、そのユーザに対する第1のセッションを作成する。記述する実現例においては、前記セッションは、リモートクライアント上でウィンドウ処理グラフィカルユーザインターフェース環境をサポートするウィンドウ処理セッションである。このセッションは、1つのウィンドウ処理セッション環境をサポートする種々のソフトウェアモジュールから成り、そしてキーボードドライバ、ディスプレイドライバ、プロトコルドライバのような種々のハードウェアドライバを含む。第1のセッションにおいて用いるこれらドライバは、第1のクライアントのシステムコンフィギュレーションに合うように選択する。しばらくして後、このユーザが、第1のセッションを止め、そして第1のクライアントをサーバから切断する。サーバは、ユーザのこのセッションをサーバにおいて保持し、これにより、このユーザが後でこれに戻ることができるようにする。しかし、ユーザが第1コンピュータをサーバから切断する前にこのセッションを明らかに終了させた場合、このセッションを終わらせることができる。後の時点で、ユーザがサーバに第2のクライアントを使って再接続する。この第2クライアントは、第1クライアントのものとは異なったシステムコンフィギュレーションを有する。1例のシナリオとして、ユーザは、最初にユーザの職場のデスクトップコンピュータを介してそして後で、ユーザの家庭のラップトップコンピュータを介して、サーバにログオンすることがある。第2クライアントは、サーバに対し第2のクライアント-サーバ接続を介して接続し、そしてスタックマネージャは、第2のプロトコルスタックを第2のクライアント-サーバ接続に割り当てる。このセッションマネージャは、次に、このユーザに対し新たな第2のセッションの作成を開始する。しかし、このプロセスの間、セッションマネージャは、このユーザが第1セッションに関係があることを認識する。セッションマネージャは、第1セッションを、第2クライアントのシステムコンフィギュレーションに合うように適合させる。すなわち、第1セッションは、1つ以上のコンフィギュレーションパラメータから成る新たなセットで再構成することによって、第2クライアントの異なったシステムコンフィギュレーションをサポートする。次に、セッションマネージャは、第2プロトコルスタックをその再構成した第1セッションと再関連させ、これにより、たとえユーザが異なったクライアントからログオンしたときでも、ユーザがこのユーザの元のセッションに戻れるようにする。この適合は、サーバにおいてのみ生起し、したがってユーザには不可視である。この結果、ユーザは、単に同じセッションを見るに過ぎない。例えば、変更したディスプレイドライバの場合には、ユーザは、同じセッションを、第2クライアントのディスプレイに対し再フォーマットしているものであるが、それを見ることになる。本発明の別の面は、ダイナミック再関連を使用して、サーバに対し単一のクライアントコンピュータから接続する多数のユーザを収容することに関係している。この状況の1例として、2人の銀行金銭出納係が同時に単一のコンピュータを使用することが一般的である。この場合、サーバは、異なったユーザがサーバに対し同じクライアントを介してログオンするとき検出する。この検出時に、サーバは、このクライアント-サーバ接続を取り扱うプロトコルスタックを、現在のユーザと関係があるセッションに再関連させる。このようにして、サーバは、同じコンピュータを使用する多数のユーザをサポートすることができる。好ましい実施形態の詳細な説明図面においては、同じコンポーネントおよび特徴に対しては同じ参照番号を用いる。図1は、クライアント-サーバコンピュータシステム20を示しており、これは、サーバコンピュータ22を備え、これは、多数のクライアント241-245に対しネットワーク26を介して接続している。クライアント-サーバコンピュータシステム20は、モデムを介するダイレクトダイアルアップ、企業LANローカルエリアネットワーク、WANワイドエリアネットワークおよびインターネットを含む多くの異なったアーキテクチャを代表するものである。ネットワーク26は、多くの方法で実現して、有線ベースに技術、無線技術の両方を含む、そのようなネットワーキングコンテキストをサポートすることができる。本発明の種々の面は、1つの特定のネットワークアーキテクチャあるいはネットワーク技術に限定されるものではない。サーバ22は、好ましくはWindows登録商標NTサーバとして実現し、これは、ウィンドウ処理ユーザインターフェース環境をサポートする。サーバ22は、説明の都合上このコンテキストで説明する。サーバ22のより詳細な説明は、図2を参照して以下で行う。しかし、分かるように、サーバ22は、Windows登録商標NT以外のオペレーティングシステムを使って実現することもできる。クライアント241-245は、サーバ22にネットワーク26を介して接続することがある種々の種類のコンピュータを表している。クライアント241は、在来のデスクトップパーソナルコンピュータPCであり、これは、ローカルのオペレーティングシステムと、処理ユニットと、そしてストレージシステムとを所有している。1つの例として、デスクトップクライアント241は、Windows登録商標95またはWindows登録商標98のような、マイクロソフト社からのWindows登録商標ブランドのオペレーティングシステムを実装した汎用PCである。デスクトップクライアント241は、スタンドアロンのコンピュータであって、これは、主として、サーバとインターフェースすることにより、ローカルに格納されていないファイルまたは他の情報にアクセスする。クライアント242は、ポータブルのラップトップコンピュータとして示しており、これは、ネットワーク26に対し、在来のネットワークカードまたはダイアルアップモデム接続を介して接続することができる。このラップトップコンピュータ242もまた、完全な装備をもつスタンドアロンのコンピュータであって、それ自身のオペレーティングシステム、処理ユニットおよびストレージシステムを有するように構成することができる。このラップトップコンピュータ242も同様に、Windows登録商標95またはWindows登録商標98のようなWindows登録商標ブランドのオペレーティングシステムを走らせるように構成することができる。クライアント243は、ハンドヘルドのPCであり、これは、一般に汎用コンピュータよりも少ない機能しか備えていない。しかし、ハンドヘルドPC243は、好ましくは、マイクロソフト社からのWindows登録商標CEのようなWindows登録商標ブランドのオペレーティングシステムを装備している。クライアント244は、端末コンピュータであり、これは、最小のローカル処理でしかもローカルメモリがほとんどない低コストのマシンである。この端末コンピュータは、ディスプレイと、キーボードと、マウスオプションと、そしてサーバに接続するのに十分なインテリジェンスとを備えている。全てのアプリケーションはサーバにおいて走り、そしてこの端末は、単に、サーバベースの処理に対する接続ポイントを提供するだけである。クライアント245は、ネットワークコンピュータNetworkComputer又はNCまたはNetPCのようなネットワーク中心のコンピュータnetworkcentriccomputerを表している。このネットワーク中心コンピュータクライアント245は、主として、サーバベースのアプリケーションの実行を容易にするが、Windows登録商標ベースのあるいはJava登録商標ベースのアプリケーションを走らせるため、ある程度の限られた処理能力しか有していない。サーバコンピュータ図2は、サーバコンピュータ22の例示的実現例を示しており、これは、Windows登録商標NTオペレーティングシステムを装備して構成した汎用コンピュータとして実現している。サーバ22は、処理ユニットCPU32、システムメモリ34、およびシステムメモリ34から処理ユニット32までを含む種々のシステムコンポーネントを結合するシステムバス36を含む。システムバス36は、種々のバスアーキテクチャのいずれかとして実現することができ、これは、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含む、種々のバスアーキテクチャの内の任意のものを使用する。システムメモリ34は、リードオンリメモリROM38、およびランダムアクセスメモリRAM40を含む。基本入出力システム42BIOSは、ROM38に格納してある。サーバ22は、ハードディスクまたはハードディスクアレイの読み取りおよび書き込みを行うハードディスクドライブ44、リムーバブル磁気ディスク48の読み取りおよび書き込みを行う磁気ディスクドライブ46、並びにCD-ROMまたはその他の光媒体のようなリムーバブル光ディスク52の読み取りおよび書き込みを行う光ディスクドライブ50、の内の1つ以上を有する。ハードディスクドライブ44、磁気ディスクドライブ46、および光ディスクドライブ50は、ハードディスクドライブインターフェース54、磁気ディスクドライブインターフェース56、および光ドライブインターフェース58によって、それぞれシステムバス36に接続してある。これらのドライブおよびそれに関連するコンピュータ読み取り可能媒体は、コンピュータ読み取り可能の命令、データ構造、プログラムモジュール、およびサーバ22用のその他のデータの不揮発性記憶を行う。ハードディスク、リムーバブル磁気ディスク48およびリムーバブル光ディスク52について記述したが、データを格納するのに他のタイプのコンピュータ読み取り可能媒体を使用することができる。このような他の媒体は、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリRAM、リードオンリメモリROM等を含む。さらに、サーバ22は、RAID独立ディスクの冗長アレイストレージシステムのような独立のストレージシステム上に格納したデータを供給するように構成することもできる。多数のプログラムモジュールは、ハードディスク、磁気ディスク48、光ディスク52、ROM38またはRAM40上に格納することができる。これらプログラムは、サーバオペレーティングシステム60、1つ以上のアプリケーションプログラム62、その他のプログラムモジュール64、およびプログラムデータ66を含む。ユーザは、キーボード68およびマウス70のような入力デバイスによって、コマンドおよび情報をサーバ22に入力することができる。他の入力デバイス図示せずとして、マイクロフォン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナ等を含むことができる。これらおよびその他の入力デバイスは、多くの場合、システムバス36に結合したシリアルポートインターフェース72を介して、処理ユニット32に接続しているが、代替的には、パラレルポート、ゲームポートまたはユニバーサルシリアルバスUSBのようなその他のインターフェースによって接続することもできる。モニタ74または別のタイプのディスプレイデバイスも、ビデオアダプタ76のようなインターフェースを介して、システムバス36に接続する。サーバコンピュータ22は、T1またはT3のインターネット接続のような、ネットワーク26を介する通信を確立するため、ネットワークインターフェースまたはアダプタ78,モデム79または他の手段を有する。モデム79は、クライアントからダイアルアップ接続を容易にする。概略のソフトウェアアーキテクチャコンピュータシステム20は、クライアント241-245がサーバ22上でWindows登録商標ブランドのオペレーティングシステム並びにアプリケーションを走らせることができるようにするソフトウェアアーキテクチャを実装している。このソフトウェアアーキテクチャは、サーバベースのマルチクライアントコア、クライアントベースのモジュール、およびサーバとクライアントとの間の通信を可能にするリモートプロトコルを備えている。サーバベースのマルチクライアントコアは、サーバが、多数の同時のクライアントセッションをホストhostすることができるようにする。マルチクライアントコアは、オペレーティングシステム60の1部分として常駐し、そしてプロセッサ32上で実行する。このマルチクライアントコアは、ウィンドウ処理イネーブル式のクライアントすなわち、デスクトップクライアント241、ラップトップクライアント242、ハンドヘルドPCクライアント243のような、ローカルのウィンドウ処理オペレーティングシステムを走らせることができるクライアント、並びに非ウィンドウ処理クライアントすなわち、端末クライアント244およびネットワーク中心クライアント245のような、ローカルのウィンドウ処理オペレーティングシステムを走らせることができないクライアントとの双方をサポートする。このマルチクライアントサーバコアは、それらクライアントの内の任意のものが、サーバにログインしウィンドウ処理セッションをサーバにて走らせることができるようにする。1実施形態においては、マルチクライアントサーバコアは、シトリックスWinFrame技術を実装し、これは、Windows登録商標NTサーバオペレーティングシステムを拡張することにより、多数のクライアントに対し多数のウィンドウ処理環境をサポートする。WinFrame技術は、図3および図4を参照して以下に詳述する、クライアント-サーバウィンドウ処理セッションを複製する手段を提供する。しかし、マルチクライアントサーバコアは、その基本のWinFrame技術を超えるものであって、サーバにおけるウィンドウ処理セッションを維持し、かつユーザが異なったクライアントを使って再接続したときでもユーザをダイナミックにそれらのセッションに再接続する手段を提供する。このクライアントベースのモジュールは、クライアントのメモリ内に常駐し、そしてクライアントの処理ユニット上で実行する。このクライアントベースモジュールは、グラフィカルのウィンドウ処理ユーザインターフェースUIを走らせるコードを含んでいる。このコードは、端末、ネットワーク中心コンピュータ、Windows登録商標イネーブル式コンピュータWindows登録商標enabledcomputers、UNIX登録商標ベースのコンピュータ、DOSベースのコンピュータを含む、広範なハードウェア上で走ることができる。ユーザに対しては、クライアントは、ウィンドウ処理オペレーティングシステムのローカルバージョンを走らせているかのように見えるが、ただしこのオペレーティングシステムの機能は全てサーバにおいて発生している。本ソフトウェアアーキテクチャのプロトコルコンポーネントは、クライアントが、ネットワークに接続するのを可能にし、そしてウィンドウ処理UIをユーザに対し提示する。システム20において使用できる1つの適当なプロトコルは、MSリモートデスクトッププロトコルMSRemoteDesktopProtocolであり、これは、T128T120プロトコル国際標準マルチチャンネル会議プロトコルの高度にスケーラブルな派生物である。T128T120は、周知のプロトコルであり、したがって詳細な説明はしない。T128T120に関する更なる情報については、読者は、国際電気通信連合ITUからのT128T120標準を参照されたい。尚、これは、言及により本文に含めるものとする。従来技術のクライアント-サーバシステムとは対照的に、コンピュータシステム20は、特定のクライアントコンピュータをサポートするのではなく、ユーザのニーズをサービスするものとしてサーバネットワークのビューを行うように適合させてある。この概念シフトは、コンピュータシステム20が、どのクライアント24をユーザがサーバ22をアクセスするのに用いていようともそのユーザをサポートすることを意味している。従来技術のクライアント-サーバシステムは、代表的には、マシン中心の見方を強調したものであり、各々の接続を、特定のクライアントコンフィギュレーションのニーズに関して扱う。この二分法の1例として、背景部分で示したシナリオでは、職場のクライアントコンピュータからサーバにログオンしたユーザが、セッションを開始し、そしてこのセッションをこれを終了させずに止め、そして後で家庭のコンピュータからログオンする場合を記述している。従来技術のアーキテクチャでは、サーバは、各クライアントに対し新たなセッションを作成するが、それは、これらが、異なったシステムコンフィギュレーションをもつ2つの異なったクライアントから生じたものだからである。ユーザが第1のクライアントからログオンしたとき、サーバは、この特定のクライアントコンピュータをサポートするのに特有のディスプレイドライバ、キーボードドライバ等を利用するセッションを作成する。サーバはまた、このクライアントコンピュータと通信するのに適した1つのタイプのプロトコルを使用することになる。ユーザが第2のクライアントからログオンしたとき、サーバは、この第2のクライアントコンピュータをサポートするのに特有の、異なったディスプレイドライバ、キーボードドライバ等をロードする別のセッションを作成する。サーバはまた、異なったタイプの通信プロトコルを用いることもできる。こうして、サーバは、同じユーザがこのユーザがサーバに接続するマシンに無関係に同じセッションを続行したい場合でも、マシン依存性のセッションを作成する。この従来技術は、マシン中心のアーキテクチャを表している。一方、コンピュータシステム20は、ユーザ中心のものである。上記のシナリオにおいて、コンピュータシステム20は、ユーザがサーバに対し1つのクライアントから接続し、セッションを開始そしてこれを終了せずに停止し、そして後でこの同じセッションに異なったクライアントから戻るのを可能にする。サーバは、この新たなクライアントに対し新たなセッションを作成することはせず、むしろ、元のセッションを、第2のクライアントをサポートするため適当なドライバ、プロトコルおよびコンフィギュレーションパラメータと適合させる。例えば、ユーザが最初に、1024x768の解像度の大きな20′′VGAディスプレイをもつ職場のコンピュータからログオンするとする。サーバは、1024x768の解像度の20′′VGAディスプレイをサービスする適当なディスプレイドライバでウィンドウ処理セッションを確立する。ユーザがその後でユーザ自身の640x480の解像度の11′′ディスプレイをもつラップトップコンピュータからログオンするとき、サーバは、新たなセッションの確立を開始する。しかし、このセッション開始プロセスの間において、サーバは、このユーザが以前のセッションと関係があったことを認識する。このとき、サーバは、640x480の解像度の11′′ディスプレイに適した新たなディスプレイドライバを用いるように以前のセッションを変更する。次に、サーバは、このユーザを、その以前のセッションに自動的に再関連させる。進行中の作業は、ダイナミックにその新たな11′′ディスプレイにリサイズし、そしてユーザは、このユーザが職場のコンピュータでの作業を止めた所から続行することができる。サーバオペレーティングシステム60は、ユーザが異なった動作特性をもつ異なったマシンからログオンする場合でも、ユーザをそれらのそれぞれのセッションに対し有利に再関連させることができるようにする。この再関連プロセスは、完全にサーバにて生じ、サーバは自動的にクライアントに適合する。このプロセスは、ユーザとクライアントコンピュータからは見えない。サーバオペレーティングシステムを実装する1つの好ましい方法は、図3ないし図6を参照して以下に説明する。この説明に続き、本発明の別の面について説明するが、これは、単一のクライアントマシンからのサーバにおいて走っている多数のウィンドウ処理セッション間でのスイッチングを含んでいる。サーバベースのダイナミック再関連本発明の1つの面は、ユーザを、彼らのそれぞれのウィンドウ処理セッションに再関連させ、そしてこれらウィンドウ処理セッションを自動的に調節することによって任意の新たなクライアントシステムコンフィギュレーションに対処することに関している。このダイナミック再関連は、完全にサーバにおいて起きるものである。図3は、サーバオペレーティングシステム60の1部分を示しており、これは、多数のウィンドウ処理セッションを形成するためウィンドウ処理モジュールの複製を可能にするマルチクライアントコアを含んでいる。オペレーティングシステム60は、特権プロセッサモードで走るコードこれはカーネルモードとも呼ぶと、非特権プロセッサモード一般にユーザモードと呼ぶで走るアプリケーションまたはその他のサービスルーチンとを含む。オペレーティングシステム60は、ユーザモードで実施するマルチユーザセッションマネージャ90を含んでいる。このマルチユーザセッションマネージャ90は、クライアントによる使用のためサーバ上に常駐する多数のクライアント-サーバウィンドウ処理セッションの作成を可能にする。さらに、オペレーティングシステム60は、カーネルモードで実施しそしてセッションマネージャ90と緊密にインターフェースするプロトコルスタックマネージャ92を含む。マルチユーザセッションマネージャの指揮の下、プロトコルスタックマネージャ92は、図3においてプロトコルスタック94により表すように、1つ以上のプロトコルスタックを作成しそして管理することにより、クライアント-サーバウィンドウ処理セッションの間において対応する外部クライアントとの通信を容易にする。これらプロトコルスタックは、ある種のタイプの通信プロトコルにしたがって実現し、例えば、TCPIPトランスポート上のRDP、IPX上のRDP、非同期シリアル接続モデムのトップ上のRDP等である。セッションマネージャ90とプロトコルスタックマネージャ92の1つの例示的な実現例は、シトリックスシステムズ社からのインテリジェントコンソールアーキテクチャICA:IntelligentConsoleArchitectureを使用することである。このシトリックスICAは、Windows登録商標NTサーバオペレーティングシステムを拡張して、接続したクライアントに対し多数のウィンドウ処理セッションを提供する。説明の都合上、ここで、クライアント241がサーバベースのウィンドウ処理セッションを走らせたいとする。クライアント241は、Windows登録商標イネーブル式のデスクトップコンピュータとして示している。しかし、他のタイプのクライアントも使用でき、これには、端末クライアント、ネットワーク中心クライアントが含まれる。クライアント241は、接続要求を周知の接続ポートに対し送る。サーバオペレーティングシステム60は、オブジェクト96で表すように、この接続要求を受け入れそして通信ポートを作成する。この通信ポート96は、このクライアントに対し、サーバにメッセージまたはコールバックcallbackを送るハンドルを提供する。マルチユーザセッションマネージャ90は、新たな転送スレッドを作成しそして起動して、この新たなクライアント要求にサービスする。サーバオペレーティングシステム60、すなわちプロトコルスタックマネージャ92は、プロトコルスタック94を通信ポート96に割り当てる。このプロトコルスタックは、次に、接続クエリモードに入り、ここで、キーボードレイアウト/ロケール、希望のビデオ解像度等のようなクライアント能力とサーバ能力とを、その後に交換する。プロトコルスタック94は、最初は、通信エンドポイントをもつコンテナである。活性化の間、このスタックコンテナには、少なくとも2つのドライバ、すなわち、WinStationドライバWDとトランスポートドライバTDをロードする。トランスポートドライバは、より低いレベルのドライバであって、この接続を行うのに使用する通信トランスポートを介してデータの転送を容易にするものであり、これによりトランスポート独立性を提供する。さらに、プロトコルドライバPDを、WDとTDとの間にレイヤとして置くことにより、圧縮、信頼性のあるデータフロー、暗号化、フレーム化のような追加のフィーチャを提供することもできる。1例として、WinStation、プロトコルおよびトランスポートの各ドライバは、圧縮形TCPIPトランスポートを介するRDPデータストリームを取り扱うために実装することもできる。WinStationドライバは、サーバ上で作成されている最中のウィンドウ処理セッションに対するリモートアクセスを提供する。このWinStationドライバは、カーネルモードドライバSYSとして実装し、これには、リモートマウス、キーボード、キャラクタモードディスプレイコマンド、および1つの仮想チャンネル集合に対するアクセスを提供する。このクライアントとの接続を確立しそしてウィンドウ処理セッションに対するクライアント要求を受け取った後、オペレーティングシステム60は、1つのウィンドウ処理セッションを作成し、これは、図3ではセッション1として示している。シトリックスWinFrame技術においては、このウィンドウ処理セッションには、クライアント-サーバルーチンCSRSSEXEを走らせることが関係し、これは、一般にCSRSSモジュール98と呼ぶ。このオペレーティングシステムのWindows登録商標NT3xバージョンにおいては、CSRSSモジュール98は、USER,CONSOLE,GDIおよび他のサポートルーチンに対しマイクロソフトが書いたコードの全てを含む。加えて、モジュール98は、ハードウェアディスプレイに対するハードウェアデバイスドライバ、このハードウェアディスプレイに対するGDIインターフェースGDIドライバ、マウスドライバ、キーボードドライバの集合を含んでいる。Windows登録商標NT40または50のようなWindows登録商標NTサーバオペレーティングシステムの新しいバージョンでは、CSRSSモジュール98のUSERおよびGDIの部分は、カーネルモードに、WIN32KSYS100と呼ぶモジュールに移す。CSRSSモジュール98とWin32Kモジュール100は、ユーザ-カーネルラインに渡って密に一体化させている。図3は、Windows登録商標NTのより新しいバージョンにおいて実装しているソフトウェアモジュールを示している。クライアントがウィンドウ処理セッションを要求すると、サーバオペレーティングシステムは、CSRSSモジュール98とWIN32Kモジュール100を作成して、それらハードウェアデバイスを開き、そしてリモートのクライアントのシステムコンフィギュレーションとコンパチブルの適切なGDIディスプレイドライバ102およびプロトコルドライバ104をロードする。本例では、クライアント241は、デスクトップコンピュータであって、1024x768の解像度をもつVGAモニタを有しており、そしてRDPプロトコルを使用するものである。これらドライバをロードした後、プロトコルスタック94をウィンドウ処理セッション1にバインドする。このクライアントとの通信は、プロトコルスタック94からプロトコルドライバ104への矢印で示すように、ウィンドウ処理セッション1に渡す。セッションスタートアップの1部分として、リモートクライアント241にいるユーザに対し、Windows登録商標ログオンWLモジュール106を介して、ユーザ識別IDを入力するようプロンプトする。オペレーティングシステムは、このユーザIDをウィンドウ処理セッション1と関連させる。このことは、ウィンドウ処理セッション1に対するユーザモード内のユーザ1のラベルを付したボックスで表している。次に、サーバオペレーティングシステムは、クライアントコンピュータ241上でウィンドウ処理環境を提供する。このクライアントベースのコードは、ウィンドウ処理のグラフィカルユーザインターフェースを走らせ、これは、ユーザが、サーバ上でアプリケーションを開始させ、そしてWindows登録商標ベースのシステムに共通の他の機能を実行することができるようにする。この最初のプロトコルスタック94がセッション1にバインドされた状態で、サーバオペレーティングシステム60は、第2のプロトコルスタックに対するコンテナを作成することにより、別のクライアントを収容する準備を行う。第2のクライアントがこのサーバに接続してあるウィンドウ処理セッションを走らせたとき、スタックマネージャ92は、そのプロトコルスタックをこの新たなクライアントに割り当てる。図4は、第2のクライアント244に対する通信ポート962に接続した第2のプロトコルスタック942を示している。マルチユーザセッションマネージャ90は、セッション2のラベルを付した新たなクライアント-サーバウィンドウ処理セッションを作成して、この第2クライアント244に対応する。第2セッション2は、第1セッション1の複製であり、そしてCSRSSモジュール982とWin32Kモジュール1002のコピーを含む。図3を参照して説明したように、第2ユーザ2は、ログオンし、そしてサーバオペレーティングシステムは、その適当なドライバをロードしてクライアント241をサービスする。この場合、クライアントは、端末コンピュータであって、より低い解像度800x600のディスプレイを有しまたTCPIPトランスポートに対するRDPディスプレイプロトコルを用いている。ウィンドウ処理セッション2は、第2クライアントマシン244をサービスするプロトコルスタックにバインドする。各セッションは、それ自身の関連するプロトコルスタックに対するコンテナを保持する。この例では、セッション1は、関連するプロトコルスタック941を有し、そしてセッション2は、関連するプロトコルスタック942を有する。より多くのクライアントがサーバに接続するにつれ、サーバオペレーティングシステム60は、より多くのウィンドウ処理セッションを複製し続ける。多数のクライアント-サーバウィンドウ処理セッションを発生するためそれらモジュールを複製する能力は、背景の箇所で述べたシトリックスシステムズ社からのWinFrame技術を使用して実現する。残念ながら、このシトリックスWinFrame技術に関する問題は、ユーザの視点からの使い易さの欠如である。WinFrameを使用すると、各ウィンドウ処理セッションは、特定のクライアントマシンおよびこのマシンのシステムコンフィギュレーションにバインドされる。図4に示したシステムを仮定すると、在来のWinFrame技術は、第1ウィンドウ処理セッション1を、1024x768モニタとRDPプロトコルを有するデスクトップコンピュータ241のシステムコンフィギュレーションに結び付け、そして第2ウィンドウ処理セッション2を、800x600モニタとRDPプロトコルを有する端末コンピュータ244のシステムコンフィギュレーションに結び付ける。シトリックスWinFrame技術は、サーバに対し物理的に異なったマシンから実際にログオンすることのあるユーザのニーズに対応するものではない。したがって、ユーザが、1つのクライアントコンピュータからのウィンドウ処理セッションを止め、そしてサーバに別のクライアントコンピュータからログオンするとき、WinFrame技術は、それら2つのクライアントコンピュータが共通のビデオ解像度を共有していない場合には、新たなウィンドウ処理セッションを作成することになる。ユーザは、その古いセッションに再接続することが許されない。しかし、本発明のクライアント-サーバシステムにおいては、サーバオペレーティングシステムは、ユーザのこのニーズに対応し、そしてユーザが異なったマシンから再接続できるウィンドウ処理セッションをサポートするように設計する。上記の例から、ユーザ1が1024x768VGAモニタとRDPプロトコルとをもつデスクトップコンピュータ241を使用してサーバに接続することを想い出してもらいたい。この例で続けて、ユーザ1が、ウィンドウ処理セッション1を終了せずに、サーバ60との接続を断つと仮定する。このユーザは、職場を離れそして家庭に帰る。家庭にいる間、このユーザは、その日の早くに開始したセッションを続けることにする。ユーザは、サーバに対し、家庭にある第2のクライアントコンピュータから接続する。図5は、ユーザ1が、図3を参照して上記したように、最初にサーバに対し第1のクライアント241を使って第1のクライアント-サーバウィンドウ処理セッション1を作成し、そしてこの後、第1のクライアント242を使ってサーバに対し接続する、という状況を示している。第1のセッションの中断時に、RDPおよびTCPIPのスタックドライバを先にロードしたコンテナは、空にし、そしてその関連の通信エンドポイントを壊す。これは、空のプロトコルスタック941で表している。このユーザが後で第2クライアント242を使ってログオンしたとき、マルチユーザセッションマネージャ90は、最初は、ログオンした者が新たなユーザであるかのようにして、第2のセッション2を作成する。この例では、クライアント242は、640x480解像度をもつフラットパネルの11′′カラーディスプレイを備えたラップトップコンピュータである。クライアント242は、RDPプロトコルを使用する。したがって、第2のクライアント242は、図3で使用した第1のクライアント241とは異なったシステムコンフィギュレーションを有している。この接続プロセスは、図3で説明したのと同じである。マルチユーザセッションマネージャ90は、新たな転送スレッドを作成し起動して、この新たなクライアント要求にサービスする。プロトコルスタックマネージャ92は、第2のプロトコルスタック942を、クライアント242が接続した通信ポート962に割り当てる。この第2プロトコルスタック942は、ある通信エンドポイントをもつ空のコンテナから成っている。このスタックマネージャは、デフォルトのドライバをこのプロトコルスタック942にロードし、そしてクライアント通信を点線の矢印で示すようにセッション2に渡す。これら初期化の間においては、オペレーティングシステムは、まだこのユーザが誰であるか気づいていない。ユーザ1のユーザIDを、このログオンプロセスの1部分として受けると、Windows登録商標ログオンWLモジュール106は、ユーザ1が、以前のセッション、すなわちセッション1に関係があることを認識する。しかし、WLモジュール106は、完全に新たなセッションの作成を続行するのではなく、ユーザ1を、実線の矢印で表したようにこのユーザの以前のセッション1に再関連させる。この再関連には、サーバオペレーティングシステムを、このユーザの新たなクライアントコンピュータ242のシステムコンフィギュレーションパラメータに適合させることが含まれる。この再関連プロセスは、ユーザまたはクライアントには可視ではない。ユーザの視点からは、ユーザは、このユーザがこのセッションの前に止めたのと同じポイントに戻っている。本発明のある面によれば、サーバオペレーティングシステム60は、元のセッション1におけるWin32Kモジュール1001を変更することにより、クライアントコンピュータ242に適合する異なったドライバおよびデバイスを使用するようにする。この例では、Win32Kモジュール1001は、640x480の低い解像度の小さな11′′ディスプレイに対応するように適合させる。サーバオペレーティングシステム60は、GDIディスプレイドライバ1021を、1024x768VGAモニタに対するドライバから640x480のフラットパネルのカラーディスプレイへ変化させる。クライアント242は、同じRDPプロトコルを用いるため、Win32Kモジュール1001は、元のプロトコルドライバ1041を保つ。加えて、本発明の別の面は、元のクライアント-サーバ接続において使用していたプロトコルスタックの以前のスタックコンテンツを、以前のセッション1に再関連させることである。好ましい実現例では、第2のスタックからのスタックコンテンツWinStationドライバWD、プロトコルドライバPD、およびトランスポートドライバTDと、ライブの接続エンドポイントとは、以前のセッション1に対する第1のプロトコルスタック941に移し戻す。図6は、この新たなクライアントコンピュータをサポートするためWin32Kモジュール1001を変更した結果を示している。ディスプレイドライバ1021は、このときには、640x480フラットパネルのカラーディスプレイに対するドライバとなっている。加えて、スタックコンテンツは、セッション1のプロトコルスタック941内にロードし戻す。この結果、サーバは、ユーザがこのときアクセスポイントとして用いているクライアントコンピュータに対し、ダイナミックに適応する。セッション2とその関連のプロトコルスタック942は、一旦この再関連が完了したときには、壊すことになる。本例では、ディスプレイデータは、ユーザの新たなクライアントコンピュータ241に適合するようにダイナミックにリサイズする。このセッションは、ユーザにとっては同じものに見え、ユーザのより小さく解像度の低いスクリーンに対しフォーマットし直しているだけである。以前のWinFrame技術は、この再関連プロセスを可能にするものではなく、したがって元のセッションを、新たなクライアントコンピュータ241に供給することができなかった。上記の例は、サーバセッションを、異なったディスプレイサイズおよび解像度に合うように適合させることを強調したものである。これは、単なる1例に過ぎない。サーバにおいて考慮することのできる他の可能なクライアントコンフィギュレーションパラメータには、キーボードのタイプ、キーボードレイアウトQWRTYとDvorak、プロトコルタイプ例えば、TCPIPに対するRDPと非同期モデムに対するRDP、言語例えば、英語とスペイン語、メモリドライブおよび周辺装置がある。図7は、このダイナミック再関連プロセスにおけるステップを示している。これらステップは、サーバオペレーティングシステム内のコードとして実現しており、好ましくは、ユーザ認証ソフトウェアをWindows登録商標ログオンモジュール内に備えて有するマルチユーザセッションマネージャの1部分として実現する。ステップ120において、ユーザは、サーバにあるクライアントを介して接続する。サーバは、この接続プロセスを開始してクライアント-サーバ接続を形成しステップ122、そして新たなクライアント-サーバウィンドウ処理セッションの作成を開始するステップ124。この初期化プロセスの間、サーバオペレーティングシステムは、このユーザが、まだ終了していない以前の任意の活性のセッションに関係があるがどうか解析するステップ126。もしない場合すなわち、ステップ126からのNo分岐、サーバオペレーティングシステムは、このユーザに対する新たなセッションの作成を完成させるステップ128。一方、このユーザが以前の活性のセッションに関係がある場合すなわち、ステップ126からのYes分岐、サーバオペレーティングシステムは、このユーザを、その以前の活性のセッションに再関連させるステップ130。これには、この現在接続したユーザのプロトコルスタックおよび接続エンドポイントを元のセッションに再関連すなわち、転送させることステップ132、並びに以前の活性のセッションを適合させることによって現在のクライアントに適した任意のシステムコンフィギュレーション変化に対応することステップ134とが含まれる。キオスク環境本発明の別の面は、ダイナミック再関連を使用して、サーバに対し単一のクライアントコンピュータから接続する多数のユーザに対処することに関係する。この状況の1つの例として、2人以上の銀行金銭出納係が同じコンピュータを利用すること、あるいは2人以上の販売員が1つのコンピュータレジスタを用いることが一般的である。多数のユーザが同一のコンピュータに頼るこの環境は、一般に、キオスク環境と呼んでいる。図8は、クライアント244をサーバオペレーティングシステム60にプロトコルスタック94を介して接続したものを示している。多数のユーザ1-Nは、同じクライアント244を使用している。マルチユーザセッションマネージャ90は、ユーザ1-Nの各々に対しクライアント-サーバウィンドウ処理セッションを作成する。各ウィンドウ処理セッションは、1つのCSRSSモジュールと1つのWindows登録商標ログオンモジュールユーザモードにおけるユーザブロックとして表すと、そしてカーネルモードにおいてWin32Kモジュールを含んでいる。各セッションはまた、関連したプロトコルスタック94を有している。第1のユーザがサーバにログオンすると、セッションマネージャ90は、この第1ユーザ1に対し第1のセッション1を作成する。Win32Kモジュールは、その適当なドライバおよびデバイスを提供して、端末244上に1つのウィンドウ処理セッションを実現する。内部的には、オペレーティングシステムは、実線の矢印140で表すように、プロトコルスタック941をセッション1に関連させる。ユーザ1が1つのタスクを完了すると、このユーザは、そのセッションを、ログオフしたりあるいは他の場合にはこのセッションを終了させたりせずに、フリーズさせる。このとき、別のユーザが、この端末244を自由に使用できる。ここで、ユーザ2がサーバにログオンすると仮定する。この第2のユーザ2に対して、セッションマネージャ90は、第2のセッション2を作成する。セッション2におけるWin32Kモジュールはまた、その適当なドライバおよびデバイスを提供することにより、端末244上で1つのウィンドウ処理セッションを実現する。オペレーティングシステムは、点線の矢印142で表すように、この第2のプロトコルスタック942をセッション2に関連させる。このプロセスは、N人のユーザに対し続けることができる。このとき、端末が再び自由に使用できるようになったとき、ユーザ1がセッション1に戻りたいことがある。このユーザは、このユーザ自身のIDを再びタイプする。オペレーティングシステムは、最初は、新たなセッションおよび関連のプロトコルスタックの作成を開始する。しかし、オペレーティングシステムが、このユーザが前に存在した中断されたセッションを有すると認識すると、このユーザをその既存のセッション1に再関連させる。スタックコンテンツとライブの通信エンドポイントとは、セッション1との関連のため、プロトコルスタックコンテナ941に転送し戻す。このようにして、サーバオペレーティングシステムは、同じクライアントコンピュータからの多数のユーザのセッションを収容する。以上、本発明について、構造上の特徴および方法上のステップに特有の用語で説明したが、添付の特許請求の範囲に記載の本発明は、必ずしも記述したこの特定の特徴またはステップに限定されるものではない、と理解されたい。これら特定の特徴およびステップは、保護を請求する発明を実施する好ましい形態として開示したに過ぎないものである。"