(57)【特許請求の範囲】
【請求項１】
クライアントコンピュータから、一般的なデバイス・リダイレクションチャネルを介して、専用キーボードおよびマウスによる入力を受け付けるホスティングコンピュータの動作方法であって、
前記一般的なデバイス・リダイレクションチャネルと前記ホスティングコンピュータのシステムキューとのそれぞれに対するインターフェースを備えるデバイスマネージャーを実行するステップであって、前記システムキューは、キーボードおよびマウス入力イベントを前記ホスティングコンピュータのオペレーティングシステムに伝達するために用いられ、前記クライアントコンピュータに接続された標準キーボードおよびマウスデバイスからリダイレクトされたキーボードおよびマウス入力を受信する専用仮想チャネルに対する独立したインターフェースを備える、ステップと、
前記デバイスマネージャーは、前記クライアントコンピュータに接続され、前記一般的なデバイス・リダイレクションチャネルを経由して前記ホスティングコンピュータへリダイレクトされたデバイス入力をそれぞれ有するその他のデバイスのキーボードおよびマウス機能を識別し、前記識別されたキーボードおよびマウス機能のそれぞれについてそこからの入力イベントを扱うデバイスコンテキストエンジンを確立するステップと、
前記デバイスコンテキストエンジンは、
キーボードおよびマウス入力イベントを受信するための前記その他のデバイスそれぞれの前記キーボードおよびマウス機能を開始し、
前記各キーボードおよびマウス機能から入力イベントを受信すると、前記入力イベントを前記システムキューのキューに入れて前記キーボードおよびマウス入力イベントを前記オペレーティングシステムに伝達するステップと、を含むホスティングコンピュータの動作方法。
【請求項２】
請求項１に記載の方法であって、
前記オペレーティングシステムは、前記デバイスマネージャーを動作させることなく前記一般的なデバイス・リダイレクションチャネルから直接受信したキーボード／マウス入力を正しく処理するためのネイティブのサポートを持たない、方法。
【請求項３】
請求項１に記載の方法であって、
前記ホスティングコンピュータは、前記オペレーティングシステムをゲストオペレーティングシステムとして実行する仮想マシンを含む、方法。
【請求項４】
請求項３に記載の方法であって、
前記仮想マシンは、別のクライアントのその他のデバイスが互いに論理的に分離されているという前提で、複数のクライアントと相互作用するマルチユーザ／マルチセッションプラットフォームを設ける、方法。
【請求項５】
請求項１に記載の方法であって、
前記その他のデバイスは、１以上のカード読取機およびタブレットデバイスであり、前記カード読取機はキーボードデバイスとしてキーパッドを備え、前記タブレットデバイスはスタイラスまたはタッチ入力ならびにマウス入力を含む複数の機能を備える、方法。
【請求項６】
請求項１に記載の方法であって、
前記その他のデバイスは、ユニバーサル・シリアル・バス・デバイスであり、前記一般的なデバイス・リダイレクションチャネルは、ユニバーサル・シリアル・バス・デバイス・リダイレクションチャネルである、方法。
【請求項７】
請求項１に記載の方法であって、さらに、
動作の初期化フェーズ中に行われるデバイス先行列挙およびコンテキストセットアップを含み、
前記デバイスマネージャーは、
クライアントに接続された全てのキーボードおよびマウスデバイスを列挙し、
前記標準キーボードおよびマウスデバイスについて、プラグアンドプレイモニタを開始してデバイスの到着を待ち、到着した前記標準キーボードおよびマウスデバイスを前記オペレーティングシステムに組み込み、前記その他のデバイスについて、前記デバイスコンテキストエンジンを開始する、方法。
【請求項８】
請求項１に記載の方法であって、
前記デバイスコンテキストエンジンは、デバイス取り外し時およびセッション切断時に自動的に停止するよう構成される、方法。
【請求項９】
ホスティングコンピュータにより実行可能な、クライアントコンピュータから前記ホスティングコンピュータに一般的なデバイス・リダイレクションチャネルを介して専用キーボードおよびマウスによる入力を受け付ける方法を行わせるコンピュータプログラムインストラクションを格納する非一過性のコンピュータ読取可能な媒体であって、前記方法は、
前記一般的なデバイス・リダイレクションチャネルと前記ホスティングコンピュータのシステムキューとのそれぞれに対するインターフェースを備えるデバイスマネージャーを実行するステップであって、前記システムキューは、キーボードおよびマウス入力イベントを前記ホスティングコンピュータのオペレーティングシステムに伝達するために用いられ、前記クライアントコンピュータに接続された標準キーボードおよびマウスデバイスからリダイレクトされたキーボードおよびマウス入力を受信する専用仮想チャネルに対する独立したインターフェースを備える、ステップと、
前記デバイスマネージャーは、前記クライアントコンピュータに接続され、前記一般的なデバイス・リダイレクションチャネルを経由して前記ホスティングコンピュータへリダイレクトされたデバイス入力をそれぞれ有するその他のデバイスのキーボードおよびマウス機能を識別し、前記識別されたキーボードおよびマウス機能のそれぞれについてそこからの入力イベントを扱うデバイスコンテキストエンジンを確立するステップと、
前記デバイスコンテキストエンジンは、
キーボードおよびマウス入力イベントを受信するための前記その他のデバイスそれぞれの前記キーボードおよびマウス機能を開始し、
前記各キーボードおよびマウス機能から入力イベントを受信すると、前記入力イベントを前記システムキューのキューに入れて前記キーボードおよびマウス入力イベントを前記オペレーティングシステムに伝達するステップと、を含む、非一過性のコンピュータ読取可能な媒体。
【請求項１０】
請求項９に記載の非一過性のコンピュータ読取可能な媒体であって、
前記オペレーティングシステムは、前記デバイスマネージャーを動作させることなく前記一般的なデバイス・リダイレクションチャネルから直接受信したキーボード／マウス入力を正しく処理するためのネイティブのサポートを持たない、非一過性のコンピュータ読取可能な媒体。
【請求項１１】
請求項９に記載の非一過性のコンピュータ読取可能な媒体であって、
前記ホスティングコンピュータは、前記オペレーティングシステムをゲストオペレーティングシステムとして実行する仮想マシンを含む、非一過性のコンピュータ読取可能な媒体。
【請求項１２】
請求項１１に記載の非一過性のコンピュータ読取可能な媒体であって、
前記仮想マシンは、別のクライアントのその他のデバイスが互いに論理的に分離されているという前提で、複数のクライアントと相互作用するマルチユーザ／マルチセッションプラットフォームを設ける、非一過性のコンピュータ読取可能な媒体。
【請求項１３】
請求項９に記載の非一過性のコンピュータ読取可能な媒体であって、
前記その他のデバイスは、１以上のカード読取機およびタブレットデバイスであり、前記カード読取機はキーボードデバイスとしてキーパッドを備え、前記タブレットデバイスはスタイラスまたはタッチ入力ならびにマウス入力を含む複数の機能を備える、非一過性のコンピュータ読取可能な媒体。
【請求項１４】
請求項９に記載の非一過性のコンピュータ読取可能な媒体であって、
前記その他のデバイスは、ユニバーサル・シリアル・バス・デバイスであり、前記一般的なデバイス・リダイレクションチャネルは、ユニバーサル・シリアル・バス・デバイス・リダイレクションチャネルである、非一過性のコンピュータ読取可能な媒体。
【請求項１５】
ホスティングコンピュータであって、
１以上のプロセッサと、
前記プロセッサに連結され、前記ホスティングコンピュータをクライアントコンピュータへ連結されるよう構成された入力／出力回路と、
前記プロセッサおよび前記入力／出力回路に連結され、コンピュータプログラムインストラクションを格納して、実行のために前記プロセッサに与えるよう構成されたメモリであって、前記コンピュータプログラムインストラクションは、実行時に、前記ホスティングコンピュータに、前記クライアントコンピュータから、一般的なデバイス・リダイレクションチャネルを介して、専用キーボードおよびマウスによる入力を受け付ける方法を行わせるメモリと、
を備え、前記方法は、
前記一般的なデバイス・リダイレクションチャネルと前記ホスティングコンピュータのシステムキューとのそれぞれに対するインターフェースを備えるデバイスマネージャーを実行するステップであって、前記システムキューは、キーボードおよびマウス入力イベントを前記ホスティングコンピュータのオペレーティングシステムに伝達するために用いられ、前記クライアントコンピュータに接続された標準キーボードおよびマウスデバイスからリダイレクトされたキーボードおよびマウス入力を受信する専用仮想チャネルに対する独立したインターフェースを備える、ステップと、
前記デバイスマネージャーは、前記クライアントコンピュータに接続され、前記一般的なデバイス・リダイレクションチャネルを経由して前記ホスティングコンピュータへリダイレクトされたデバイス入力をそれぞれ有するその他のデバイスのキーボードおよびマウス機能を識別し、前記識別されたキーボードおよびマウス機能のそれぞれについてそこからの入力イベントを扱うデバイスコンテキストエンジンを確立するステップと、
前記デバイスコンテキストエンジンは、
キーボードおよびマウス入力イベントを受信するための前記その他のデバイスそれぞれの前記キーボードおよびマウス機能を開始し、
前記各キーボードおよびマウス機能から入力イベントを受信すると、前記入力イベントを前記システムキューのキューに入れて前記キーボードおよびマウス入力イベントを前記オペレーティングシステムに伝達するステップと、を含む、ホスティングコンピュータ。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、仮想化されたコンピューティング分野に関し、特に、仮想コンピューティング・プラットフォームまたはホスティングシステムにおけるゲストオペレーティングシステムへのローカルデバイス入力のリダイレクションに関する。
【発明の概要】
【０００２】
仮想コンピューティング・プラットフォームにおいてゲストオペレーティングシステムとして展開されるオペレーティングシステムは、接続時のセッションに接続されているクライアントに接続されたキーボードおよびマウスデバイスのみを認識およびサポートするよう設計されていることがある。これらのＯＳでは、一般的なユニバーサル・シリアル・バス（ＵＳＢ）リダイレクションまたはヒューマン・インタフェース・デバイス（ＨＩＤ）リダイレクションなどといった別のリダイレクション技術を用いてリダイレクトされたキーボードおよびマウスデバイスを認識しない。この限界は、キーボードまたはマウス機能も含みうる複数の機能を持つ複合的または特殊なデバイスが用いられる場合に、進化する仮想コンピューティングの利用に対して悪影響を与えるおそれがある。このようなデバイスからの入力をリモートセッションでリダイレクトすることはできるが、ゲストオペレーティングシステムが実際にこの入力を利用することはできない。このようなデバイスの例としては、キーボードデバイスとしてキーパッドを備えるクレジットカード読取機や、ペン、タッチパッド、マウスなどの多面的機能を持つ描画タブレットがある。いずれの場合にも、一般的なリダイレクションによってリダイレクトされるデバイス入力は、キーボードまたはマウス入力として認識されず、実用的にはこうしたデバイスを十分に活用することができない。
【０００３】
クライアントコンピュータから、一般的なデバイス・リダイレクションチャネルを介して、専用キーボードおよびマウスによる入力を受け付けるホスティングコンピュータの動作方法を開示する。本方法は、上記のようにそれ以外ではこのような入力を受け付けることができないゲストオペレーティングシステムと合わせて利用することができる。よって、本方法は、一般的なデバイス・リダイレクションチャネルから直接このような入力を受け付けるようゲストオペレーティングシステムを修正することが（ビジネス上のまたは技術的な理由により）出来ない製品または環境においても展開することができる。
【０００４】
一局面において、本方法は、前記一般的なデバイス・リダイレクションチャネルと前記ホスティングコンピュータのシステムキューとのそれぞれに対するインターフェースを備えるデバイスマネージャーを実行するステップであって、前記システムキューは、キーボードおよびマウス入力イベントを前記ホスティングコンピュータのオペレーティングシステムに伝達するために用いられる、ステップを含む。また、前記システムキューは、前記クライアントコンピュータに接続された標準キーボードおよびマウスデバイスからリダイレクトされたキーボードおよびマウス入力を受信する専用仮想チャネルに対する独立したインターフェースを備える。
【０００５】
本方法は、また、前記デバイスマネージャーが、前記クライアントコンピュータに接続され、前記一般的なデバイス・リダイレクションチャネルを経由して前記ホスティングコンピュータへリダイレクトされたデバイス入力をそれぞれ有するその他のデバイスのキーボードおよびマウス機能を識別し、前記識別されたキーボードおよびマウス機能のそれぞれについてそこからの入力イベントを扱うデバイスコンテキストエンジンを確立するステップを含む。
【０００６】
本方法は、また、前記デバイスコンテキストエンジンが、キーボードおよびマウス入力イベントを受信するための前記その他のデバイスそれぞれの前記キーボードおよびマウス機能を開始し、前記各キーボードおよびマウス機能から入力イベントを受信すると、前記入力イベントを前記システムキューのキューに入れて前記キーボードおよびマウス入力イベントを前記オペレーティングシステムに伝達するステップを含む。
【０００７】
デバイスコンテキストエンジンを有するデバイスマネージャーは、仮想チャネルによって用いられる一般的なデバイス・リダイレクションチャネルからシステムキューへのパスを提供し、オペレーティングシステムへのキーボードおよびマウス入力を行う。よって、オペレーティングシステムは、このような入力を認識して正しく処理することができるネイティブのメカニズムを介して入力を受け取ることになる。
【０００８】
詳細な一局面において、前記オペレーティングシステムは、前記デバイスマネージャーを動作させることなく前記一般的なデバイス・リダイレクションチャネルから直接受信したキーボード／マウス入力を正しく処理するためのネイティブのサポートを持たなくてもよい。
【０００９】
また別の詳細な局面において、前記ホスティングシステムは、前記オペレーティングシステムをゲストオペレーティングシステムとして実行する仮想マシンを含む。前記仮想マシンは、前記別のクライアントのその他のデバイスが互いに論理的に分離されているという前提で、複数のクライアントと相互作用するマルチユーザ／マルチセッションプラットフォームを設けてもよい。
【００１０】
また別の詳細な局面において、前記その他のデバイスは、１以上のカード読取機およびタブレットデバイスであり、前記カード読取機はキーボードデバイスとしてキーパッドを備え、前記タブレットデバイスはスタイラスまたはタッチ入力ならびにマウス入力を含む複数の機能を備える。
【００１１】
また別の詳細な局面において、前記その他のデバイスは、ユニバーサル・シリアル・バス・デバイスであり、前記一般的なデバイス・リダイレクションチャネルは、ユニバーサル・シリアル・バス・デバイス・リダイレクションチャネルである。
【００１２】
また別の詳細な局面において、デバイス先行列挙およびコンテキストセットアップが動作の初期化フェーズ中に行われ、前記デバイスマネージャーは、（ａ）クライアントに接続された全てのキーボードおよびマウスデバイスを列挙し、（ｂ）前記標準デバイスについて、プラグアンドプレイモニタを開始してデバイスの到着を待ち、到着した前記標準デバイスを前記システムに組み込み、（ｃ）前記その他のデバイスについて、前記デバイスコンテキストエンジンを開始する。
【００１３】
また別の詳細な局面において、前記デバイスコンテキストエンジンは、デバイス取り外し時およびセッション切断時に自動的に停止するよう構成される。
【００１４】
また、コンピュータにより実行可能な、クライアントコンピュータから前記コンピュータに一般的なデバイス・リダイレクションチャネルを介して専用キーボードおよびマウスによる入力を受け付ける方法を行わせるコンピュータプログラムインストラクションを格納する非一過性のコンピュータ読取可能な媒体が開示され、この方法は実質的に上述したとおりである。
【００１５】
また、１以上のプロセッサと、前記プロセッサに連結され、前記ホスティングコンピュータをクライアントコンピュータへ連結されるよう構成された入力／出力回路と、前記プロセッサおよび前記入力／出力回路に連結され、コンピュータプログラムインストラクションを格納して、実行のために前記プロセッサに与えるよう構成されたメモリであって、前記インストラクションは、実行時に、前記ホスティングコンピュータに、前記クライアントコンピュータから、一般的なデバイス・リダイレクションチャネルを介して、専用キーボードおよびマウスによる入力を受け付ける方法を行わせるメモリと、を備えるホスティングコンピュータが開示され、この方法は実質的に上述したとおりである。
【図面の簡単な説明】
【００１６】
上記およびその他の目的、特徴、および利点は、添付の図面に示すように、以下に記載する本発明の個別の実施形態により明らかとなろう。図中、類似の参照符号は同一の要素を支持するものである。
【００１７】
【図１】図１は、コンピュータシステムのブロック図である。
【図２】図２は、キーボード／マウスマネージャーコンポーネントのブロック図である。
【図３−４】図３および図４は、動作のフローチャートである。
【図５】図５は、ハードウェア的に見たコンピュータのブロック図である。
【発明を実施するための形態】
【００１８】
本明細書に開示する個別の実施形態、実施例、および実装例の個々の特徴は、技術的に意味を成すならばどのように組み合わせてもよい。また、これらの特徴を組み合わせることにより、可能な限りあらゆる組み合わせ、変更例、および変形例が形成される。ただし、こうした組み合わせ、変更例、および／または変形例が明確に除外されているまたは実現困難である場合は除く。このような組み合わせ、変更例、および変形例の裏付けは、本明細書内に含まれるものと考えらえる。
【００１９】
図１に、ホスティングサーバー１０、ネットワーク１２、およびクライアントコンピュータまたは「クライアント」１４を含むコンピュータシステムを示す。このシステムは、ホスティングサーバー１０がハイパーバイザなどの仮想化ソフトウェア１８とともに１以上の仮想マシン（ＶＭ）１６を用いるコンピューティングサービスを提供する、仮想化されたコンピューティング用に構成されている。一般に知られるように、ＶＭ１６は物理コンピュータを模したソフトウェア構成である。ＶＭベースのコンピューティングは、モジュール性、リソース効率、および作業負荷の変化やハードウェアの停止または故障などに合せるための動的展開性などといった利点がある。ＶＭ１６は、１以上のアプリケーション（ＡＰＰ）２０、「ゲスト」オペレーティングシステム（ゲストＯ／Ｓ）２２と呼ばれるオペレーティングシステム、後に詳細するシステムキュー（システムキュー）２４というもの、キーボードおよびマウスマネージャー（ＫＭＭ）２６と呼ばれるデバイスマネージャー、デバイスバス２８、および仮想チャネル３０を含むものとして図示されている。ゲストＯ／Ｓ２２は、通常はサーバー型マシン上で展開される「サーバー」型のオペレーティングシステムである。例としては、Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒ（登録商標）オペレーティングシステムがある。
【００２０】
クライアント１４は、一般的なデバイスリダイレクション（リダイレクト）機能３２、および標準キーボード／マウス（標準ＫＢ／マウス）リダイレクション機能３４を含む。標準キーボード／マウスリダイレクション機能３４は、ローカルの標準キーボードおよび／またはマウス（標準ＫＢ／マウス）３６からＶＭ１６のゲストＯ／Ｓ２２へ、ネットワーク１２および仮想チャネル３０を介して、キーボード／マウス入力イベントのリダイレクトを行う。一般的なデバイスリダイレクション機能３４は、接続されたその他のデバイスからＶＭ１６のゲストＯ／Ｓ２２へ、ネットワーク１２およびデバイスバス２８を介して、入力イベントのリダイレクトを行う。すなわち、この場合の接続されたデバイスは、標準キーボードまたはマウスデバイスではないがキーボードおよび／またはマウス機能を備えるデバイス３８である。このようなデバイスの例としては、「キーボード」デバイスとして提示されるキーパッドを備えるクレジットカード読取機がある。別の例として、ペン、タッチ入力、マウスなど、複数の機能を備えるタッチセンサー式パッドまたはタブレットがある。
【００２１】
この場合、システムキュー２４は、ユーザのデバイス入力イベント、すなわち、いずれも「標準」キーボード／マウスデバイスからのものであるキーボード入力イベント（キーストローク）およびマウス入力イベント（パン移動、ボタンクリック、スクロール）と組み合わせての用途専用である。ここで、「標準」とは、デバイスの初期識別を意味する。標準キーボードは、専用にまたは主として、フルキーボード機能、すなわち、ＱＷＥＲＴＹキー、ファンクションキー、該当する場合はテンキーなどを備えるデバイスである。標準マウスは、専用にまたは主として、例えば光学マウスや２ボタンマウスなどのマウス機能を備えるデバイスである。このようなデバイスはオペレーティングシステム２２とのユーザインタラクションに不可欠なものであるため、専門化した仮想チャネル３０は、これらデバイスの入力イベントを受信してシステムキュー２４に転送するよう規定され利用される。仮想チャネル３０は標準キーボード／マウスデバイス３６からの入力を容易に扱うことができるが、様々な入力特徴を有し通常は専用のデバイスドライバを必要とする一般的なデバイス入力、例えばＵＳＢ大容量ストレージデバイス、ジョイスティック、マイクなどからの入力を扱うようには設計されていない。
【００２２】
よって、クライアント１４において、入力イベントを他のデバイス３８からホスティングサーバー１０へリダイレクトするために、一般的なデバイスリダイレクション機能３２を用いる必要がある。一例においては、デバイス３８はＵＳＢ（登録商標）デバイス（すなわち、クライアントコンピュータ１４のＵＳＢポートに接続可能なＵＳＢ対応のインターフェースを備えるデバイス）であってもよく、一般的なデバイスリダイレクション機能３２は、いわゆる一般的なＵＳＢリダイレクションである。その他の一般的なリダイレクション技術も知られている。残念ながら、ホスティングサーバー１０の中には、ＶＭ１６がキーボード／マウス入力を一般的なデバイス・リダイレクションチャネルを介して受信するためのネイティブのサポート（この場合はネットワーク１２およびデバイスバス２８を介した接続に対応する）を持たないものもある。一例において、これはゲストＯ／Ｓ２２として展開されるＷｉｎｄｏｗｓ  Ｓｅｒｖｅｒ（登録商標）オペレーティングシステムの限界である。よって、現在当技術分野で知られているように、デバイス３８のキーボードおよび／またはマウス機能は、一般的なデバイスリダイレクションを用いるだけでは認識されない。しかしながら、本明細書でさらに説明するようにＫＭＭ２６およびその関連機能を用いることにより、ゲストＯ／Ｓ２２がデバイス３８のキーボードおよび／またはマウス機能を認識して利用することができる。
【００２３】
図１のシステムの一局面では、ＶＭ１６は、別のクライアント１４のデバイス３６，３８が互いに論理的に分離されているという前提で、複数のクライアント１４と相互作用するマルチユーザ／マルチセッションプラットフォームである。ＶＭ１６が一つのクライアント１４とのみ相互作用を行う別の構成では、一般的なデバイスリダイレクション３２に接続されたデバイス３８からのキーボードおよびマウス入力の認識に用いられる別のメカニズムがあってもよい。ただし、このようなキーボード／マウス入力を別のクライアント１４と関連付けるための規定はない。以下でさらに説明するように、本開示の技術は、キーボード／マウス入力とそれぞれのクライアント１４との関連付けを果たすコンテキストをデバイスごとに確立する。
【００２４】
より具体的には、Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒは、クライアント１４のキーボードおよびマウスに接続された仮想チャネルインターフェースを介したキーボード／マウス入力をサポートする。このサーバーは、リモートセッション時に一般的な装置からキーボード／マウス入力を受け付けるようには設計されていない。本開示の技術は、効果的にこの制限を取り除くものである。理論的には、Ｗｉｎｄｏｗｓ  Ｓｅｒｖｅｒのリモートセッション面を設計しなおすなど、他の方法でこの制限を取り除くことができる。このような解決方法は様々な（技術上またはビジネス上の）理由により可能ではないことがあるため、本開示の技術では、そのかわりに所望の機能を与えるアドオンとしてＫＭＭ２６を追加する。
【００２５】
図２に、ＫＭＭ２６の構造を示す。ＫＭＭ２６は、カーネルドライバ４０および一組のデバイスコンテキストエンジン（ＤＥＶ  ＣＴＸＴ  ＥＮＧＩＮＥ）４２を含み、各デバイスコンテキストエンジンは対応する「裏ルート」４４によってカーネルドライバ４０に接続されている。動作中、カーネルドライバ４０は、デバイスバス２８（図１）を介してデバイス３８のキーボード／マウス入力４６，４８を受信し、対応コンテキストエンジン４２に入力する（図１）。これらのコンテキストエンジン４２は、この入力をゲストＯ／Ｓ２２に伝達するために入力イベントをシステムキュー２４に追加する役割を果たす。
【００２６】
図３に、「デバイス列挙およびコンテキストセットアップ」と呼ばれる動作の初期部分を示す。これらは、例えばＶＭ１６の初期化中に行われる。ステップ５０で、ＫＭＭ２６をスタートする。ステップ５２で、ＫＭＭ２６は、標準デバイス３６も上記のキーボードまたはマウス機能を備えるデバイス３８も、クライアント１４に接続されたキーボードおよびマウスデバイスを全て列挙する。ステップ５４で、デバイスバス２８でホストされるデバイス（すなわち、キーボード／マウス機能を備えるデバイス３８）と、仮想チャネル３０によって接続されるデバイス（すなわち、標準キーボード／マウスデバイス３６）とに分ける。後者については、ステップ５６で、プラグアンドプレイモニタを開始して、デバイスの到着を待ち到着したデバイスをシステムに組み込む。デバイスバス２８でホストされるデバイス３８については、ステップ５８で、被ホストデバイス３８ごとにデバイスコンテキストエンジン４２をスタートする。
【００２７】
以下に、図３の動作のさらに詳細を説明する。
１．一般的なデバイスリダイレクション３２を介してリダイレクトされるデバイス３８をカテゴライズし、接続時間中のセッションに現れる準キーボード／マウスデバイス３６から区別する必要がある。よって、デバイス３８はカテゴライズまたはタグ付けされて、ＣＴＸ＿ＥＸＴ＿ＤＥＶＩＣＥ＿ＫＥＹＢＯＡＲＤｙａＣＴＸ＿ＥＸＴ＿ＤＥＶＩＣＥ＿ＭＯＵＳＥといった特殊な属性タイプが付与される。デバイスをカテゴライズする方法には様々な方法があり、例えばデバイスに特殊な属性の設定デバイストポロジーの構文解析などにより、特定のルートバスと関連付けられることになる。
２．ＫＭＭ２６は、これらのタグを有するデバイスのみを列挙することにより、キーボードおよびマウスデバイス３８の一覧を用意するユーザモードの消費者サービスを含む。セッション接続時、ＫＭＭ２６はセッション内で動作する。このサービスは、セッション内の全てのキーボードおよびマウスデバイスを列挙し、一般的なデバイスリダイレクション３２によりリダイレクトされたキーボードおよびマウスデバイス３８の一覧を用意する。ＫＭＭ２６は、突然のデバイス取り外しを検出し、ホットプラグインをサポートするプラグアンドプレイ機能を備える。
３．ＫＭＭ２６は、カテゴリ（キーボードおよびマウス）ごとに最大数Ｎ（設定可能）まで、各デバイスについてデバイスコンテキストエンジン４２を生成する。各デバイスコンテキストエンジン４２は、デバイスからの入力を受信してシステムキュー２４に入力を処理するよう設定する。デバイスコンテキストエンジン４２は、突然のデバイス取り外し時およびセッション切断時に自動的に停止することができる。
【００２８】
図４に、デバイスバス２８を介して受信した入力イベントと関連するＫＭＭ２６の動作を示す。ステップ６０は、各被ホストデバイス３８のキーボード／マウス機能の「開始」、または動作許可の初期化ステップである。ステップ６２で、入力イベントを待つ。入力イベントは、通常のデバイス入力（例えば、ボタン押下やマウス動作など）、およびデバイスの引き抜き／切断イベントという、ふたつのカテゴリーに分けられる。通常のデバイス入力は、ゲストＯ／Ｓ２２により最終的に認識されて処理されるように入力イベントデータのシステムキュー２４への転送を含むステップ６４で処理される。引き抜き／切断イベントは、デバイスコンテキストエンジン４２を停止してこれ以上必要のない関連操作データをクリーンアップすることを含むステップ６６で処理される。
【００２９】
図５に、コンピュータハードウェア的に見たホスティングサーバー１０またはクライアント１４などの物理的コンピュータの構成の例を示す。ハードウェアは、１以上のプロセッサ７０、メモリ７２、およびインターフェース回路７４を含み、これらは１以上の高速データバス等のデータ相互接続７６により相互接続されている。インターフェース回路７４は、ネットワーク１２（図１）へのハードウェア接続、およびおそらくは他の外部デバイス／接続（ＥＸＴ  ＤＥＶ）を設ける。本明細書において、プロセッサ７０とこれに接続されたメモリ７２は、「処理回路」とも呼ばれる。また、ローカルに接続されたディスクドライブまたはフラッシュドライブなどのローカルストレージ７８であってもよい。動作時には、メモリ７２は、システムソフトウェア（例えば、オペレーティングシステム）のデータおよびインストラクション、ならびにプロセッサ７０によって実行されてソフトウェアに規定された形式でハードウェアを機能させる１以上のアプリケーションプログラムを格納する。よって、キーボード／マウスマネージャーアプリケーションのインストラクションを実行するコンピュータハードウェアは、例えば、キーボード／マウスマネージャー回路またはキーボード／マウスマネージャーコンポーネントと呼ぶことができる。言うまでもなく、このような回路群またはコンポーネント群は、全て、当技術分野で一般に知られるように、様々なコンピュータプログラムを実行する１組以上のコンピュータプロセッシングハードウェアとして、実現可能であり相互に作用することができる。また、同じく技術分野で一般に知られるように、アプリケーションソフトウェアは、光もしくは磁気ディスク、フラッシュメモリ、またはその他の不揮発性半導体メモリなどの非一過性のコンピュータ読取可能な媒体に格納されてもよく、そこから回収されて処理回路によって実行される。
【００３０】
以上、本発明の各種の実施形態を具体的に図示および説明してきたが、当業者には、添付の請求項に規定される本発明の精神と範囲から逸脱することなく、形状や細部について様々な変更が可能であることは言うまでもない。
【図１】
0006315725.tif 000002
【図２】
0006315725.tif 000003
【図３】
0006315725.tif 000004
【図４】
0006315725.tif 000005
【図５】
0006315725.tif 000006