JP2006195981A - アプリケーションサーバ環境におけるusbデバイス - Google Patents

アプリケーションサーバ環境におけるusbデバイス Download PDF

Info

Publication number
JP2006195981A
JP2006195981A JP2006000691A JP2006000691A JP2006195981A JP 2006195981 A JP2006195981 A JP 2006195981A JP 2006000691 A JP2006000691 A JP 2006000691A JP 2006000691 A JP2006000691 A JP 2006000691A JP 2006195981 A JP2006195981 A JP 2006195981A
Authority
JP
Japan
Prior art keywords
usb
client
driver
computer
application program
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
JP2006000691A
Other languages
English (en)
Other versions
JP2006195981A5 (ja
JP5080007B2 (ja
Inventor
Chenyin Zhong
チョン チェンイン
John C Dunn
シー.ダン ジョン
Joy Chik
チック ジョイ
Makarand V Patwardhan
ヴィ.パトワーダン マカランド
Vinod M Mamtani
エム.マムタニ ビノッド
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 JP2006195981A publication Critical patent/JP2006195981A/ja
Publication of JP2006195981A5 publication Critical patent/JP2006195981A5/ja
Application granted granted Critical
Publication of JP5080007B2 publication Critical patent/JP5080007B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)
  • Computer And Data Communications (AREA)
  • Stored Programmes (AREA)
  • Nitrogen And Oxygen Or Sulfur-Condensed Heterocyclic Ring Systems (AREA)

Abstract

【課題】ユニバーサルシリアルバス(USB)デバイスのアクセスおよび制御を、サーバコンピュータなどのコンピュータへ導くコンピュータ、システム、および方法を提供する。
【解決手段】1つまたは複数のユニバーサルシリアルバス(USB)デバイスが、クライアントコンピュータにおいて接続される。これらのUSBデバイスは、クライアントコンピュータによって認識され、それらのUSBデバイスの1つまたは複数のための機能をアプリケーションサーバコンピュータが提供するかどうかについて判定が下される。機能がアプリケーションサーバコンピュータによって提供される場合、USBデバイスからサーバコンピュータへの個別の通信パスが提供される。
【選択図】図5

Description

本発明は一般に、ユニバーサルシリアルバス(USB)デバイスと通信するコンピュータ、システム、および方法に関し、より具体的には、ユニバーサルシリアルバス(USB)デバイスのアクセスおよび制御を、サーバコンピュータなどのコンピュータへ導くことに関する。
本件特許出願人によって提供されているTerminal Serviceなどの、リモートクライアントアクセス用のプラットフォームおよびシステムによって、コンピュータは、アプリケーションサーバによってホストされ、アプリケーションサーバに常駐しているアプリケーションプログラムに、遠隔地からアクセスすることができる。リモートクライアントアクセスシステムでは、クライアントコンピュータは通常、サーバコンピュータに依存して、そのサーバコンピュータに常駐しているアプリケーションプログラムを介してコンピューティング機能を提供する。アプリケーションプログラムの例としては、ワードプロセッシングプログラム、マルチメディアプログラム、およびデータ管理プログラムなどがある。
アプリケーションサーバコンピュータは、ホストコンピュータまたはターミナルサーバと呼ばれることがある。クライアントコンピュータは、リモート端末、リモートクライアント、またはシンクライアントと呼ばれることがある。クライアントコンピュータは、主にユーザインターフェース、言い換えると、ユーザおよびデバイI/Oとの対話用に使用される。クライアントコンピュータ上のソフトウェアは、通常は一般的なものであり、あるいはアプリケーション特有のものではなく、一般にオペレーティングシステムと、リモートクライアントアクセス環境をサポートするソフトウェアを含む汎用ソフトウェアとから構成される。サーバコンピュータにおけるソフトウェアは通常、データベースへのアクセス、文書処理、製図、および他の多くのタイプの用途などの、特定の機能を提供する専用のアプリケーションソフトウェアを含む。クライアントコンピュータとアプリケーションサーバの間で通信されるデータの大部分は、グラフィックスデータ、キーストローク、マウスの動きなどの、ユーザインターフェースに関連するコマンドおよびデータ、ならびにクライアントコンピュータに配置されているハードウェアデバイスに関連するコマンドおよびデータを含む。
アプリケーションサーバおよびクライアントは通常、本件特許出願人によって規定されているRDP(remote desktop protocol)などの所定の通信プロトコルを使用して、情報を相互に通信またはやり取りする。TCP/IPなどのより低位のネットワークプロトコルも含まれる。
リモートクライアントアクセスシステムの利点は、大半の機能および計算がサーバコンピュータにおいて行われるため、クライアントコンピュータのパワーを相対的に低く抑えることができることである。アプリケーションサーバは、典型的なデスクトップコンピュータよりも高価な場合が多いが、1台のアプリケーションサーバコンピュータは、より安価な多くのクライアントにサービスを提供することができる。
いくつかのシステムにおける別の利点として、データは、サーバコンピュータの物理ロケーションに常駐することができ、アプリケーションプログラムは、そのロケーションにおいてこれらのデータに基づいて動作することができ、これらのデータを相対的に低速な通信リンクを介してクライアントコンピュータへ転送する必要はなく、クライアントコンピュータの物理ロケーションではユーザインターフェースが実装されるだけである。
クライアントコンピュータは、USB(ユニバーサルシリアルバス)ポートを有する場合が多く、このポートには周辺デバイスが接続され、このようなデバイスは、USBキーボードの場合のようにユーザインターフェースに関連する場合が多い。多くの場合、サーバコンピュータにおいて実行されるアプリケーションは、このようなUSBデバイスにアクセスして対話する必要がある。USBデバイスの他の例としては、デジタルカメラ、ドキュメントスキャナ、外部ディスクドライブ、およびメディアリーダーなどがある。アプリケーションサーバによってホストされるさまざまなアプリケーションは、これらのハードウェアデバイスと対話する必要が生じる場合がある。
典型的なWindows(登録商標)ベースのデスクトップ環境では、ローカルアプリケーションは、ドライバスタックと呼ばれる一連のドライバを介してUSBデバイスと通信する。体系化および再利用上の目的から、スタックのコンポーネント間でさまざまな役割が分担されている。たとえばいくつかのドライバは、一般的なクラスのUSBデバイスのすべてまたは一部に対して汎用性があり、多くの異なるデバイスと通信するために使用または再利用することができる。他のドライバは、特定のデバイスに対する固有の機能を実装し、特定のハードウェア専用に設計される場合が多い。
図1は、アプリケーションサーバのクライアントとしてではなく、スタンドアロンのコンピュータとして機能するコンピュータ内に実装される典型的なUSBアーキテクチャを示している。図1は、ハードウェアコンポーネントとソフトウェアコンポーネントの間の論理的な通信を示している。
図1のシステムは、コンピュータ100およびUSBデバイス105を含む。USBデバイス105は、物理的なUSBポート(図示せず)を介してコンピュータ100に接続されている。アプリケーションプログラム110は、コンピュータ上で実行され、ドライバスタック115を介してUSBデバイス105と対話する。この例のドライバスタック115は、3つのUSBドライバを有する。
ドライバスタック115の最も下のレベルでは、USBホストコントローラ120が、コンピュータ内のUSBハードウェア(図示せず)と直接通信し、またそのハードウェアを介してUSBデバイス105と通信する。その上では、(ハブまたはハブドライバとも呼ばれる)低位のUSBバスドライバ125が、USBホストコントローラ120と通信し、USBデバイスのパワー、列挙(enumeration)、およびさまざまなUSBトランザクションを管理する。これらのドライバは、双方ともWindows(登録商標)オペレーティングシステムの一部であり、すべてのUSBデバイスに対して汎用性を有しており、これらのドライバは、コンピュータ100に接続されるUSBデバイスのタイプに応じて交換または変更する必要はない。
ドライバスタック115はまた、USBファンクションデバイスドライバ130を含む。USBファンクションデバイスドライバ130は、特定のデバイスまたはデバイスのクラス用にカスタマイズされる。結果として、使用されている実際のUSBデバイスに応じて、さまざまなファンクションドライバがロードされる。USBファンクションドライバは、USBデバイスファンクションドライバ、クラスドライバ、あるいはカスタムドライバとも呼ばれる。
図1は、単一のアプリケーションプログラム110しか示していないが、コンピュータ100は、通常は複数のアプリケーションプログラムを有し、そのうちの任意の1つまたは複数のアプリケーションプログラムは、図示されている単一のドライバスタック115を介してUSBデバイス105と対話するように構成することができる。アプリケーションプログラム110は、ワードプロセッシングプログラム、ゲームプログラム、あるいは他のさまざまなタイプの任意のプログラムとすることができる。
図2は同様の例を示しており、コンピュータ200は、複数のアプリケーションプログラム205および210と、複数のUSBデバイス215、220、および225とを有する。この例では、アプリケーションプログラム205は、USBデバイス215と対話し、その一方でアプリケーションプログラム210は、USBデバイス220および225と対話する。
前の例と同様に、通信は、USBドライバスタック230によって実施される。USBドライバスタック230は、USBデバイス215、220、および225のそれぞれと通信するUSBホストコントローラ235およびUSBバスドライバ240を含む。USBドライバスタック230は、USBデバイス215、220、および225のそれぞれに対応する複数のUSBファンクションデバイスドライバ245、250、および255をさらに含む。既に説明したように、これらのUSBファンクションデバイスドライバ245、250、および255のそれぞれは、特定のタイプまたはクラスのUSBデバイスに基づいて選択され、ロードされる。
図示されているように、1つのアプリケーションプログラムは、複数のUSBデバイスと対話することができる。複数のUSBデバイスが組み込まれている場合、単一のコンピュータが複数のUSBドライバスタックを有することも可能だが、それらのUSBデバイスは、一般に同一のホストコントローラドライバおよびバスドライバを使用する。異なる種類のUSBポートが使用されている場合、別々のポートドライバと「ミニポート」ドライバをロードすることができるが、一般にUSBドライバスタック全体は、同じまま変わらない。
図3は、従来技術のリモートクライアント/サーバアーキテクチャにおけるUSBデバイスの使用を示している。この例では、クライアントコンピュータ300は、そのUSBポートに1つまたは複数のUSBデバイス305(1)〜305(N)が接続されている。クライアントコンピュータ300はまた、オペレーティングシステム、またはそのようなUSBデバイス用の他の低位のサポートを有する。詳細には、リモートクライアントコンピュータ300は、USBホストコントローラ310を含み、このUSBホストコントローラ310は、USBデバイス305と接続している。
クライアントコンピュータ300は、自分自身とサーバコンピュータ315の間で転送されるコマンドおよびデータに応答して、ユーザの対話を実行する。1つまたは複数のアプリケーションプログラム320が、サーバコンピュータ315に常駐し、その上で実行される。遠隔地に配置されているUSBデバイス305をサポートするために、サーバコンピュータ315のオペレーティングシステムまたは他のサポートソフトウェアは、USBサポートを含む。詳細には、サーバコンピュータ315は、USBファンクションデバイスドライバ325(1)〜325(N)、USBバスドライバ330、およびUSBホストコントローラ335を含む。
USBファンクションデバイスドライバ325は、前述のUSBファンクションデバイスドライバ130と同様の機能を実行する。USBファンクションデバイスドライバ325は、USBバスドライバ330と通信する。同じように、USBバスドライバ330は、前述のUSBバスドライバ125と同様の機能を実行する。サーバコンピュータ315は、USBホストコントローラ335をさらに含み、このUSBホストコントローラ335は、クライアントコンピュータ300のUSBホストコントローラ310に接続されているか、またはそのUSBホストコントローラ310と通信する。USBホストコントローラ310とUSBホストコントローラ335の間の通信は、直接の物理的な接続を介して行うか、またはこの2つを接続する中間ネットワーク(intermediate network)を含むことができる。USBホストコントローラ335は、USBホストコントローラ310との通信を介してUSBデバイス305と通信し、またUSBデバイス305にアクセスする。この例では、クライアントコンピュータ300は、サーバコンピュータ315に完全に依存して、USBデバイス305用のアプリケーションプログラム320を介して、必要な機能をすべて提供する。
図1に示されているスタンドアロンのコンピュータの動作とは対照的に、図3のクライアントサーバの構成では、アプリケーションプログラム320の形態の機能は、すべてサーバコンピュータ315において提供される。すなわち、クライアントコンピュータ300は、USBデバイス305用のすべての機能に関してサーバコンピュータ315に依存している。この構成では、クライアントコンピュータ300は、USBデバイス305のいずれに対しても何の機能も提供しないか、あるいは提供することができない。
1つまたは複数のユニバーサルシリアルバス(USB)デバイスが、クライアントコンピュータにおいて接続される。特定のUSBデバイスに対するアクセスおよび制御が、サーバコンピュータに提供され、特定のUSBデバイスからサーバコンピュータへの個別の通信パスが、クライアントコンピュータにおいて提供される。サーバコンピュータからのコマンドはUSBデバイスにおいて受信され、データは特定のUSBデバイスからサーバコンピュータへ送信される。
サーバコンピュータは、クライアントコンピュータに接続されている特定のUSBデバイスを認識し、特定のUSBデバイス用の個別の通信パスが、サーバコンピュータにおいて提供され、サーバコンピュータは、USBデバイスにコマンドを送信し、サーバコンピュータにおける通信パスを介してUSBデバイスからデータを受信する。
添付の図を参照して、詳細な説明を行う。図では、参照番号の最も左側の(1つまたは複数の)数字によって、その参照番号が最初に登場した図を識別する。別々の図において同じ参照番号を使用して、同様のまたは同一のアイテムを表している。
以降の開示は、特定のUSBデバイスに対するアクセスおよび制御をアプリケーションサーバコンピュータへ導くまたは導き直すプロセスについて説明する。USBデバイスは、アプリケーションサーバコンピュータと通信するクライアントコンピュータにおいて接続される。
(クライアント−サーバコンピュータシステム)
図4は、リモートクライアントアクセスシステム400を示している。システム400は、アプリケーションサーバコンピュータ405および1つまたは複数のクライアントコンピュータを含む。クライアントコンピュータにおいて接続されているユニバーサルシリアルバス(USB)デバイスに対するアクセスおよび制御は、アプリケーションサーバコンピュータ405へ導くか、または導き直すことができる。詳細には、クライアントコンピュータにおけるUSBデバイスは、アプリケーションサーバコンピュータ405によって選択的にアクセスおよび制御される。システム400は、本件特許出願人によって提供または規定されているTerminal Serviceシステムとすることができ、複数のクライアントコンピュータは、1つまたは複数のUSBデバイスに関する機能、とりわけアクセスおよび制御を提供するすべてまたは一部のアプリケーションプログラムに関して、アプリケーションサーバコンピュータ405に依存する。この例では、クライアントコンピュータ410が示されており、これは他のクライアントコンピュータの例である。
ネットワーク415は、アプリケーションサーバコンピュータ405とクライアントコンピュータ410を接続する。ネットワーク415は、有線ベースのテクノロジーと無線テクノロジーの双方を含むこのようなネットワーキングコンテキストをサポートする複数の方法で実装することができる。本発明の態様は、1つの特定のネットワークアーキテクチャまたはネットワークテクノロジーに限定されるものではない。システム400は、モデムを介した直接のダイヤルアップ、企業LAN(ローカルエリアネットワーク)、WAN(ワイドエリアネットワーク)、およびインターネットを含むさまざまなアーキテクチャを代表するものである。ネットワーク415は、サーバコンピュータ405を1つまたは複数のクライアントコンピュータ(たとえば、クライアントコンピュータ410)に接続する。さらにサーバコンピュータ405とクライアントコンピュータの間におけるネットワーク415の接続は、TCP/IP(transmission control protocol over Internet protocol)などのトランスポートプロトコルを実装することができる。
サーバコンピュータ405は、本件特許出願人によって提供されているWindows(登録商標)Server 2003オペレーティングシステムなどのオペレーティングシステムと共に実装される。サーバコンピュータ405およびクライアントコンピュータ410は、相互にデータまたは情報をやり取りする(すなわち通信する)ために、本件特許出願人によって規定されているRDP(remote data protocol)などの通信プロトコルを実装することができる。このような通信プロトコル、とりわけRDPの使用は、Terminal Servicesシステムなどによって、リモートクライアントアクセスシステムのコンテキストにおいて実施することができる。
クライアントコンピュータ410は、汎用PC(パーソナルコンピュータ)、ラップトップPC、タブレットPCなどとすることができ、本件特許出願人によるWindows(登録商標)ブランドのオペレーティングシステムなどのオペレーティングシステムを実装することができる。クライアントコンピュータ410はスタンドアロンのコンピュータであり、主にインターフェースによってアプリケーションサーバコンピュータ405に接続して、クライアントコンピュータ410にローカルに保存されていないファイルまたは他の情報(たとえば、アプリケーションサーバコンピュータ405に常駐しているアプリケーションプログラム)にアクセスする。
クライアントコンピュータ410は、USB1.0、1.1、および2.0などの既存の従来の、および将来のUSB標準をサポートする1つまたは複数のUSBポートを備えている。これらのUSB標準によって、ポート(コンピュータインターフェース)を分割し、USBデバイスを「デイジーチェーン式」に接続することができる。すなわち、クライアントコンピュータ410上の1つのポートを複数のポートへと「分割」することができ、これによって複数のデバイスが同一のポートを使用することができる。USBポートは、クライアントコンピュータ410内の特定のUSBハブに接続することができる(すなわち、USB1.1デバイスはUSB1.1ハブに接続され、USB2.0デバイスはUSB2.0ハブに接続される)。
USBハブは、USB1.1ホストコントローラやUSB2.0ホストコントローラなどのホストコントローラに接続される。場合によっては、ホストコントローラは、複数のUSB標準をサポートすることができる(たとえば1つのUSBホストコントローラが、USB1.1および2.0をサポートする)。ホストコントローラは、クライアントコンピュータ410のPCI(peripheral component interconnect)バスなどのバスに接続される。PCIバスは、クライアントコンピュータ410の中央処理装置(CPU)すなわちプロセッサによってアクセスされる。クライアントコンピュータ410のハードウェアアーキテクチャについては、以降で図8を参照してさらに論じる。
クライアントコンピュータ410は、1つまたは複数のUSBデバイス420(1)、420(2)、および420(N)に接続される。USBデバイス420は、デジタルカメラ、ビデオカメラ、ハードディスク記憶装置、デジタルメディアレコーダ、プリンタ、およびスキャナを含むが、これらには限定されない。USBデバイス420などのUSBデバイスは、特定のデバイスクラスによって定義される。すなわちデジタルカメラ、ビデオカメラ、ハードディスク記憶装置、デジタルメディアレコーダ、プリンタ、スキャナなどに対して、個別のデバイスクラスがある。クライアントコンピュータ410およびUSBデバイス420は、それぞれUSB接続425(1)、425(2)、および425(N)によって個別に接続される。USB接続425は、前述のようにクライアントコンピュータ410においてUSBポートの1つまたは複数に接続される。
(クライアントおよびサーバのコンピュータアーキテクチャ)
図5は、USBデバイス420のための機能がアプリケーションサーバコンピュータ405において提供される、アプリケーションサーバコンピュータ405およびクライアントコンピュータ410における最上位のアーキテクチャの例を示している。
クライアントコンピュータ410およびアプリケーションサーバコンピュータ405は、そのそれぞれのクライアントトランスポートドライバ500およびサーバトランスポートドライバ505を介して相互に通信する。図1において前述したように、ネットワーク415などのネットワークは、サーバコンピュータ405とクライアントコンピュータ410を接続することができる。さらにクライアントコンピュータ410、サーバコンピュータ405、およびネットワーク(たとえばネットワーク415)は、システム400などのより大規模なリモートクライアントアクセスシステムの一部とすることができる。
この例では、クライアントコンピュータ410は、アプリケーションサーバコンピュータ405に依存して、USBデバイス420のための機能を提供する。アプリケーションサーバコンピュータ405に常駐するアプリケーションプログラム510は、1つまたは複数のUSBデバイス420のための機能を個別に提供する。1つまたは複数のUSBデバイス420のためのこのような機能は、さまざまなリモートクライアントアクセスシステムのシナリオをサポートして、アプリケーションサーバコンピュータ405によって提供することができる。
1つの典型的なシナリオは、クライアントコンピュータ410が、USBデバイスをサポートするための機能(すなわち、アプリケーションプログラム)をまったく有していない場合である。このシナリオは、クライアントコンピュータ410がシンクライアントであり、サーバコンピュータ405によって提供されるすべての機能に依存している場合が典型である。
別のシナリオは、クライアントコンピュータ410が、USBデバイスをサポートする上で限られた機能または選択された数のアプリケーションプログラムしか有していない場合である。しかし、クライアントコンピュータ410に常駐している限られた数のアプリケーションプログラムは、1つまたは複数のUSBデバイス420を個別にサポートするアプリケーションプログラムを含まない。サーバコンピュータ405は、1つまたは複数のUSBデバイス420によって必要とされる機能を提供する特定のアプリケーションプログラム510を含む。1つまたは複数のUSBデバイス420の制御は、クライアントコンピュータ410のアーキテクチャのPNP(plug and play)機能を介して決定することができる。具体的には、USBバスドライバ515は、1つまたは複数のUSBデバイス420を認識し、その1つまたは複数のUSBデバイス420の存在を他のコンポーネント(たとえば、クライアントコンピュータのCPU)、ドライバ、またはソフトウェアモジュールに伝える。USBホストコントローラ520は、USBバスドライバとインターフェースで接続され、USBデバイス420への物理的なまたは論理的な接続を提供する。他のコンポーネント、ドライバ、またはソフトウェアモジュールによって、その1つまたは複数のUSBデバイス420をサポートするための許容可能なアプリケーションプログラムがクライアントコンピュータ410に常駐していないと判断された場合、その1つまたは複数のUSBデバイス420に対する制御は、アプリケーションサーバコンピュータ405へ導かれる。
他の典型的なシナリオでは、クライアントコンピュータ410は、1つまたは複数のUSBデバイス420をサポートする常駐のアプリケーションプログラムを含むことができるが、複数の理由の1つから、クライアントコンピュータ410におけるユーザは、1つまたは複数のUSBデバイス420のサポートおよび機能をアプリケーションサーバコンピュータ405へ導くことを決定することができる。このユーザによって開始されるオペレーションは、1つまたは複数のUSBデバイス420に対するアクセスおよび制御をアプリケーションサーバコンピュータ405に提供する。
アプリケーションプログラム510は、USBファンクションデバイスドライバ525と通信する。USBファンクションデバイスドライバ525は、特定のUSBデバイスのデバイスクラスに固有のものである。USBファンクションデバイスドライバ525は、USBデバイスのクラスを表す特定のFDO(functional device object)を作成する。この特定のFDOは、USBデバイスのクラスを表すデータオブジェクトであり、アプリケーションプログラム510へのインターフェースを公開または提供する。USBファンクションデバイスドライバ525上に常駐するデータオブジェクトとして、FDO、またはそのFDOによって公開されるインターフェースは、アプリケーションプログラム510によって個別に認識される。
USBファンクションデバイスドライバ525は、プロキシUSBバスドライバ530と通信する。プロキシUSBバスドライバ530はデバイスに依存せず、ローカルUSBデバイスと、USBデバイス420などのリモートUSBデバイスとを含む複数のUSBデバイスをサポートする。USBファンクションデバイスドライバ525は、PDO(physical device object)を作成する。このPDOは、USBデバイス420の1つを表し、そのUSBデバイス420の1つに固有のデータオブジェクトである。PDOデータオブジェクトは、USBデバイス420の1つを表し、その特定のUSBデバイスに固有のものである。一意または固有のPDOによって、サーバコンピュータ405は、プロキシUSBバスドライバ530を使用して、特定のUSBデバイスを区別することができる。さらに、それぞれの中間インターフェース500および505を介して、プロキシUSBバスドライバ530は、リモートクライアントアクセスドライバ535と通信する。リモートクライアントアクセスドライバ535は、サーバコンピュータ405から発生するコマンド(すなわち、アプリケーションプログラム410からのコマンド)を渡すという特定の機能を実行する。プロキシUSBバスドライバ530は、USBバスドライバ515と論理的に通信する。
アプリケーションプログラム510との通信は、IRP(I/O request packets)から、とりわけIOCTL(I/O control)コードと呼ばれる特定のグループのIRPから構成することができる。IRPは、アプリケーションプログラム510から発生する通信データであり、データをアプリケーションプログラム510へ転送(送信)するよう求める要求など、1つまたは複数のUSBデバイス420にアクションを実行するよう求める要求を含む。IOCTLコードは、USBファンクションデバイスドライバ525と通信するために、アプリケーションプログラム510によって使用することができる。IOCTLコードは、特定のアクションを実行するために1つまたは複数のUSBデバイス420に対してアプリケーションプログラム510によって伝達される特定のコマンドまたは命令である。USBファンクションデバイスドライバ525は、アプリケーションプログラム510からIOCTLコードを受信し、そのIOCTLコードをIRPに変換し、そのIRPは、1つまたは複数のUSBデバイス420へ渡される。同様に、1つまたは複数のUSBデバイス420から送信されるIRPは、IOCTLに変換され、このIOCTLは、アプリケーションプログラム510によって読み取ること、または使用することができる。IOCTLは、USBファンクションデバイスドライバ525などのデバイスまたはクラスに固有のドライバによってアプリケーションプログラム510からのコマンドおよび/またはアクション(すなわち要求)を伝達するために、個別に使用される。USBファンクションデバイスドライバ525は、コマンドまたはアクションを定義するIOCTLを、特にIOCTLパラメータを検証する。
図6は、機能が、アプリケーションサーバコンピュータ405またはクライアントコンピュータ410のいずれかによって提供される、アプリケーションサーバコンピュータ405およびクライアントコンピュータ410における最上位のアーキテクチャの例を示している。1つまたは複数のUSBデバイス420は、クライアントコンピュータ410またはアプリケーションサーバコンピュータ405のいずれかによってアクセスおよび制御することができる。具体的には、アプリケーションサーバコンピュータ405またはクライアントコンピュータ410のいずれかにおけるアプリケーションプログラムが、特定のUSBデバイス420に機能を提供する。
リモートクライアントアクセスシステムの実装形態では、クライアントコンピュータ410は主に、キーボードやマウスなどの入力デバイスを介してユーザによって入力されたデータなどの、入力および出力(I/O)を提供するために使用される。この例では、I/Oデータは、USBデバイス420によって提供される。クライアントコンピュータ410に常駐しているアプリケーションプログラム605を使用して、1つまたは複数のUSBデバイス420のための機能を提供することができ、これによって特に、I/Oデータを受信して、1つまたは複数のUSBデバイス420へ送信することができる。具体的には、1つまたは複数のUSBデバイス420によって提供されたデータまたは情報は、アプリケーションプログラム605を使用してクライアントコンピュータ410によってアクセスされる。アプリケーションプログラム605は、データまたは情報(すなわち制御)を特定のUSBデバイス420へ提供することもできる。場合によっては、アプリケーションプログラム605などのアプリケーションプログラムがクライアントコンピュータ410に常駐しているか否かを問わず、1つまたは複数のUSBデバイス420に対するアクセスおよび制御を、サーバコンピュータ405に常駐しているアプリケーションプログラムへ導くか、または導き直すことが望ましい場合がある。アプリケーションプログラム605の例としては、ワードプロセッシングプログラム、マルチメディアプログラム、およびデータ管理プログラムなどがある。
アプリケーションプログラム605は、USBファンクションデバイスドライバ610と通信する。USBファンクションデバイスドライバ610は、USBデバイス420の1つがグループ化されているデバイスクラスに固有のものである。前述のように、特定のUSBファンクションデバイスドライバは、特定のUSBデバイスをサポートする。たとえばUSBファンクションデバイスドライバは、デジタルカメラ、プリンタ、ディスクストレージユニット、スキャナなどに固有のものである。USBファンクションデバイスドライバ610は、1つまたは複数のUSBデバイス420を表すFDOを作成し、同じクラスにグループ化されているUSBデバイスは、同じFDOによって表される。この特定のFDOは、1つまたは複数のUSBデバイス420がグループ化されているデバイスのクラスを表すデータオブジェクトであり、アプリケーションプログラム605へのインターフェースを公開または提供する。USBデバイス420がデジタルカメラである場合、作成されるFDO(データオブジェクト)は、デジタルカメラ全般を表すものであり、特定のデジタルカメラを表すものではない。USBファンクションデバイスドライバ610上に常駐するデータオブジェクトとして、FDOと、そのFDOによって公開されるインターフェースは、アプリケーションプログラム605、USBバスドライバ515、およびUSBファンクションデバイスドライバ610と通信する他のドライバ、モジュール、またはコンポーネントによって認識される。
USBファンクションデバイスドライバ610は、「ハブドライバ」としても知られているUSBバスドライバ515と通信する。USBバスドライバ515はデバイスに依存せず、USBデバイス420などの複数のUSBデバイスをサポートする。USBバスドライバ515は、USBデバイス420のうち特定のUSBデバイスを表すデータオブジェクトであるPDOを作成する。PDOデータオブジェクトの表示は、USBデバイス420のうち特定のUSBデバイスに固有のものである。たとえば、USBデバイス420が、接続されている複数のデジタルカメラの1つである場合、特定のUSBデバイスを識別するUSBハブドライバ515によって特定のPDOが作成される。このPDOは、USBホストコントローラ520へ個別に伝達される。さらに、USBバスドライバ515によって作成されたPDOを使用して、USBハブドライバ515と通信する他のドライバ、モジュール、またはコンポーネントに対して特定のUSBデバイスを識別することができる。
USBホストコントローラ520は、1つまたは複数のUSBデバイス420への物理的なインターフェースとすることができ、USBバスドライバ515と通信する。USBホストコントローラ520は、USBポートに接続することができ、これらのUSBポートは、USBデバイス420へ接続される。1つまたは複数のUSBデバイス420がUSBホストコントローラ520へ接続されるたびに、USBホストコントローラ520は、接続された1つまたは複数のUSBデバイス420に常駐している識別子または識別データをUSBバスドライバ515へ渡す。USBバスドライバ515は、USBデバイス420を識別するPDOを作成し、このPDOは、他のドライバ、モジュール、またはコンポーネントに対して提示される。USBデバイス420のうち特定のUSBデバイスを識別することによって、クライアントコンピュータ410は(すなわち、クライアントコンピュータ410のCPUすなわちプロセッサは)、その特定のUSBデバイスにアクセスして使用する上で必要なソフトウェアをインストールする。これはPNP機能をサポートし、これによってユーザは、特定のUSBデバイスをサポートするための適切なソフトウェアをインストールする必要がなくなる。
アプリケーションプログラム605との通信は、IRPから、とりわけIOCTLコードから構成することができる。IRPは、アプリケーションプログラム605から発生する通信データであり、データをアプリケーションプログラム605へ転送(送信)するよう求める要求など、1つまたは複数のUSBデバイス420にアクションを実行するよう求める要求を含む。IOCTLコードは、USBファンクションデバイスドライバ610と通信するために、アプリケーションプログラム605によって使用することができる。IOCTLコードは、特定のアクションを実行するためにアプリケーションプログラム605によって1つまたは複数のUSBデバイス420に対して伝達される、特定のコマンドまたは命令である。USBファンクションデバイスドライバ610は、アプリケーションプログラム605からIOCTLコードを受信し、そのIOCTLコードをIRPに変換し、そのIRPは、1つまたは複数のUSBデバイス420へ渡される。同様に、1つまたは複数のUSBデバイス420から送信されるIRPは、IOCTLに変換され、このIOCTLは、アプリケーションプログラム605によって読み取ること、または使用することができる。IOCTLは、USBファンクションデバイスドライバ610などのデバイスまたはクラスに固有のドライバによってアプリケーションプログラム605からのコマンドおよび/またはアクション(すなわち要求)を伝達するために、個別に使用される。USBファンクションデバイスドライバ610は、コマンドまたはアクションを定義するIOCTLを、特にIOCTLパラメータを検証する。
クライアントトランスポートドライバ500が、クライアントコンピュータ410において提供され、これによって、アプリケーションサーバコンピュータ405とのリモートクライアントアクセス通信が可能となる。通信は、RDP通信プロトコルなどの通信プロトコルを実装することができ、具体的には、送信されるデータをコード化して、クライアントトランスポートドライバ500によって受信されたコマンドを復号するための通信プロトコルを実装することができる。さらにクライアントトランスポートドライバ500は、インターネットなどのネットワークを介してデータを通信する際のTCP/IPなどのトランスポーテーションプロトコルを実装することができる。
場合によっては、1つまたは複数のUSBデバイス420をサポートする機能が、サーバコンピュータ405によって提供される。このような機能がアプリケーションサーバコンピュータ405によって提供される場合、リモートクライアントアクセスドライバ535がロードされる。リモートクライアントアクセスドライバ535は、アプリケーションサーバコンピュータ405から発生するコマンドを渡すことを含め、USBファンクションデバイスドライバ610によって提供される機能を実行する。リモートクライアントアクセスドライバ535を介して、USBデバイス420への通信は、アプリケーションプログラム605およびUSBファンクションデバイスドライバ610から導き直される。コマンドは、IRPの形態とすることができ、USBバスドライバ515へ渡すことができる。さらにリモートクライアントアクセスドライバ535は、USBバスドライバ515によって作成された特定のPDOを認識する。リモートクライアントアクセスドライバ535は、1つまたは複数のUSBデバイス420を表す特定のPDOと、その特定のPDOによって公開されるインターフェースとを明確に認識する。
アプリケーションサーバコンピュータ405は、クライアントコンピュータ410などの1つまたは複数のクライアントコンピュータに特定の機能を提供する専用のアプリケーションソフトウェアを提供する。この例では、アプリケーションサーバコンピュータ405は、1つまたは複数のUSBデバイス420のための機能をサポートまたは提供するアプリケーションプログラム510を含む。アプリケーションプログラム510の例としては、ワードプロセッシングプログラム、マルチメディアプログラム、およびデータ管理プログラムなどがある。
アプリケーションプログラム510は、USBファンクションデバイスドライバ525と通信する。USBファンクションデバイスドライバ525は、特定のUSBデバイス420がグループ化されているデバイスクラスに固有のものである。USBファンクションデバイスドライバ525は、USBデバイスの特定のクラスを表す特定のFDOを作成する。前述のように、この特定のFDOは、デバイスの1つのクラスを表すデータオブジェクトであり、アプリケーションプログラム510へのインターフェースを公開または提供する。USBファンクションデバイスドライバ525によって提供されるデータオブジェクトとして、FDOと、そのFDOによって公開されるインターフェースは、アプリケーションプログラム510によって個別に認識される。
USBファンクションデバイスドライバ525は、プロキシUSBバスドライバ530と通信する。プロキシUSBバスドライバ530はデバイスに依存せず、USBデバイス420などの複数のローカルおよびリモートのUSBデバイスをサポートする。プロキシUSBバスドライバ530はPDOを作成する。このPDOは、特定のUSBデバイス420を表し、その特定のUSBデバイス420に固有のデータオブジェクトである。一意または固有のPDOによって、サーバコンピュータ405は、プロキシUSBバスドライバ530を使用して、特定のUSBデバイスを区別することができる。
アプリケーションプログラム510との通信は、IRPおよびIOCTLコードから構成することができる。IOCTLコードは、USBファンクションデバイスドライバ525と通信するために、アプリケーションプログラム510によって個別に使用することができる。IOCTLコードは、アプリケーションプログラム510によって伝達される特定のコマンドまたは命令である。USBファンクションデバイスドライバ525は、アプリケーションプログラム510からIOCTLコードを受信し、そのIOCTLコードをIRPに変換し、そのIRPは、プロキシUSBバスドライバ530へ渡される。プロキシUSBバスドライバ530によって受信されるIRPは、サーバトランスポートドライバ505によって受信される。サーバトランスポートドライバ505はまた、プロキシUSBバスドライバ530にIRPを渡すことができ、このようなIRPは、USBデバイス420などのリモートUSBデバイスからのデータおよび要求を表す。
図7は、USBデバイスに対するアクセスおよび制御をアプリケーションサーバコンピュータ405などのリモートコンピュータへ導く、または導き直すプロセス700を示している。プロセス700は、論理的なフローグラフ内のブロックの集合として示されており、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せにおいて実施できる一連のオペレーションを表している。ソフトウェアのコンテキストでは、それらのブロックは、1つまたは複数のプロセッサによって実行されると、列挙されているオペレーションを実行する、コンピュータ命令を表す。プロセス700については、図4、5、および6に記載のアプリケーションサーバコンピュータ405およびクライアントコンピュータ410を参照して説明する。ここでは、アプリケーションサーバコンピュータ405およびクライアントコンピュータ410が、特定のプロセスを実行するための手段を提供する。フローチャートとして説明するが、これらのプロセスは同時に発生できることを意図している。
ブロック705において、USBデバイスはクライアントコンピュータに接続される。このデバイスは、クライアントコンピュータ上のUSBポートへ物理的に接続することができる。USBポートは、USBコントローラと物理的に接続される。USBバスドライバは、USBコントローラと論理的に接続される。USBバスドライバは、特定のUSBデバイスを認識および識別し、そのUSBデバイスがグループ化されているクラスをさらに識別する。この認識プロセスは、この例ではUSBバスドライバによって個別に実行され、この認識プロセスを介して、USBデバイスのPNP(plug and play)が提供される。すなわち、USBデバイスが認識され、該当する場合は、適切なソフトウェアがユーザの介入を伴わずにインストールされる。PDO(physical device object)と呼ばれるデータオブジェクトと、そのUSBデバイスに固有のインターフェースとが、USBバスドライバによって個別に提供される。このPDOおよびインターフェースは、USBバスドライバに接続されているコンポーネント、モジュール、およびドライバに伝達される。
場合によっては、接続されているUSBデバイスに対する機能、またはアクセスおよび制御をクライアントコンピュータが提供すること(すなわち、ブロック710の「いいえ」の分岐に進むこと)が望ましい。ブロック715では、クライアントコンピュータにおけるアプリケーションプログラムが、そのUSBデバイスのための機能を提供する場合、特定のUSBファンクションデバイスドライバがインストールまたはロードされる。USBファンクションデバイスドライバは、そのUSBデバイスのデバイスクラスに固有のものである。USBファンクションデバイスドライバは、FDO(functional device object)と、接続されているUSBデバイスに固有のインターフェースとを個別に提供する。このFDOおよびインターフェースは、USBファンクションドライバに接続されているコンポーネント、モジュール、およびドライバに伝達される。アプリケーションプログラムからUSBデバイスへの通信パスが提供される。
ブロック720では、USBデバイスとアプリケーションプログラムの間で通信が実行される。アプリケーションプログラムは、データを求める要求について記述するIOCTL(I/O control)コードを送信することができる。アプリケーションプログラムは、IOCTLコードを受信することもできる。IOCTLコードは、アプリケーションプログラムから送信された後でIRP(I/O request packets)に変換することができる。さらに、アプリケーションプログラムによって受信されたIOCTLコードは、USBデバイスからのIRPとして開始することができる。
他の特定の場合には、接続されているUSBデバイスに対する機能、またはアクセスおよび制御をアプリケーションサーバコンピュータが提供すること(すなわち、ブロック710の「はい」の分岐に進むこと)が望ましい。典型的なケースとしては、クライアントコンピュータが、適切な機能をUSBデバイスに提供する上で限られたアプリケーションプログラムしか有していない状況や、そうしたアプリケーションプログラムをまったく有していない状況などがある。他のケースでは、アプリケーションプログラムがクライアントコンピュータに常駐して、USBデバイスのための機能を提供することができるにもかかわらず、クライアントコンピュータにおけるユーザが、USBデバイスのための機能をアプリケーションサーバコンピュータから提供されたいと希望する場合がある。
ブロック725では、リモートクライアントアクセスドライバが、クライアントコンピュータにおいてインストールまたはロードされる。アプリケーションサーバコンピュータからの通信、特にサーバコンピュータにおけるアプリケーションプログラムは、リモートクライアントアクセスドライバを介して導かれ、基本的にアプリケーションサーバコンピュータ(すなわち、アプリケーションサーバコンピュータのアプリケーションプログラム)からUSBデバイスへの通信パスを提供する。クライアントトランスポートドライバは、クライアントコンピュータにおいて提供することができ、これによってアプリケーションサーバコンピュータとの通信が可能となる。アプリケーションサーバコンピュータは、クライアントコンピュータのクライアントトランスポートドライバへの通信を受信および送信するサーバトランスポートドライバを含むことができる。
ブロック730では、アプリケーションサーバコンピュータにおいてUSBデバイスが認識される。詳細には、アプリケーションサーバコンピュータに実装されているプロキシUSBバスドライバが、USBデバイスと、そのUSBデバイスの特定のクラスとを認識する。
ブロック735では、リモートクライアントアクセスバスドライバが、USBデバイスのクラスに固有のUSBファンクションデバイスドライバをロードまたはインストールする。USBファンクションデバイスドライバは、そのUSBデバイスが属するデバイスクラスまたはグループに固有のものである。
ブロック740では、USBデバイスと、アプリケーションサーバコンピュータに常駐しているアプリケーションプログラムの間で通信が実行される。アプリケーションプログラムは、データを求める要求について記述するIOCTLを送信することができ、これらのIOCTLはIRPに変換され、それらのIRPはUSBデバイスによって受信される。USBファンクションデバイスドライバによって、FDO(デバイスに固有のデータオブジェクト)を作成し、提供することができる。このFDOは、そのアプリケーションプログラムにとってのUSBデバイスを表す。
(典型的なコンピュータ)
図8は、この主題の態様を実施するための環境として、たとえばクライアントコンピュータ410またはアプリケーションサーバコンピュータ405として適切な典型的なコンピューティングデバイスまたはコンピュータ800を示している。コンピュータ800のコンポーネントは、処理装置820と、システムメモリ830と、システムメモリ830を含むさまざまなシステムコンポーネントを処理装置820に結合するシステムバス821とを含むことができるが、これらには限定されない。システムバス821は、メモリバスまたはメモリコントローラと、ペリフェラルバスと、さまざまなバスアーキテクチャのいずれかを使用するローカルバスとを含む複数のタイプのバス構造のいずれにすることもできる。たとえばこのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、およびメザニンバスとしても知られているPCI(Peripheral Component Interconnect)バスを含むが、これらには限定されない。
典型的なコンピュータ800は通常、さまざまなコンピュータ読取り可能記憶媒体を含む。コンピュータ読取り可能記憶媒体は、コンピュータ800によってアクセスできる利用可能な任意のメディアとすることができ、揮発性および不揮発性記憶媒体、ならびに取外し可能および取外し不可能な記憶媒体の双方を含む。たとえばコンピューティングデバイス読取り可能記憶媒体は、コンピュータ記憶媒体および通信媒体を含むことができるが、これらには限定されない。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、他のデータなどの情報を記憶するための任意の方法または技術において実装される揮発性および不揮発性記憶媒体、ならびに取外し可能および取外し不可能な記憶媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは希望の情報を保存するために使用可能で、コンピューティングデバイス800によってアクセス可能な他の任意の媒体を含むが、これらには限定されない。通信媒体は通常、搬送波や他の伝送メカニズムなどの被変調データ信号内のコンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを具体化し、任意の情報伝達媒体を含む。「被変調データ信号」という用語は、情報をその信号内でコード化するような方法で設定または変更されたその特性のうちの1つまたは複数を有する信号を意味する。たとえば通信媒体は、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数(RF)、赤外線、他の無線媒体などの無線媒体とを含むが、これらには限定されない。また上記のいずれの組合せも、コンピューティングデバイス読取り可能記憶媒体の範囲内に含まれるものである。
システムメモリ830はコンピューティングデバイス記憶媒体を読み取り専用メモリ(ROM)831およびランダムアクセスメモリ(RAM)832などの揮発性メモリおよび/または不揮発性メモリの形態で含む。基本入出力システム833(BIOS)は、起動中などにコンピュータ800内の要素間における情報伝達を補助する基本ルーチンを含み、通常はROM831内に格納されている。RAM832は通常、処理装置820がすぐにアクセスできるか、および/または処理装置820によってその時点で操作されているデータモジュールおよび/またはプログラムモジュールを含む。図8は、例としてオペレーティングシステム834、アプリケーションプログラム835、その他のプログラムモジュール836、およびプログラムデータ837を示しているが、これらには限定されない。
また典型的なコンピュータ800は、他の取外し可能/取外し不可能、揮発性/不揮発性コンピュータ記憶媒体を含むこともできる。図8は、例示のみを目的として、取外し不可能な不揮発性の磁気記憶媒体との間で読み取りや書き込みを行うハードディスクドライブ841と、取外し可能な不揮発性の磁気ディスク852との間で読み取りや書き込みを行う磁気ディスクドライブ851と、CD−ROMや他の光メディアなどの取外し可能な不揮発性の光ディスク856との間で読み取りや書き込みを行う光ディスクドライブ855とを示している。典型的な動作環境において使用できる他の取外し可能/取外し不可能、揮発性/不揮発性コンピューティングデバイス記憶装置としては、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがあるが、これらには限定されない。ハードディスクドライブ841は通常、インターフェース840などの取外し不可能なメモリインターフェースを介してシステムバス821に接続されており、磁気ディスクドライブ851および光ディスクドライブ855は通常、インターフェース850などの取外し可能なメモリインターフェースによってシステムバス821に接続されている。
図8に示した上述のドライブおよびそれらに関連するコンピューティングデバイス記憶装置は、コンピュータ800用のコンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータの記憶を提供する。たとえば図8において、ハードディスクドライブ841は、オペレーティングシステム844、アプリケーションプログラム845、その他のプログラムモジュール846、およびプログラムデータ847を記憶するものとして図示されている。これらのコンポーネントは、オペレーティングシステム834、アプリケーションプログラム835、その他のプログラムモジュール836、およびプログラムデータ837と同じであっても、または異なっていてもよいという点に留意されたい。ここでは、オペレーティングシステム844、アプリケーションプログラム845、その他のプログラムモジュール846、およびプログラムデータ847が最低限異なるコピーであることを示すために、異なる番号を割り当てている。ユーザは、キーボード848、および通常はマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス861などの入力デバイスを介して典型的なコンピュータ800にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信用アンテナ、スキャナなどを含むことができる。これらの入力デバイスおよび他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース860を介して処理装置820に接続される場合が多いが、パラレルポート、ゲームポート、あるいはとりわけUSBポートなどの他のインターフェースおよびバス構造によって接続することもできる。またモニタ862や他のタイプの表示装置も、ビデオインターフェース890などのインターフェースを介してシステムバス821に接続される。コンピューティングデバイスは、モニタ862に加えて、スピーカ897およびプリンタ896などの他の周辺出力デバイスを含むこともでき、これらは周辺出力インターフェース895を介して接続することができる。
典型的なコンピュータ800は、リモートコンピューティングデバイス880などの1つまたは複数のリモートコンピューティングデバイスへの論理接続を使用して、ネットワーク化された環境内で動作することができる。リモートコンピューティングデバイス880は、パーソナルコンピューティングデバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードとすることができ、図8にはメモリ記憶装置881しか示されていないが、通常はコンピュータ800に関連する上述の要素の多くまたはすべてを含む。図8に示されている論理接続は、ローカルエリアネットワーク(LAN)871およびワイドエリアネットワーク(WAN)873を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピューティングデバイスネットワーク、イントラネット、およびインターネットにおいてよく見受けられる。
LANネットワーキング環境において使用する場合、典型的なコンピュータ800は、ネットワークインターフェースまたはアダプタ884を介してLAN871に接続される。WANネットワーキング環境において使用する場合、典型的なコンピュータ800は通常、モデム872、またはインターネットなどのWAN873上で通信を確立するための他の手段を含む。モデム872は内蔵型または外付け型とすることができ、ユーザ入力インターフェース860または他の適切なメカニズムを介してシステムバス821に接続することができる。ネットワーク化された環境では、典型的なコンピュータ800に関連して示されているプログラムモジュール、またはその一部をリモートメモリ記憶装置内に格納することができる。図8は、例としてリモートアプリケーションプログラム885をメモリデバイス881上に常駐するものとして示しているが、この形態には限定されない。示されているネットワーク接続は代表的なものであり、コンピューティングデバイス間に通信リンクを確立する他の手段も使用できることが理解できるであろう。
(結論)
クライアントコンピュータに接続されているUSBデバイスに対するアクセスおよび制御をサーバコンピュータへ選択的に導くまたは導き直すプロセスについて上述した。本発明について、構造的な特徴および/または方法論的な行為に特有の言葉で説明したが、添付の特許請求の範囲において定義される本発明は、説明した特定の特徴または行為に必ずしも限定されるものではないことを理解されたい。むしろ特定の特徴および行為は、特許請求された本発明を実施する典型的な形態として開示されている。
1台のコンピュータにおいて実装される従来技術のUSBアーキテクチャを示すブロック図である。 複数のアプリケーションプログラムおよび複数のUSBデバイスと共に1台のコンピュータにおいて実装される従来技術のUSBアーキテクチャを示すブロック図である。 1つまたは複数のUSBデバイスのリモートアクセスの従来技術によるアーキテクチャを示すブロック図である。 1つまたは複数のUSBデバイスがクライアントコンピュータまたはアプリケーションサーバコンピュータのいずれかによって制御されるリモートクライアントアクセスシステムを示す図である。 USBデバイスのための機能がアプリケーションサーバコンピュータにおいて提供される、クライアントコンピュータおよびアプリケーションサーバコンピュータを示すブロック図である。 USBデバイスにアクセスして制御するクライアントコンピュータおよびアプリケーションサーバコンピュータを示すブロック図である。 クライアントコンピュータのUSBデバイスに対する制御を、クライアントコンピュータまたはアプリケーションサーバコンピュータへ導くまたは導き直すプロセスを示す流れ図である。 クライアントコンピュータまたはアプリケーションサーバコンピュータの実装形態を示すブロック図である。

Claims (20)

  1. クライアントUSBデバイスと対話するアプリケーションプログラムを、リモートクライアントの代わりに実行するアプリケーションサーバであって、
    前記クライアントUSBデバイスと対話するために前記アプリケーションプログラムが使用するためのインターフェースを有するUSBファンクションドライバと、
    前記リモートクライアントと通信するように構成されているプロキシUSBバスドライバと
    を含むサーバドライバスタックを有し、
    前記USBファンクションドライバは、前記クライアントUSBデバイスと対話するために前記プロキシUSBバスドライバとインターフェースで接続されるように構成されていること
    を特徴とするアプリケーションサーバ。
  2. 前記プロキシUSBバスドライバは、前記クライアントUSBデバイスと対話するために、前記リモートクライアントにおいて実際のUSBバスドライバと通信するように構成されていることを特徴とする請求項1に記載のアプリケーションサーバ。
  3. 前記サーバドライバスタックは、前記プロキシUSBバスドライバと前記リモートクライアントとの間で通信を提供するように構成されているサーバトランスポートドライバをさらに含むことを特徴とする請求項1に記載のアプリケーションサーバ。
  4. 請求項1に記載のアプリケーションサーバと、
    前記リモートクライアントと
    を含み、
    前記リモートクライアントは、前記クライアントUSBデバイスと対話するように構成されているクライアントUSBバスドライバを有し、
    前記プロキシUSBバスドライバは、前記クライアントUSBデバイスと対話するために前記クライアントUSBバスドライバと通信すること
    を特徴とするクライアントサービスシステム。
  5. 請求項1に記載のアプリケーションサーバと、
    前記リモートクライアントと
    を含み、
    前記サーバドライバスタックは、前記プロキシUSBバスドライバと前記リモートクライアントとの間で通信を提供するように構成されているサーバトランスポートドライバをさらに含み、
    前記リモートクライアントはクライアントドライバスタックを有し、前記クライアントドライバスタックは、
    前記クライアントUSBデバイスと対話するように構成されているクライアントUSBバスドライバと、
    前記クライアントUSBバスドライバと前記アプリケーションサーバとの間で通信を提供するように構成されているクライアントトランスポートドライバと
    を含むことを特徴とするクライアントサービスシステム。
  6. 請求項1に記載のアプリケーションサーバと、
    前記リモートクライアントと
    を含み、
    前記サーバドライバスタックは、前記プロキシUSBバスドライバと前記リモートクライアントとの間で通信を提供するように構成されているサーバトランスポートドライバをさらに含み、
    前記リモートクライアントは、前記クライアントUSBデバイスと対話するように構成されているクライアントUSBバスドライバを有すること
    を特徴とするクライアントサービスシステム。
  7. 請求項1に記載のアプリケーションサーバと、
    前記リモートクライアントと
    を含み、
    前記リモートクライアントは、
    前記クライアントUSBデバイスと対話するように構成されているクライアントUSBバスドライバと、
    前記クライアントUSBバスドライバが前記クライアントUSBデバイスと対話する際に経由するUSBホストコントローラドライバと
    を含むクライアントドライバスタックを有すること
    を特徴とするクライアント/サーバリモートサービスシステム。
  8. アプリケーションサーバによって実行される第1のアプリケーションプログラムのためのユーザインターフェースを提供するクライアントであって、
    第1のUSBデバイスと、
    USBドライバスタックと
    を含み、
    前記USBドライバスタックは、
    前記第1のUSBデバイスと通信するUSBホストコントローラドライバと、
    前記USBホストコントローラを介して前記USBデバイスと対話するUSBバスドライバであって、USBファンクションドライバと通信するように設計されているインターフェースを有するUSBバスドライバと、
    前記USBバスドライバの前記インターフェースを使用して、前記クライアントドライバスタックを介して、前記アプリケーションサーバによって実行される前記第1のアプリケーションプログラムと前記第1のUSBデバイスとの間で通信を提供するクライアントトランスポートドライバと
    を含むことを特徴とするクライアント。
  9. 前記クライアントトランスポートドライバは、前記アプリケーションサーバによって実装されるサーバUSBファンクションドライバと通信することを特徴とする請求項8に記載のクライアント。
  10. 第2のUSBデバイスと、
    前記クライアントによって実行される第2のアプリケーションプログラムと、
    前記USBバスドライバの前記インターフェースを使用して、前記クライアントドライバスタックを介して、前記第2のアプリケーションプログラムと前記第2のUSBデバイスとの間で通信を提供するクライアントUSBファンクションドライバと
    をさらに含み、
    前記USBホストコントローラドライバは、前記第2のUSBデバイスと通信すること
    を特徴とする請求項8に記載のクライアント。
  11. 前記クライアントトランスポートドライバは、前記アプリケーションサーバによって実装されるプロキシUSBバスドライバと通信することを特徴とする請求項8に記載のクライアント。
  12. 第2のUSBデバイスと、
    前記クライアントによって実行される第2のアプリケーションプログラムと、
    前記USBバスドライバの前記インターフェースを使用して、前記クライアントドライバスタックを介して、前記第2のアプリケーションプログラムと前記第2のUSBデバイスとの間で通信を提供するクライアントUSBファンクションドライバと
    をさらに含み、
    前記USBホストコントローラドライバは、前記第2のUSBデバイスと通信すること、および、
    前記クライアントトランスポートドライバは、前記アプリケーションサーバによって実装されるサーバUSBファンクションドライバと通信すること
    を特徴とする請求項8に記載のクライアント。
  13. クライアントコンピュータに配置されている第1および第2のUSBデバイスと対話する方法であって、
    アプリケーションサーバによって実行されるホストされているアプリケーションプログラムの代わりに前記クライアントコンピュータにおいてユーザインターフェースを提供するステップと、
    前記クライアントコンピュータによってローカルアプリケーションプログラムを実行するステップと、
    前記クライアントコンピュータにおいてUSBドライバスタックを提供するステップと、
    前記USBドライバスタックを介して、前記ホストされているアプリケーションプログラムと前記第1のUSBデバイスとの間で通信するステップと、
    前記USBドライバスタックを介して、前記ローカルアプリケーションプログラムと前記第2のUSBデバイスとの間で通信するステップと
    を含むことを特徴とする方法。
  14. 請求項13に記載のステップを実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能記憶媒体。
  15. 前記USBドライバスタックは、少なくとも1つのUSBファンクションドライバおよび1つのUSBバスドライバを含むことを特徴とする請求項13に記載の方法。
  16. 請求項15に記載のステップを実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能記憶媒体。
  17. 前記USBドライバスタックは、少なくとも1つのUSBファンクションドライバ、1つのUSBバスドライバ、および1つのUSBホストコントローラドライバをさらに含むことを特徴とする請求項13に記載の方法。
  18. 請求項17に記載のステップを実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能記憶媒体。
  19. 前記USBドライバスタックと、前記アプリケーションサーバによって実装されるUSBファンクションドライバとの間で通信するステップをさらに含むことを特徴とする請求項13に記載の方法。
  20. 請求項19に記載のステップを実行するためのコンピュータ実行可能命令を有することを特徴とするコンピュータ読取り可能記憶媒体。
JP2006000691A 2005-01-14 2006-01-05 アプリケーションサーバ環境におけるusbデバイス Expired - Fee Related JP5080007B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/036,893 US7912987B2 (en) 2005-01-14 2005-01-14 USB devices in application server environments
US11/036,893 2005-01-14

Publications (3)

Publication Number Publication Date
JP2006195981A true JP2006195981A (ja) 2006-07-27
JP2006195981A5 JP2006195981A5 (ja) 2009-01-29
JP5080007B2 JP5080007B2 (ja) 2012-11-21

Family

ID=36128322

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006000691A Expired - Fee Related JP5080007B2 (ja) 2005-01-14 2006-01-05 アプリケーションサーバ環境におけるusbデバイス

Country Status (7)

Country Link
US (2) US7912987B2 (ja)
EP (1) EP1681824B1 (ja)
JP (1) JP5080007B2 (ja)
KR (1) KR20060083116A (ja)
CN (1) CN100543707C (ja)
AT (1) ATE388572T1 (ja)
DE (1) DE602005005151T2 (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008004110A (ja) * 2006-05-24 2008-01-10 Hitachi Ltd デバイス管理システム
JP2008210115A (ja) * 2007-02-26 2008-09-11 Nec Corp リモートコンピュータ上でローカル端末のusbデバイスを操作するシステム、その方法及びそのプログラム
JP2008257419A (ja) * 2007-04-04 2008-10-23 Nec Electronics Corp 通信アダプタ及び通信アダプタのデータ転送方法
JP2009200639A (ja) * 2008-02-19 2009-09-03 Canon Inc リモートコントローラ装置、コントロールシステム及び方法
JP2010505198A (ja) * 2006-09-29 2010-02-18 マイクロソフト コーポレーション 仮想マシン内の分配されたハードウェア状態管理
JP2010176471A (ja) * 2009-01-30 2010-08-12 Tachibana Eletech Co Ltd 接続機器利用システムおよびその方法
JP2011065679A (ja) * 2006-05-24 2011-03-31 Hitachi Ltd デバイス管理システム
JP2012069164A (ja) * 2007-11-21 2012-04-05 Industrial Technology Research Inst リモートインターフェイス装置、制御システム、及びそれらの方法
JP2013016165A (ja) * 2011-07-01 2013-01-24 Rsupport Co Ltd 遠隔デバイスドライバを利用した遠隔制御システム及び遠隔デバイスドライバを利用した遠隔制御方法
JP2013016166A (ja) * 2011-07-01 2013-01-24 Rsupport Co Ltd 遠隔デバイスドライバの提供システム及び遠隔デバイスドライバの提供方法
US8752046B2 (en) 2010-03-19 2014-06-10 Fujitsu Limited Virtual calculating machine system, virtual calculating machine control apparatus and virtual calculating machine control method
JP2017102776A (ja) * 2015-12-03 2017-06-08 日本電信電話株式会社 データ通信システムおよび方法

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050209842A1 (en) * 2004-03-16 2005-09-22 Digi International Inc. Remote USB port system and method
US8078732B2 (en) * 2004-10-13 2011-12-13 Boadin Technology, LLC System and method for plug and play between host and client
TWI288352B (en) * 2005-11-17 2007-10-11 Benq Corp Processing methods and systems for drivers
DE102005061662A1 (de) * 2005-12-22 2007-06-28 Giesecke & Devrient Gmbh Verfahren zum Installieren einer Hilfseinheit
US20080147928A1 (en) * 2006-10-05 2008-06-19 Richard Nicolet Transparent support of multiple bus interfaces on a device
US20080288709A1 (en) * 2007-05-15 2008-11-20 Imagestream Internet Solutions Wide area network connection platform
JP2009009330A (ja) * 2007-06-27 2009-01-15 Fujitsu Ltd 情報処理装置、情報処理システム及び情報処理装置の制御方法
US8260985B2 (en) * 2007-10-05 2012-09-04 Pano Logic, Inc. Universal serial bus assistance engine
US8010630B2 (en) * 2007-12-06 2011-08-30 Wyse Technology Inc. Local device redirection
US8789070B2 (en) 2007-12-06 2014-07-22 Wyse Technology L.L.C. Local device virtualization
FR2927181B1 (fr) * 2008-02-01 2013-07-26 Airbus France Procede et dispositif de commande securises pour terminal de maintenance deporte.
US8793331B2 (en) 2008-05-16 2014-07-29 Wyse Technology L.L.C. Multimedia redirection
JP4489129B2 (ja) * 2008-05-22 2010-06-23 シャープ株式会社 リモートusbデバイス使用システム
JP4609536B2 (ja) * 2008-06-18 2011-01-12 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置および画像処理システム
JP4582208B2 (ja) * 2008-06-19 2010-11-17 コニカミノルタビジネステクノロジーズ株式会社 画像処理システムおよび画像処理装置
US20100030853A1 (en) * 2008-07-09 2010-02-04 Aten International Co., Ltd. Remote desktop control system using usb interface and method thereof
JP4720882B2 (ja) * 2008-09-16 2011-07-13 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置
US8516079B2 (en) * 2008-09-25 2013-08-20 Aten International Co., Ltd. Remote desktop control system using USB interface and method thereof
US8521926B2 (en) * 2008-09-25 2013-08-27 Aten International Co., Ltd. Remote desktop control system using USB interface and method thereof
TW201027353A (en) * 2009-01-13 2010-07-16 Genesys Logic Inc Communicating system compatible to universal serial bus (USB) and method thereof
CN101795220B (zh) * 2009-02-03 2012-07-18 创惟科技股份有限公司 具备通用序列总线功能的通讯系统及其方法
WO2010138124A1 (en) * 2009-05-29 2010-12-02 Displaylink Corporation Loopback proxy
KR20110049418A (ko) 2009-11-05 2011-05-12 한국전자통신연구원 다중 호스트 상의 다중 가상머신을 지원하는 원격 usb 시스템 및 그 방법
US8200853B2 (en) * 2010-01-14 2012-06-12 Microsoft Corporation Extensions for USB driver interface functions
CN101908964B (zh) * 2010-08-17 2013-03-27 公安部第三研究所 远程虚拟密码设备认证方法
US8555409B2 (en) 2011-11-02 2013-10-08 Wyse Technolgoy Inc. System and method for providing private session-based access to a redirected USB device or local device
WO2013082783A1 (zh) * 2011-12-08 2013-06-13 华为技术有限公司 数据处理方法及设备
US9158461B1 (en) * 2012-01-18 2015-10-13 Western Digital Technologies, Inc. Measuring performance of data storage systems
CN103246618B (zh) * 2012-02-01 2016-02-24 中兴通讯股份有限公司 基于嵌入式系统的usb功能的实现方法及装置
KR20130107618A (ko) 2012-03-22 2013-10-02 한국전자통신연구원 Usb 디바이스 장치의 데이터를 클라이언트 단말을 통해 서버로 전송하는 데이터 처리 방법 및 클라이언트 단말
KR101720654B1 (ko) * 2012-09-14 2017-03-28 한국전자통신연구원 가상화 시스템 및 가상화 서비스 제공방법
CN105378692B (zh) 2013-07-03 2018-08-31 惠普发展公司,有限责任合伙企业 通用串行总线数据路由
WO2016186628A1 (en) * 2015-05-15 2016-11-24 Hewlett-Packard Development Company, L.P. Hardware bus redirection
US9813504B2 (en) 2015-08-03 2017-11-07 Citrix Systems, Inc. Virtualizing device management services on a multi-session platform
JP6693210B2 (ja) 2016-03-24 2020-05-13 日本電気株式会社 通信処理システム、通信処理方法、通信処理装置、通信管理装置およびそれらの制御方法と制御プログラム
US10721310B2 (en) * 2016-07-27 2020-07-21 Amzetta Technologies, Llc Device redirection support at thin client
US10216673B2 (en) * 2017-01-16 2019-02-26 International Business Machines Corporation USB device firmware sanitization
US10657245B2 (en) * 2017-03-14 2020-05-19 Wyse Technology L.L.C. Dynamically controlling access to devices
US11520939B2 (en) 2017-03-17 2022-12-06 International Business Machines Corporation Protecting computer systems from malicious USB devices via a USB firewall
CN109246435B (zh) * 2017-07-10 2022-03-15 中兴通讯股份有限公司 Usb设备重定向数据传输方法及装置、本地装置和远程服务器

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH117404A (ja) * 1997-06-17 1999-01-12 Toshiba Corp ネットワーク接続型scsi装置ならびに同装置を用いたファイルシステム
JPH11184793A (ja) * 1997-11-03 1999-07-09 Mustek Syst Inc 周辺機器制御システム
JP2000251012A (ja) * 1999-03-01 2000-09-14 Hitachi Ltd 帳票処理方法およびシステム
WO2000057587A1 (en) * 1999-03-19 2000-09-28 Filanet Corporation Tunneling between a bus and a network
WO2001025934A1 (fr) * 1999-10-05 2001-04-12 Fujitsu Limited Systeme serveur/client
JP2004172902A (ja) * 2002-11-19 2004-06-17 Canon Electronics Inc ネットワークスキャニングシステム
JP2004527817A (ja) * 2001-01-02 2004-09-09 ハン ギュ キム ネットワークに直接に取付可能なディスクシステム

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7704147B2 (en) * 1999-10-06 2010-04-27 Igt Download procedures for peripheral devices
US7761541B1 (en) 2000-10-25 2010-07-20 Nortel Networks Limited Service enabling technology
AU2002258358A1 (en) * 2000-10-27 2002-09-04 Softconnex Technologies Automatic embedded host configuration system and method
US6761636B2 (en) * 2001-01-16 2004-07-13 Fucom Company, Ltd. Real time data exchange system
US6973512B1 (en) * 2001-09-06 2005-12-06 Cypress Semiconductor Corp. Adaptive peripheral device driver and software call methodology for creating same
US7103788B1 (en) * 2001-10-31 2006-09-05 Microsoft Corporation Selective suspension of bus devices
US20030142661A1 (en) * 2002-01-28 2003-07-31 Masayuki Chatani System and method for distributing data between a telephone network and an entertainment network
JP2003325986A (ja) 2002-05-16 2003-11-18 Konami Computer Entertainment Studios Inc ビデオゲームシステム、通信方法、クライアント用通信プログラム及びサーバ用通信プログラム
US7082598B1 (en) * 2002-07-17 2006-07-25 Vmware, Inc. Dynamic driver substitution
US8504707B2 (en) * 2004-12-07 2013-08-06 Cisco Technology, Inc. Method and system for sending and receiving USB messages over a data network

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH117404A (ja) * 1997-06-17 1999-01-12 Toshiba Corp ネットワーク接続型scsi装置ならびに同装置を用いたファイルシステム
JPH11184793A (ja) * 1997-11-03 1999-07-09 Mustek Syst Inc 周辺機器制御システム
JP2000251012A (ja) * 1999-03-01 2000-09-14 Hitachi Ltd 帳票処理方法およびシステム
WO2000057587A1 (en) * 1999-03-19 2000-09-28 Filanet Corporation Tunneling between a bus and a network
WO2001025934A1 (fr) * 1999-10-05 2001-04-12 Fujitsu Limited Systeme serveur/client
JP2004527817A (ja) * 2001-01-02 2004-09-09 ハン ギュ キム ネットワークに直接に取付可能なディスクシステム
JP2004172902A (ja) * 2002-11-19 2004-06-17 Canon Electronics Inc ネットワークスキャニングシステム

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011065679A (ja) * 2006-05-24 2011-03-31 Hitachi Ltd デバイス管理システム
JP2008004110A (ja) * 2006-05-24 2008-01-10 Hitachi Ltd デバイス管理システム
JP2010505198A (ja) * 2006-09-29 2010-02-18 マイクロソフト コーポレーション 仮想マシン内の分配されたハードウェア状態管理
JP2008210115A (ja) * 2007-02-26 2008-09-11 Nec Corp リモートコンピュータ上でローカル端末のusbデバイスを操作するシステム、その方法及びそのプログラム
JP2008257419A (ja) * 2007-04-04 2008-10-23 Nec Electronics Corp 通信アダプタ及び通信アダプタのデータ転送方法
JP2012069164A (ja) * 2007-11-21 2012-04-05 Industrial Technology Research Inst リモートインターフェイス装置、制御システム、及びそれらの方法
JP2009200639A (ja) * 2008-02-19 2009-09-03 Canon Inc リモートコントローラ装置、コントロールシステム及び方法
JP2010176471A (ja) * 2009-01-30 2010-08-12 Tachibana Eletech Co Ltd 接続機器利用システムおよびその方法
US8752046B2 (en) 2010-03-19 2014-06-10 Fujitsu Limited Virtual calculating machine system, virtual calculating machine control apparatus and virtual calculating machine control method
JP2013016165A (ja) * 2011-07-01 2013-01-24 Rsupport Co Ltd 遠隔デバイスドライバを利用した遠隔制御システム及び遠隔デバイスドライバを利用した遠隔制御方法
JP2013016166A (ja) * 2011-07-01 2013-01-24 Rsupport Co Ltd 遠隔デバイスドライバの提供システム及び遠隔デバイスドライバの提供方法
US8799542B2 (en) 2011-07-01 2014-08-05 RSUPPORT Co. Ltd System and method for providing remote device driver
JP2017102776A (ja) * 2015-12-03 2017-06-08 日本電信電話株式会社 データ通信システムおよび方法

Also Published As

Publication number Publication date
DE602005005151T2 (de) 2009-04-30
CN100543707C (zh) 2009-09-23
US20110138013A1 (en) 2011-06-09
US8412800B2 (en) 2013-04-02
KR20060083116A (ko) 2006-07-20
US7912987B2 (en) 2011-03-22
EP1681824B1 (en) 2008-03-05
CN1804820A (zh) 2006-07-19
EP1681824A1 (en) 2006-07-19
ATE388572T1 (de) 2008-03-15
US20060161617A1 (en) 2006-07-20
JP5080007B2 (ja) 2012-11-21
DE602005005151D1 (de) 2008-04-17

Similar Documents

Publication Publication Date Title
JP5080007B2 (ja) アプリケーションサーバ環境におけるusbデバイス
JP5133886B2 (ja) リモートシステムのためのプラグ・アンド・プレイデバイスのリダイレクション
US10331501B2 (en) USB device redirection for remote systems
KR101130474B1 (ko) 총칭 usb 드라이버
US5974547A (en) Technique for reliable network booting of an operating system to a client computer
US20070174033A1 (en) Remote control device and method for accessing peripheral device remotely
US20130097339A1 (en) Communication with input/output system devices
JP2008210115A (ja) リモートコンピュータ上でローカル端末のusbデバイスを操作するシステム、その方法及びそのプログラム
JP2008539484A (ja) ユニバーサル・シリアル・バス機能のデリゲーション
JP2002007182A (ja) 外部記憶装置の共有ファイル管理方式
JP5528034B2 (ja) ブレード・センタにおいてブレード・サーバを管理するための方法、装置、およびプログラム
US20100169069A1 (en) Composite device emulation
JP2005302026A (ja) ネットワーク接続周辺装置にアクセスするためのコンピュータ可読媒体、方法およびコンピュータシステム
US6915524B2 (en) Method for controlling multiple storage devices from a single software entity
JP4612368B2 (ja) セキュリティコンフリクトを回避する、調整されたネットワークイニシエータ管理
WO2017084358A1 (zh) 相机参数读写方法、装置和终端设备
JP5995427B2 (ja) ストレージ・アプライアンス・システム、そのための方法、コンピュータ・プログラムおよびアプリケーション・サーバ
JP6281369B2 (ja) 通信システム及び通信プログラム
JP5359023B2 (ja) ログレベル変更システム
JP2007164572A (ja) ディスクアレイ装置及び制御方法並びにプログラム
JP2005055961A (ja) タスク間通信プログラム及びタスク間通信方法
JP2006330968A (ja) シリアルデータ送受信方法及びシリアルデータ送受信機器
JP2002157090A (ja) 電子ディスク装置用シーズ制御回路

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081208

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081208

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110701

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120306

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120706

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120709

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120709

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120730

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

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

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

Free format text: PAYMENT UNTIL: 20150907

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5080007

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

LAPS Cancellation because of no payment of annual fees