(57)【特許請求の範囲】
【請求項１】
シリアル・バス、ネットワークに接続するためのハードウェア・ネットワーク・コンポーネント（ＨＮＣ）、及び、シリアル・バスを越えて接続された周辺デバイスに接続するハードウェア・シリアル・コンポーネント（ＨＳＣ）を有する、リモート・コンピューティング・デバイスと、
ローカル・コンピューティング・デバイスであって、
シリアル・バスと、シリアル・バスを越えて周辺デバイスに接続するハードウェア・シリアル・コンポーネント（ＨＳＣ）と、
ネットワークに接続するためのハードウェア・ネットワーク・コンポーネント（ＨＮＣ）と、ハードウェア・ネットワーク・コンポーネント（ＨＮＣ）のためのネットワーク・ドライバと、
前記リモート・コンピューティング・デバイスの周辺デバイスのための第１の通信を発生するものであって、前記リモート・コンピューティング・デバイスの周辺デバイスが当該ローカル・コンピューティング・デバイスのシリアル・バスに接続されていないことを認識しない、アプリケーション・プログラムと、
当該ローカル・コンピューティング・デバイスのハードウェア・シリアル・コンポーネント（ＨＳＣ）のためのシリアル・ドライバであって、
前記リモート・コンピューティング・デバイスの周辺デバイスのための第１の通信であって当該ローカル・コンピューティング・デバイスの周辺デバイスのためのものではないにもかかわらず前記アプリケーション・プログラムから前記第１の通信を受け取り、
前記第１の通信を受け取った後に、前記リモート・コンピューティング・デバイスの前記周辺デバイスのための前記第１の通信であることを判別し、
前記リモート・コンピューティング・デバイスの前記周辺デバイスのための前記第１の通信であることを判別したことに応答して、前記リモート・コンピューティング・デバイスの前記シリアル・バスを越えて前記リモート・コンピューティング・デバイスの前記周辺デバイスへ送信する前記リモート・コンピューティング・デバイスの前記ハードウェア・シリアル・コンポーネント（ＨＳＣ）へ前記リモート・コンピューティング・デバイスの前記ハードウェア・ネットワーク・コンポーネント（ＨＮＣ）が中継するために、前記ネットワークを越えて前記リモート・コンピューティング・デバイスの前記ハードウェア・ネットワーク・コンポーネント（ＨＮＣ）へ伝送するため前記ネットワーク・ドライバに前記第１の通信を送信する、シリアル・ドライバとを含む、
前記ローカル・コンピューティング・デバイスと、
を有する、システム。
【請求項２】
前記ローカル・コンピューティング・デバイスが、
前記リモート・コンピューティング・デバイスの周辺デバイスのための第１のデバイス・ドライバと、
前記ローカル・コンピューティング・デバイスの周辺デバイスのための第２のデバイス・ドライバと、
を有する、請求項１に記載のシステム。
【請求項３】
前記ローカル・コンピューティング・デバイスの、シリアル・ドライバ、ネットワーク・ドライバ、及び、前記第１のデバイス・ドライバが、相互に対話して、前記ローカル・コンピューティング・デバイスが前記リモート・コンピューティング・デバイスの周辺デバイスと通信できるようにする、
請求項２に記載のシステム。
【請求項４】
前記ローカル・コンピューティング・デバイスの、シリアル・ドライバ、及び、前記第２のデバイス・ドライバが、相互に対話して、前記ローカル・コンピューティング・デバイスが前記ローカル・コンピューティング・デバイスの周辺デバイスと通信できるようにする、
請求項２に記載のシステム。
【請求項５】
アプリケーション・プログラムが、さらに、前記ローカル・コンピューティング・デバイスの周辺デバイスのための第２の通信を発生するものであって、
前記ローカル・コンピューティング・デバイスの、シリアル・ドライバが、さらに、
前記アプリケーション・プログラムから前記第２の通信を受け取るものであって、
前記第２の通信を受け取った後に、前記ローカル・コンピューティング・デバイスの前記周辺デバイスのための前記第２の通信であることを判別し、
前記ローカル・コンピューティング・デバイスの前記周辺デバイスのための前記第２の通信であることを判別したことに応答して、前記第２の通信を、前記ローカル・コンピューティング・デバイスの前記シリアル・バスを越えて前記ローカル・コンピューティング・デバイスの周辺デバイスへと送信する、
請求項１に記載のシステム。
【請求項６】
コンピューティング・デバイスであって、
シリアル・バスと、シリアル・バスを越えて周辺デバイスに接続するハードウェア・シリアル・コンポーネント（ＨＳＣ）と、
ネットワークに接続するためのハードウェア・ネットワーク・コンポーネント（ＨＮＣ）と、ハードウェア・ネットワーク・コンポーネント（ＨＮＣ）のためのネットワーク・ドライバと、
ネットワークに接続されているリモート・コンピューティング・デバイスのシリアル・バスに接続されている周辺デバイスのための第１の通信を発生するものであって、リモート・コンピューティング・デバイスの周辺デバイスが当該コンピューティング・デバイスのシリアル・バスに接続されていないことを認識しない、アプリケーション・プログラムと、
当該コンピューティング・デバイスのハードウェア・シリアル・コンポーネント（ＨＳＣ）のためのシリアル・ドライバであって、
前記リモート・コンピューティング・デバイスの周辺デバイスのための第１の通信であって当該コンピューティング・デバイスの周辺デバイスのためのものではないにもかかわらず前記アプリケーション・プログラムから前記第１の通信を受け取り、
前記第１の通信を受け取った後に、前記リモート・コンピューティング・デバイスの前記周辺デバイスのための前記第１の通信であることを判別し、
前記リモート・コンピューティング・デバイスの前記周辺デバイスのための前記第１の通信であることを判別したことに応答して、前記リモート・コンピューティング・デバイスの前記シリアル・バスを越えて前記リモート・コンピューティング・デバイスの前記周辺デバイスへ送信する前記リモート・コンピューティング・デバイスのハードウェア・シリアル・コンポーネント（ＨＳＣ）へ前記リモート・コンピューティング・デバイスのハードウェア・ネットワーク・コンポーネント（ＨＮＣ）が中継するために、前記ネットワークを越えて前記リモート・コンピューティング・デバイスの前記ハードウェア・ネットワーク・コンポーネント（ＨＮＣ）へ伝送するため前記ネットワーク・ドライバに前記第１の通信を送信する、シリアル・ドライバとを含む、
前記コンピューティング・デバイス。
【請求項７】
前記コンピューティング・デバイスが、
前記リモート・コンピューティング・デバイスの周辺デバイスのための第１のデバイス・ドライバと、
前記コンピューティング・デバイスの周辺デバイスのための第２のデバイス・ドライバと、
を有する、請求項６に記載のコンピューティング・デバイス。
【請求項８】
前記コンピューティング・デバイスの、シリアル・ドライバ、ネットワーク・ドライバ、及び、前記第１のデバイス・ドライバが、相互に対話して、前記コンピューティング・デバイスが前記リモート・コンピューティング・デバイスの周辺デバイスと通信できるようにする、
請求項７に記載のコンピューティング・デバイス。
【請求項９】
前記コンピューティング・デバイスの、シリアル・ドライバ、及び、前記第２のデバイス・ドライバが、相互に対話して、前記コンピューティング・デバイスが前記コンピューティング・デバイスの周辺デバイスと通信できるようにする、
請求項７に記載のコンピューティング・デバイス。
【請求項１０】
アプリケーション・プログラムが、さらに、前記コンピューティング・デバイスの周辺デバイスのための第２の通信を発生するものであって、
前記コンピューティング・デバイスの、シリアル・ドライバが、さらに、
前記アプリケーション・プログラムから前記第２の通信を受け取るものであって、
前記第２の通信を受け取った後に、前記コンピューティング・デバイスの前記周辺デバイスのための前記第２の通信であることを判別し、
前記コンピューティング・デバイスの前記周辺デバイスのための前記第２の通信であることを判別したことに応答して、前記第２の通信を、前記コンピューティング・デバイスの前記シリアル・バスを越えて前記コンピューティング・デバイスの周辺デバイスへと送信する、
請求項６に記載のコンピューティング・デバイス。
【請求項１１】
ローカル・コンピューティング・デバイスのシリアル・バスに接続されているハードウェア・シリアル・コンポーネント（ＨＳＣ）のためのシリアル・ドライバによって、ローカル・コンピューティング・デバイス上で実行されているアプリケーション・プログラムから、前記ローカル・コンピューティング・デバイスの周辺デバイスのためのものではないにもかかわらず、前記ローカル・コンピューティング・デバイスにネットワークで接続されたリモート・コンピューティング・デバイスのシリアル・バスを越えて当該シリアル・バスに接続された周辺デバイスのための第１の通信であって、アプリケーション・プログラムがリモート・コンピューティング・デバイスの周辺デバイスが前記ローカル・コンピューティング・デバイスのシリアル・バスに接続されていないことを認識しないところの、前記第１の通信を受け取るステップと、
前記第１の通信を受け取った後に、前記リモート・コンピューティング・デバイスの前記周辺デバイスのための前記第１の通信であることを前記シリアル・ドライバによって判別するステップと、
前記リモート・コンピューティング・デバイスの前記周辺デバイスのための前記第１の通信であることを判別したことに応答して、前記リモート・コンピューティング・デバイスの前記シリアル・バスを越えて前記リモート・コンピューティング・デバイスの前記周辺デバイスへ送信する前記リモート・コンピューティング・デバイスのハードウェア・シリアル・コンポーネント（ＨＳＣ）へ前記ネットワークに接続された前記リモート・コンピューティング・デバイスのハードウェア・ネットワーク・コンポーネント（ＨＮＣ）が中継するために、前記ネットワークを越えて前記リモート・コンピューティング・デバイスの前記ハードウェア・ネットワーク・コンポーネント（ＨＮＣ）へ伝送するため、前記ネットワークに接続された前記ローカル・コンピューティング・デバイスのハードウェア・ネットワーク・コンポーネント（ＨＮＣ）のためのネットワーク・ドライバに前記第１の通信を前記シリアル・ドライバによって送信するステップと、
を有する、方法。
【請求項１２】
前記ローカル・コンピューティング・デバイスが、
前記リモート・コンピューティング・デバイスの周辺デバイスのための第１のデバイス・ドライバと、
前記ローカル・コンピューティング・デバイスの周辺デバイスのための第２のデバイス・ドライバと、
を有する、請求項１１に記載の方法。
【請求項１３】
前記ローカル・コンピューティング・デバイスの、シリアル・ドライバ、ネットワーク・ドライバ、及び、前記第１のデバイス・ドライバが、相互に対話して、前記ローカル・コンピューティング・デバイスが前記リモート・コンピューティング・デバイスの周辺デバイスと通信できるようにする、
請求項１２に記載の方法。
【請求項１４】
前記ローカル・コンピューティング・デバイスの、シリアル・ドライバ、及び、前記第２のデバイス・ドライバが、相互に対話して、前記ローカル・コンピューティング・デバイスが前記ローカル・コンピューティング・デバイスの周辺デバイスと通信できるようにする、
請求項１２に記載の方法。
【請求項１５】
アプリケーション・プログラムが、さらに、前記ローカル・コンピューティング・デバイスの周辺デバイスのための第２の通信を発生するものであって、
前記ローカル・コンピューティング・デバイスの、シリアル・ドライバが、さらに、
前記アプリケーション・プログラムから前記第２の通信を受け取るものであって、
前記第２の通信を受け取った後に、前記ローカル・コンピューティング・デバイスの前記周辺デバイスのための前記第２の通信であることを判別し、
前記ローカル・コンピューティング・デバイスの前記周辺デバイスのための前記第２の通信であることを判別したことに応答して、前記第２の通信を、前記ローカル・コンピューティング・デバイスの前記シリアル・バスを越えて前記ローカル・コンピューティング・デバイスの周辺デバイスへと送信する、
請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にコンピューティング・デバイスのシリアル・バスに接続された周辺デバイスに関し、シリアル・バスはＲＳ−４８５シリアル・バスとすることができる。より具体的に言えば、本発明は、他のコンピューティング・デバイスのシリアル・バスに接続されたこうした周辺デバイスにリモートにアクセスするコンピューティング・デバイスに関する。
【背景技術】
【０００２】
周辺デバイスは、一般に、コンピューティング・デバイスの機能を拡張するためにコンピューティング・デバイスに接続される。周辺デバイスは、キャッシュ・レジスタ、ハンドヘルド・バー・コード・スキャナ、および他のタイプのＰＯＳデバイスなどの、販売時点管理（ＰＯＳ）デバイスを含む。いくつかのタイプの周辺デバイスがコンピューティング・デバイスのシリアル・バスに接続される。たとえばシリアル・バスは、ＲＳ−４８５シリアル・バス、ＲＳ−４２３シリアル・バス、ＲＳ−４２２シリアル・バス、またはＲＳ−２３２シリアル・バスとすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、シリアル・バスに接続された周辺デバイスへのリモート・アクセスをより効果的にすることにある。
【課題を解決するための手段】
【０００４】
本発明の実施形態のシステムは、いくつかのコンピューティング・デバイスを含む。各コンピューティング・デバイスは、ハードウェア・ネットワーク・コンポーネント、ハードウェア・シリアル・コンポーネント、デバイス・ドライバ、ネットワーク・ドライバ、およびシリアル・ドライバを含む。ハードウェア・ネットワーク・コンポーネントは、ネットワークを介してコンピューティング・デバイスを他のコンピューティング・デバイスに接続する。ハードウェア・シリアル・コンポーネントは、シリアル・バスを介してコンピューティング・デバイスを１つまたは複数の周辺デバイスに接続する。各デバイス・ドライバは、コンピューティング・デバイスの周辺デバイスのうちの１つのため、または他のコンピューティング・デバイスの周辺デバイスのうちの１つのためのものである。ネットワーク・ドライバはハードウェア・ネットワーク・コンポーネントのため、シリアル・ドライバはハードウェア・シリアル・コンポーネントのためのものである。各コンピューティング・デバイス内で、シリアル・ドライバ、ネットワーク・ドライバ、およびデバイス・ドライバは、コンピューティング・デバイスがネットワークを介して他のコンピューティング・デバイスの周辺デバイスと通信できるように対話する。
【０００５】
本発明の実施形態の方法は、第１の周辺デバイスに関する第１のデータを、第１のコンピューティング・デバイスの第１のアプリケーション・プログラムから、第１の周辺デバイスのための第１のコンピューティング・デバイスの第１のデバイス・ドライバへと送信する。方法は、第１のデバイス・ドライバによって第１のデータを含む第１のフレームを作成する。方法は、第１のフレームを、第１のデバイス・ドライバから第１のコンピューティング・デバイスの第１のシリアル・ドライバへと送信する。方法は、第１のシリアル・ドライバによって、第１の周辺デバイスが第１のコンピューティング・デバイスの第１のシリアル・バスに接続されるか、または第１の周辺デバイスが第２のコンピューティング・デバイスの第２のシリアル・バスに接続されるかを判別する。第１の周辺デバイスが第２のシリアル・バスに接続される場合、方法は、第１のシリアル・ドライバによって第１のフレームを第１のネットワーク・パケット内にラッピングし（wrap）、この第１のネットワーク・パケットを第１のコンピューティング・デバイスから第２のコンピューティング・デバイスへとネットワークを介して送信する。
【０００６】
一実施形態では、方法は、第２のコンピューティング・デバイスによって、ネットワークを介して第１のコンピューティング・デバイスから第２のネットワーク・パケットも受信する。方法は、第２のコンピューティング・デバイスの第２のシリアル・ドライバによって、第２のネットワーク・パケットが、第２の周辺デバイスに関連付けられた第２のデータの第２のフレームを内部にラッピングしているかどうかを判別する。第２のネットワーク・パケットが第２の周辺デバイスに関連付けられた第２のデータの第２のフレームを内部にラッピングしている場合、方法は、第２のシリアル・ドライバによって、第２のネットワーク・パケットから第２のフレームをアンラッピングする。次に方法は、第２のシリアル・ドライバによって、第２の周辺デバイスが第２のシリアル・バスまたは第１のシリアル・バスのいずれに接続されるかを判別する。第２の周辺デバイスが第１のシリアル・バスに接続される場合、方法は、第２のフレームを、第２のシリアル・ドライバから第２の周辺デバイスのための第２のコンピューティング・デバイスの第２のデバイス・ドライバへと送信する。次に方法は、第２のデバイス・ドライバによって第２のフレームから第２のデータを復号し、第２のデータを、第２のデバイス・ドライバから第２のコンピューティング・デバイスの第２のアプリケーション・プログラムへと送信する。
【０００７】
本発明の実施形態のコンピュータ・プログラム（製品）は、（内部に）コンピュータ読み取り可能コード（が実施されたコンピュータ読み取り可能ストレージ媒体）を含む。コンピュータ読み取り可能コードは、第１のデバイス・ドライバおよび第２のデバイス・ドライバを有する第１のコンピューティング・デバイスによって実行可能である。第１のデバイス・ドライバは、第１のコンピューティング・デバイスの第１のシリアル・バスに接続された第１の周辺デバイスのためのものである。第２のデバイス・ドライバは、第２のコンピューティング・デバイスの第２のシリアル・バスに接続された第２の周辺デバイスのためのものである。コンピュータ読み取り可能コードは、デバイス・ドライバのうちの１つから第１のデータの第１のフレームを受信するための、第１のコンピュータ読み取り可能コードを含む。コンピュータ読み取り可能コードは、第１のデータの第１のフレームが第２の周辺デバイスを備えた第１の周辺デバイスに関連付けられるかどうかを判別するための、第２のコンピュータ読み取り可能コードを含む。コンピュータ読み取り可能コードは、第１のデータの第１のフレームを第１のネットワーク・パケット内にラッピングするため、および、第１のデータの第１のフレームをネットワークを介して第２のコンピューティング・デバイスへと送信させるための、第３のコンピュータ読み取り可能コードを含み、第１のデータの第１のフレームは第２の周辺デバイスに関連付けられる。
【０００８】
本発明の実施形態のコンピューティング・デバイスは、ハードウェア・ネットワーク・コンポーネント、デバイス・ドライバ、およびネットワーク・ドライバを含む。ハードウェア・ネットワーク・コンポーネントは、ネットワークを介してコンピューティング・デバイスを１つまたは複数の他のコンピューティング・デバイスに接続するためのものである。デバイス・ドライバは、他のコンピューティング・デバイスのうちの１つのシリアル・バスに接続された周辺デバイスのためのものである。ネットワーク・ドライバは、ハードウェア・ネットワーク・コンポーネントのためのものである。ネットワーク・ドライバおよびデバイス・ドライバは、コンピューティング・デバイスがネットワークを介して周辺デバイスと通信できるように対話する。
【０００９】
本書で参照される図面は、本明細書の一部を形成する。図面に示される特徴は、特に明示的に示されていない限り、本発明のすべての実施形態ではなく、本発明のいくつかの例示的実施形態を単に例示するためのものであり、その他の点で反対の含意はない。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に従った、周辺デバイスの接続先であるシリアル・バスを有するコンピューティング・デバイスのシステムを示す図である。
【図２】本発明の実施形態に従った、図１のシステムに関して実行可能な方法を示す流れ図である。
【図３】本発明の実施形態に従った、図１のシステムに関して実行可能な他の方法を示す流れ図である。
【図４】本発明の実施形態に従った、典型的なネットワーク・プロトコル・スタックに関して代表的なネットワーク・パケットを示す図である。
【図５】本発明の実施形態に従った、コンピューティング・デバイスを示す図である。
【発明を実施するための形態】
【００１１】
以下の本発明の例示的諸実施形態の詳細な説明では、本明細書の一部を形成する添付の図面が参照され、この図面には、本発明が実施可能な特定の例示的諸実施形態が例として示される。これらの諸実施形態は、当業者であれば本発明を実施できるように十分詳細に説明されている。他の諸実施形態が使用可能であり、本発明の趣旨または範囲を逸脱することなく、論理的、機械的、および他の変更が可能である。したがって、以下の詳細な説明は限定的な意味ではなく、本発明の実施形態の範囲は添付の特許請求の範囲によってのみ定義される。
【００１２】
背景のセクションで示されるように、いくつかのタイプの販売時点管理（ＰＯＳ）デバイスなどのいくつかのタイプの周辺デバイスが、ＲＳ−４８５シリアル・バス、ＲＳ−４２３シリアル・バス、ＲＳ−４２２シリアル・バス、またはＲＳ−２３２シリアル・バスなどの、コンピューティング・デバイスのシリアル・バスに接続される。特定のコンピューティング・デバイスのシリアル・バスに接続されたこうした周辺デバイスは、特定のコンピューティング・デバイスに対してローカルであると言われ、任意の他のコンピューティング・デバイスに対してリモートであると言われる。コンピューティング・デバイスは、通常、他のコンピューティング・デバイスのシリアル・バスに接続された周辺デバイスとは通信不能である。すなわち、シリアル・バスに接続された周辺デバイスは、通常、ローカル・コンピューティング・デバイスとのみ通信可能であり、リモート・コンピューティング・デバイスとは通信不能である。
【００１３】
これに比べて本発明の諸実施形態は、コンピューティング・デバイスが、他のコンピューティング・デバイスのシリアル・バスに接続された周辺デバイスと通信できるようにする。すなわち、本発明の諸実施形態は、シリアル・バスに接続された周辺デバイスが、リモート・コンピューティング・デバイスならびにローカル・コンピューティング・デバイスと通信できるようにする。したがって、所与のコンピューティング・デバイスは、本発明の諸実施形態に従って、所与のコンピューティング・デバイスのシリアル・バスに接続された周辺デバイス、ならびに他のコンピューティング・デバイスのシリアル・バスに接続された周辺デバイスと、通信可能である。
【００１４】
図１は、本発明の実施形態に従ったシステム１００を示す。システム１００は、集合的にコンピューティング・デバイス１０２と呼ばれる２つのコンピューティング・デバイス１０２Ａおよび１０２Ｂを含む。しかしながら他の実施形態では、コンピューティング・デバイス１０２が２つより多くても良い。コンピューティング・デバイス１０２は、集合的にシリアル・バス１０４と呼ばれるシリアル・バス１０４Ａおよび１０４Ｂを、それぞれ含む。シリアル・バス１０４は、一実施形態では、ＲＳ−４８５シリアル・バス、ＲＳ−４２３シリアル・バス、ＲＳ−４２２シリアル・バス、またはＲＳ−２３２シリアル・バスとすることができる。
【００１５】
シリアル・バス１０４には、集合的に周辺デバイス１０６と呼ばれる周辺デバイス１０６Ａおよび１０６Ｂが、それぞれ接続される。図１の例では、各シリアル・バス１０４に１つの周辺デバイス１０６が接続されている。しかしながら他の実施形態では、特に当該のシリアル・バス１０４が、ＲＳ−４８５シリアル・バスのようなマルチポイントまたはマルチドロップのシリアル・バスである場合、各シリアル・バス１０４に複数の周辺デバイス１０６が接続されてもよい。周辺デバイス１０６は、一実施形態では、キャッシュ・レジスタ、ハンドヘルド・バー・コード・スキャナ、および他のタイプのＰＯＳデバイスなどの、ＰＯＳデバイスとすることができる。
【００１６】
周辺デバイス１０６Ａはコンピューティング・デバイス１０２Ａのシリアル・バス１０４Ａに接続されているため、周辺デバイス１０６Ａはコンピューティング・デバイス１０２Ａに対してローカルである。同様に、周辺デバイス１０６Ｂはコンピューティング・デバイス１０２Ｂのシリアル・バス１０４Ｂに接続されているため、周辺デバイス１０６Ｂはコンピューティング・デバイス１０２Ｂに対してローカルである。周辺デバイス１０６Ａはコンピューティング・デバイス１０２Ｂのシリアル・バス１０４Ｂに接続されていないため、周辺デバイス１０６Ａはコンピューティング・デバイス１０２Ｂに対してリモートである。同様に、周辺デバイス１０６Ｂはコンピューティング・デバイス１０２Ａのシリアル・バス１０４Ａに接続されていないため、周辺デバイス１０６Ｂはコンピューティング・デバイス１０２Ａに対してリモートである。
【００１７】
コンピューティング・デバイス１０２は、集合的にハードウェア・シリアル・コンポーネント１０８と呼ばれるハードウェア・シリアル・コンポーネント１０８Ａおよび１０８Ｂを、それぞれ含む。ハードウェア・シリアル・コンポーネント１０８は、それぞれ、対応するシリアル・バス１０４を介して周辺デバイス１０６と通信するために、対応するコンピューティング・デバイス１０２のための物理コネクタまたはポート、および任意の必要なハードウェアを含む。たとえば各ハードウェア・シリアル・コンポーネント１０８は、この点において、好適なマイクロコントローラを含むことができる。
【００１８】
コンピューティング・デバイス１０２は、同様に、集合的にハードウェア・ネットワーク・コンポーネント１１４と呼ばれるハードウェア・ネットワーク・コンポーネント１１４Ａおよび１１４Ｂを、それぞれ含む。ハードウェア・ネットワーク・コンポーネント１１４は、それぞれ、ネットワーク１１２と通信するために、対応するコンピューティング・デバイス１０２のための物理コネクタまたはポート、および任意の必要なハードウェアを含む。たとえば各ハードウェア・ネットワーク・コンポーネント１１４は、ネットワーク・インターフェース・コントローラ（ＮＩＣ）とするか、またはこれを含むことができる。ネットワーク１１２と通信するハードウェア・ネットワーク・コンポーネント１１４を介して、コンピューティング・デバイス１０２は互いに通信的に相互接続される。
【００１９】
コンピューティング・デバイス１０２は、集合的にアプリケーション・プログラム１２２と呼ばれるアプリケーション・プログラム１２２Ａおよび１２２Ｂを、それぞれ含む。アプリケーション・プログラム１２２は、それぞれ、特に周辺デバイス１０６に関して、所望の機能を実行するための、対応するコンピューティング・デバイス１０２のオペレーティング・システム上で実行するコンピュータ・プログラムである。たとえば、周辺デバイス１０６がバー・コード・スキャナである場合、アプリケーション・プログラム１２２は、デバイス１０６によってスキャンされたバー・コードによって表される情報を受信し、この情報を処理することができる。この点において、アプリケーション・プログラム１２２は周辺デバイス１０６と対話するものと言うことができる。
【００２０】
コンピューティング・デバイス１０２は、集合的にシリアル・ドライバ１１０と呼ばれるシリアル・ドライバ１１０Ａおよび１１０Ｂを、それぞれ含む。シリアル・ドライバ１１０は、それぞれ、対応するコンピューティング・デバイス１０２のオペレーティング・システム内にインストールされたドライバ・コンピュータ・プログラムであるため、結果として、対応するハードウェア・シリアル・コンポーネント１０８ならびに対応するシリアル・バス１０４には、ソフトウェアによってアクセス可能である。たとえば、コンピューティング・デバイス１０２Ａに関して、シリアル・ドライバ１１０Ａはコンピューティング・デバイス１０２Ａのオペレーティング・システム内にインストールされるため、結果としてハードウェア・シリアル・コンポーネント１０８Ａならびに対応するシリアル・バス１０４Ａには、ソフトウェアによってアクセス可能である。コンピューティング・デバイス１０２Ｂについても、ハードウェア・シリアル・コンポーネント１０８Ｂおよびシリアル・バス１０４Ｂとの関連でシリアル・ドライバ１１０Ｂに関して同様である。
【００２１】
コンピューティング・デバイス１０２は、集合的にデバイス・ドライバ１１８と呼ばれるデバイス・ドライバ１１８Ａおよび１１８Ｂを、それぞれ含む。デバイス・ドライバ１１８はそれぞれ、具体的に周辺デバイス１０６Ａにアクセスするために、対応するコンピューティング・デバイス１０２のオペレーティング・システム内にインストールされたドライバ・コンピュータ・プログラムである。たとえば、コンピューティング・デバイス１０２Ａに関して、デバイス・ドライバ１１８Ａがコンピューティング・デバイス１０２Ａのオペレーティング・システム内にインストールされるため、結果として周辺デバイス１０６Ａには、アプリケーション・プログラム１２２Ａのようなソフトウェアによってアクセス可能である。コンピューティング・デバイス１０２Ｂについても、デバイス・ドライバ１１８Ｂ、周辺デバイス１０６Ａ、およびアプリケーション・プログラム１２２Ｂに関して同様である。
【００２２】
しかしながら、特にデバイス・ドライバ１１８Ｂは、周辺デバイス１０６Ａがコンピューティング・デバイス１０２Ｂのシリアル・バス１０４Ｂに接続されていないことを認識しないことに留意されたい。この点において、デバイス・ドライバ１１８Ｂは、デバイス・ドライバ１１８Ａが符号化されるのとまったく同様に符号化することができる。さらに、デバイス・ドライバ１１８Ｂは周辺デバイス１０６Ａがシリアル・バス１０４Ｂに接続されていないことを認識しないため、アプリケーション・プログラム１２２Ｂも、周辺デバイス１０６Ａがシリアル・バス１０４Ｂに接続されていないことを認識しない。
【００２３】
コンピューティング・デバイス１０２は、集合的にデバイス・ドライバ１２０と呼ばれるデバイス・ドライバ１２０Ａおよび１２０Ｂも、それぞれ含む。デバイス・ドライバ１２０はそれぞれ、具体的に周辺デバイス１０６Ｂにアクセスするために、対応するコンピューティング・デバイス１０２のオペレーティング・システム内にインストールされたドライバ・コンピュータ・プログラムである。たとえば、コンピューティング・デバイス１０２Ａに関して、デバイス・ドライバ１２０Ａはコンピューティング・デバイス１０２Ａのオペレーティング・システム内にインストールされるため、結果として周辺デバイス１０６Ｂにはアプリケーション・プログラム１２２Ａのようなソフトウェアによってアクセス可能である。コンピューティング・デバイス１０２Ｂについても、デバイス・ドライバ１２０Ｂ、周辺デバイス１０６Ｂ、およびアプリケーション・プログラム１２２Ｂに関して同様である。
【００２４】
しかしながら、特にデバイス・ドライバ１１８Ａは、周辺デバイス１０６Ｂがコンピューティング・デバイス１０２Ａのシリアル・バス１０４Ａに接続されていないことを認識しないことに留意されたい。この点において、デバイス・ドライバ１２０Ａは、デバイス・ドライバ１２０Ｂが符号化されるのとまったく同様に符号化することができる。さらに、デバイス・ドライバ１１８Ａは周辺デバイス１０６Ｂがシリアル・バス１０４Ａに接続されていないことを認識しないため、アプリケーション・プログラム１２２Ａも、周辺デバイス１０６Ｂがシリアル・バス１０４Ａに接続されていないことを認識しない。
【００２５】
コンピューティング・デバイス１０２は、集合的にネットワーク・ドライバ１１６と呼ばれるネットワーク・ドライバ１１６Ａおよび１１６Ｂを、それぞれ含む。ネットワーク・ドライバ１１６は、それぞれ、対応するコンピューティング・デバイス１０２のオペレーティング・システム内にインストールされたドライバ・コンピュータ・プログラムであるため、結果として対応するハードウェア・ネットワーク・コントローラ１１４ならびにネットワーク１１２にはソフトウェアによってアクセス可能である。たとえば、コンピューティング・デバイス１０２Ａに関して、ネットワーク・ドライバ１１６Ａがコンピューティング・デバイス１０２Ａのオペレーティング・システム内にインストールされるため、結果としてハードウェア・ネットワーク・コントローラ１１４Ａならびにネットワーク１１２には、ソフトウェアによってアクセス可能である。コンピューティング・デバイス１０２Ｂについても、ハードウェア・ネットワーク・コントローラ１１４Ｂおよびネットワーク１１２との関連でネットワーク・ドライバ１１６Ｂに関して同様である。
【００２６】
前述のように、典型的には、コンピューティング・デバイスは他のコンピューティング・デバイスのシリアル・バスに接続された周辺デバイスにはアクセスできないが、むしろ、それ自体のシリアル・バスに接続された周辺デバイスにのみアクセスできる。たとえば図１に関して、典型的にはコンピューティング・デバイス１０２Ａは周辺デバイス１０６Ｂにアクセスできず、典型的にはコンピューティング・デバイス１０２Ｂは周辺デバイス１０６Ａにアクセスできない。しかしながら本発明の諸実施形態は、コンピューティング・デバイス１０２Ａを、周辺デバイス１０６Ａに加えて周辺デバイス１０６Ｂにもアクセス可能にし、コンピューティング・デバイス１０２Ｂを、周辺デバイス１０６Ｂに加えて周辺デバイス１０６Ａにもアクセス可能にする。
【００２７】
これは、コンピューティング・デバイス１０２がネットワーク１１２を介してリモート周辺デバイス１０６にアクセスできるようにするために互いに対話する、各コンピューティング・デバイス１０２内の、シリアル・ドライバ１１０、ネットワーク・ドライバ１１６、およびデバイス・ドライバ１１８および１２０によって達成される。シリアル・ドライバ１１０は、従来技術に比べて、リモート周辺デバイス１０６に対するコンピューティング・デバイス１０２からの要求がネットワーク１１２を介して送信されるように修正されている。シリアル・ドライバ１１０は、従来技術に比べて、リモート・コンピューティング・デバイス１０２に向けての周辺デバイス１０６からの応答は、ネットワーク１１２を介して送信されるようにも修正されている。比較すると、デバイス・ドライバ１１８および１２０は、従来技術に比べて変更されないままとすることができる。ネットワーク・ドライバ１１６は、ネットワーク・ドライバ１１６が実行する前にネットワーク１１２を介して受信されたネットワーク・パケットをシリアル・ドライバ１１０が検査する範囲内で、従来技術に比べて修正することができる。シリアル・ドライバ１１０がどのように修正されるかについては、具体的に、図２および図３に関してそれらの機能の説明によって記述される。
【００２８】
図２は、本発明の実施形態に従って、データが、周辺デバイス１０６Ａまたは周辺デバイス１０６Ｂのいずれかなどの周辺デバイスへと、コンピューティング・デバイス１０２Ａのアプリケーション・プログラム１２２Ａによって送信されるのを例示的に表す方法を示す。アプリケーション・プログラム１２２Ａは、周辺デバイスに関するデータを周辺デバイスのためのデバイス・ドライバに送信する（２０２）。たとえば、アプリケーション・プログラム１２２Ａが周辺デバイス１０６Ａに関するデータを送信している場合、データはデバイス・ドライバ１１８Ａへと送信されるが、プログラム１２２Ａが周辺デバイス１０６Ｂに関するデータを送信している場合、データはデバイス・ドライバ１２０Ａへと送信される。
【００２９】
当該のデバイス・ドライバはアプリケーション・プログラム１２２Ａからデータを受信し、そのデータを含むフレームを作成して、そのフレームをシリアル・ドライバ１１０Ａへと送信する（２０４）。フレームは、当該のシリアル・バス上の所期の周辺デバイスを識別するデータ構造である。たとえば、シリアル・バス上に複数の周辺デバイスが存在する場合、具体的に１つのこうした周辺デバイスに向けてのデータは、この周辺デバイスを識別するフレーム内に含められる。このフレームは、たとえばＲＳ−４８５フレームとすることが可能であり、データの送信者、データの整合性を保証するためのチェックサム値、ならびに他の情報を識別することも可能である。
【００３０】
シリアル・ドライバ１１０Ａはフレームを受信し、フレームのデータが関連付けられている周辺デバイスが、シリアル・バス１０４Ａまたはシリアル・バス１０４Ｂのいずれに接続されているかを判別する（２０６）。たとえば一実施形態では、シリアル・ドライバ１１０Ａは、メディア・アクセス・コントローラ（ＭＡＣ）アドレスなどによってシステム１００内の各コンピューティング・デバイス１０２のテーブルを、ならびに、各コンピューティング・デバイス１０２のシリアル・バス１０４に接続された各周辺デバイス１０６のテーブルを維持する。次にこのテーブルを参照することによって、シリアル・ドライバ１１０Ａは、フレームのデータが関連付けられている周辺デバイスが、ローカル・シリアル・バス１０４Ａまたはリモート・シリアル・バス１０４Ｂのいずれに接続されているかを判別する。
【００３１】
当該の周辺デバイスがローカル・シリアル・バス１０４Ａに接続されている場合、シリアル・ドライバ１１０Ａは、ハードウェア・シリアル・コンポーネント１０８Ａを介し、シリアル・バス１０４Ａを通じて周辺デバイスへとフレームを送信する（２０８）。しかしながら、当該の周辺デバイスがリモート・シリアル・バス１０４Ｂに接続されている場合、シリアル・ドライバ１１０Ａはフレームをネットワーク・パケット内にラッピングし、このネットワーク・パケットをネットワーク・ドライバ１１６Ａへと送信する（２１２）。ネットワーク・ドライバ１１６Ａはネットワーク・パケットを受信し、これを周辺デバイス１０６Ｂへの伝送用に、コンピューティング・デバイス１０２Ｂへと送信する（２１４）。シリアル・ドライバ１１０Ａが内部にフレームをラッピングしているネットワーク・パケットは、コンピューティング・デバイス１０２Ｂを、シリアル・バス１０４Ｂに対してローカルなコンピューティング・デバイスであるものと識別する。ネットワーク・パケットの構造について、以下の詳細な説明でより詳細に説明する。
【００３２】
アプリケーション・プログラム１２２Ａあるいはデバイス・ドライバ１１８Ａまたは１２０Ａは、いずれも、プログラム１２２Ａのデータの送信先である周辺デバイスが、ローカル・シリアル・バス１０４Ａに接続されているか否かを認識していないことに留意されたい。アプリケーション・プログラム１２２Ａは、単に、周辺デバイスのための適切なデバイス・ドライバ１１８Ａまたは１２０Ａへとデータを送信するのみである。デバイス・ドライバ１１８Ａまたは１２０Ａは、そのデータを含むフレームを作成し、このフレームをシリアル・ドライバ１１０Ａへと送信するのみである。周辺デバイスがローカルの周辺デバイスであるかリモートの周辺デバイスであるかを判別するのがシリアル・ドライバ１１０Ａである。前者の場合、シリアル・ドライバ１１０Ａは、周辺デバイスが受信するためにシリアル・バス１０４Ａを介してフレームを送信する。
【００３３】
後者の場合、シリアル・ドライバ１１０Ａは、フレームをネットワーク・パケット内にラッピングし、周辺デバイスが接続されているシリアル・バスのローカル・コンピューティング・デバイスへ伝送するために、このネットワーク・パケットをネットワーク・ドライバ１１６Ａへと送信する。ネットワーク・ドライバ１１６Ａは、ハードウェア・ネットワーク・コンポーネント１１４Ａを通じ、ネットワーク１１２を介して、当該のローカル・コンピューティング・デバイスへとネットワーク・パケットを送信する。ネットワーク・ドライバ１１６Ａも、ネットワーク・ドライバ１１６Ａがネットワーク１１２を介してネットワーク・パケットを伝送する限りは、任意の他のネットワーク・パケットとまったく同様に、所期の周辺デバイスがリモートであることを認識していない。
【００３４】
図３は、本発明の実施形態に従って、コンピューティング・デバイス１０２Ｂによって受信される、周辺デバイスに関連付けられたデータを例示的に表す方法３００を示す。たとえばこのデータは、コンピューティング・デバイス１０２Ａのアプリケーション・プログラム１２２Ａから、コンピューティング・デバイス１０２Ｂのシリアル・バス１０４Ｂに接続された周辺デバイス１０６Ｂに向けて送信することが可能である。他の例として、このデータは、コンピューティング・デバイス１０２Ａのシリアル・バス１０４Ａに接続された周辺デバイス１０６Ａから、周辺デバイス１０６Ａに対して以前に要求を生成したアプリケーション・プログラム１２２Ｂへの返答として、送信することが可能である。
【００３５】
ネットワーク・ドライバ１１６Ｂは、データを含むフレームが内部にラッピングされたネットワーク・パケットを、ハードウェア・ネットワーク・コントローラ１１４Ｂを介し、ネットワーク１１２を通じて受信する（３０２）。しかしながら、ネットワーク・ドライバ１１６Ｂがネットワーク・パケットを検査する前に、シリアル・ドライバ１１０Ｂは、ネットワーク・パケットが、シリアル・バスに接続された周辺デバイスに関連付けられた、内部にラッピングされたデータのフレームを有するかどうかを判別するために、ネットワーク・パケットを検査する（３０４）。ネットワーク・パケットが内部にラッピングされたこうしたデータのフレームを有さない場合、ネットワーク・パケットはネットワーク・ドライバ１１６Ｂによって従来通りに処理される。
【００３６】
しかしながら、ネットワーク・パケットが、シリアル・バスに接続された周辺デバイスに関連付けられた、内部にラッピングされたデータのフレームを有する場合、以下のように実行される（３０６）。シリアル・ドライバ１１０Ｂは、ネットワーク・パケットからデータのフレームをアンラッピングする（３０８）。シリアル・ドライバ１１０Ｂは、データのフレームが、シリアル・バス１０４Ｂに接続された周辺デバイスに関連付けられるかどうかも判別する（３１０）。すなわち、シリアル・ドライバ１１０Ｂは、データのフレームが、コンピューティング・デバイス１０２Ｂに対してローカルな周辺デバイスに関連付けられるかどうかを判別する。この判別は、図２の方法２００に関して上記で説明したように、テーブルを参照することによって実行可能である。
【００３７】
データのフレームが、シリアル・バス１０４Ｂに接続された周辺デバイスに関連付けられる場合、シリアル・ドライバ１１０Ｂは、ハードウェア・シリアル・コンポーネント１０８Ｂを通じ、シリアル・バス１０４Ｂを介して、このデータのフレームを周辺デバイスへと送信する（３１２）。この場合、フレームに含まれるデータは、他のコンピューティング・デバイスのアプリケーション・プログラムなどによって他のコンピューティング・デバイスで生成された。フレーム自体も、他のコンピューティング・デバイスのシリアル・ドライバなどによって、他のコンピューティング・デバイスで生成された。
【００３８】
しかしながら、データのフレームが、シリアル・バス１０４Ｂに接続されていない周辺デバイスに関連付けられている場合、以下のように実行される（３１４）。シリアル・ドライバ１１０Ｂは、データのフレームを周辺デバイスのためのローカル・デバイス・ドライバへと送信する（３１６）。たとえば、当該の周辺デバイスが周辺デバイス１０６Ａである場合、シリアル・ドライバ１１０Ｂは、データのフレームを周辺デバイス１０６Ａのためのデバイス・ドライバ１１８Ｂへと送信する。
【００３９】
デバイス・ドライバは、データのフレームを受信し、このフレームからデータを復号し、データの向け先であるアプリケーション・プログラムへとデータを送信する（３１８）。この場合、フレームに含まれるデータは、他のコンピューティング・デバイスのシリアル・バスに接続されたリモート周辺デバイスで生成された。リモート周辺デバイスがフレームも同様に生成したか、またはこの他のコンピューティング・デバイスのシリアル・ドライバがフレームを生成した可能性がある。
【００４０】
たとえばアプリケーション・プログラム１２２Ｂは、当初、図２の方法２００に従って、周辺デバイス１０６Ａにデータを戻す旨を要求するために、周辺デバイス１０６Ａへとデータを送信した可能性がある。要求を受信すると、周辺デバイス１０６Ａは応答データを生成し、応答データをアプリケーション・プログラム１２２Ｂへと返送する。この場合、データを含むフレームが内部にラッピングされたネットワーク・パケットを受信するため、および最終的にこのデータをアプリケーション・プログラム１２２Ｂへと送信するために、図３の方法３００が実行される。
【００４１】
フレームからデータを復号し、データの向け先であるアプリケーション・プログラムへとデータを送信するデバイス・ドライバは、いくつかの異なる方法のうちの１つでアプリケーション・プログラムの識別を認識することができる。一実施形態では、一度に１つのコンピュータ・プログラムのみが、当該の周辺デバイスとの通信セッションを維持することができる可能性がある。したがってデバイス・ドライバは、どのコンピュータ・プログラムがその周辺デバイスとの通信セッションを有するかを認識するため、結果として周辺デバイスから戻されたデータは、このコンピュータ・プログラムへと自動的に送信される。
【００４２】
しかしながら他の実施形態では、複数のコンピュータ・プログラムが同時に周辺デバイスにアクセスできる可能性がある。この場合、データの向け先であるアプリケーション・プログラムは、周辺デバイスとの間のすべての通信で使用される、固有またはほぼ固有の識別子を有することができる。周辺デバイスのためのデバイス・ドライバはこれらの固有の識別子を追跡するため、結果としてアプリケーション・プログラムは、それらに向けられるデータを周辺デバイスから正しく受信する。
【００４３】
アプリケーション・プログラム１２２Ｂ、ネットワーク・ドライバ１１６Ｂ、あるいはデバイス・ドライバ１１８Ｂまたは１２０Ｂは、いずれも、プログラム１２２Ｂのデータの受信元である周辺デバイスがローカル・シリアル・バス１０４Ｂに接続されているか否かを認識していないことに留意されたい。周辺デバイスのための適切なデバイス・ドライバ１１８Ｂまたは１２０Ｂは、データを含むフレームをシリアル・ドライバ１１０Ｂから単に受信するのみである。アプリケーション・プログラム１２２Ｂは、フレームから復号されたデータを、適切なデバイス・ドライバ１１８Ｂまたは１２０Ｂから単に受信するのみである。さらにネットワーク・ドライバ１１６Ｂは、ドライバ１１６Ｂがネットワーク１１２を介して任意の他のネットワーク・パケットを受信するのとまったく同様に、ネットワーク１１２を介してこのネットワーク・パケットを単に受信するのみである。
【００４４】
むしろ、アプリケーション・プログラム１２２Ｂのデータの受信元である周辺デバイスがローカル・シリアル・バス１０４Ｂに接続されているか否かを認識しているのは、シリアル・ドライバ１１０Ｂである。シリアル・ドライバ１１０Ｂは、周辺デバイス１０６Ｂおよび周辺デバイス１０６Ａの両方からデータを受信し、後者は、ネットワーク・ドライバ１１６Ｂおよびハードウェア・ネットワーク・コンポーネント１１４Ｂを通じ、ネットワーク１１２を介する。シリアル・ドライバ１１０Ｂがネットワーク・パケットからデータのフレームをアンラッピングした場合、このデータのフレームは、シリアル・バス１０４Ｂに接続されたローカル周辺デバイスから受信されたデータのフレームとまったく同様である。
【００４５】
図４は、本発明の実施形態に従って、データのフレームがネットワーク・パケット４００内にどのようにラッピング可能であるかを説明するために、ネットワーク・プロトコル・スタック４０２に関して代表的なネットワーク・パケット４００を示す。ネットワーク・プロトコル・スタック４０２は、リンク層４０４、ネットワーク層４０６、移送層４０８、およびアプリケーション層４１０を含む。したがって、ネットワーク・プロトコル・スタック４０２は、伝送制御プロトコル（ＴＣＰ）／インターネット・プロトコル（ＩＰ）通信で使用されるような、従来のネットワーク・プロトコル・スタックとすることができる。
【００４６】
リンク層４０４は、ネットワーク・プロトコル・スタック４０２内の最下層として、実際のネットワーク・ハードウェアと通信する責務を負う。リンク層４０４は、ＩＰアドレスなどの数値アドレスではなく、典型的にはＭＡＣアドレスによってデバイスを識別する。これと比べて、ネットワーク層４０６はネットワークを介してどのようにデータをルーティングするかを決定する責務を負い、この層では、デバイスはＩＰアドレスなどではなく数値アドレスによってアドレス指定される。移送層４０８はアプリケーション層４１０にデータ流れを提供し、この層にＴＣＰが常駐する。最後にアプリケーション層４１０は、通常、コンピュータ・プログラムがネットワークと対話する場所であるため、ファイル伝送プロトコル（ＦＴＰ）、テルネット、ｅメールなどのようなアプリケーションはアプリケーション層４１０に常駐する。
【００４７】
図４の実施形態では、データのフレームはリンク層４０４のネットワーク・パケット４００内にラッピングされる。具体的に言えば、リンク層４０４で、ネットワーク・パケット４００はＥｔｈｅｒｎｅｔ（Ｒ）タイプなどの特定のタイプ４１２を有する。図４の実施形態は、ネットワーク・パケット４００のペイロード４１４がシリアル・バスに接続された周辺デバイスに関するデータのフレームを含む（すなわち内部にラッピングしている）ことを識別するために、０×１２３４などのこのタイプ４１２に関する特定の値を保持する。したがって、シリアル・ドライバが、こうしたデータのフレームが内部にラッピングされているかどうかを判別するためにネットワーク・パケットを検査する場合、ネットワーク・パケット４００のタイプ４１２が当該の所定の値と一致するかどうかを単に判別するだけでよい。
【００４８】
データのフレームがリンク層４０４でネットワーク・パケット４００内にラッピングされていることにより、図４の実施形態に一定の特性が鼓吹される（imbue）。第１に、データのフレームの周辺デバイスがローカルなコンピューティング・デバイスは、ルーティング可能なＩＰアドレスなどのルーティング可能な数値アドレスではなく、ＭＡＣアドレスにより、ネットワーク・パケット４００の１つまたは複数の他のフィールドによって識別される。これは、コンピューティング・デバイスのシリアル・ドライバが、変更可能なコンピューティング・デバイス１０２のＩＰアドレスを維持する必要がなく、むしろ通常は変更されないデバイス１０２のＭＡＣアドレスのみを維持することを意味する。
【００４９】
次いで、より重要なことに、データのフレームを含むネットワーク・パケット４００は、ネットワーク１１２内でルーティング可能ではない。すなわち、ネットワーク・パケット４００のソース・コンピューティング・デバイスおよびネットワーク・パケット４００の宛先コンピューティング・デバイスは、どちらも、１つまたは複数のネットワーク・スイッチまたはハブを介して、およびいかなる介在ルータもなしに、互いに接続される必要がある。ルータは、ＩＰアドレスなどのそれらの関連付けられたルーティング可能アドレスによって、ネットワーク・パケットを適切なネットワーク・デバイスへとルーティング可能なネットワーク・デバイスである。しかしながら、ネットワーク・パケット４００は、ＩＰアドレスなどのルーティング可能アドレスによっては識別されず、むしろＭＡＣアドレスによってのみ識別される。
【００５０】
図４の実施形態のこの第２の特性により、結果として２つの効果が生じる。第１に、所与のコンピューティング・デバイスが通信可能なリモート周辺デバイスを、ルータによってネットワーク１１２内の所与の通信デバイスから分離されていないコンピューティング・デバイスのシリアル・バスに接続された周辺デバイスに制限する。したがって、所与のコンピューティング・デバイスがネットワーク１１２を介して通信可能なリモート周辺デバイスは、所与のコンピューティング・デバイスがネットワーク１１２を介して通信可能なコンピューティング・デバイスよりも制限される。
【００５１】
しかしながら、第２に、この制限により、図４の実施形態内に追加および特有のセキュリティが提供される。具体的に言えば、たとえネットワーク１１２がインターネットなどの外部ネットワークにさらされる場合であっても、周辺デバイス１０６へのアクセス権を得るための外部の不正または悪意ある試行は恐らく失敗に終わることになる。これは、周辺デバイス１０６へのアクセス権を得るためのこうした外部試行が、ルータによってコンピューティング・デバイス１０２から必然的に分離されたソース・コンピューティング・デバイスから実行されることになるためである。したがって、非現実的であるが、ソース・コンピューティング・デバイスがコンピューティング・デバイス１０２のＭＡＣアドレスを知っているかまたはこれを推測しない限り、ソース・コンピューティング・デバイスは、たとえ周辺デバイス１０６が接続されたシリアル・バス１０４を有するコンピューティング・デバイス１０２にアクセスできる場合であっても、周辺デバイス１０６にアクセスできないことになる。
【００５２】
図５は、本発明の実施形態に従った、図１の任意のコンピューティング・デバイス１０２を実装可能な代表的なコンピューティング・デバイス５００を示す。コンピューティング・デバイス５００は、前述のように、ハードウェア・シリアル・コンポーネント５０４、ハードウェア・ネットワーク・コンポーネント５０６、およびシリアル・バス５０８などの、ハードウェア５０２を含む。ハードウェア５０２は、通常、１つまたは複数のプロセッサ５１０、揮発性メモリ５１２、および不揮発性ストレージ・デバイス５１４も含む。さらにハードウェア５０２は、図５に示されたものに加えて、あるいはそれらの代わりに、またはその両方で、他のタイプのハードウェアを含むこともできる。
【００５３】
コンピューティング・デバイス５００はオペレーティング・システム５１６を含む。オペレーティング・システム５１６およびその構成コンポーネントは、それらがハードウェア５０２上に格納され、ハードウェア５０２から、およびハードウェア５０２によって実行される限り、ハードウェア５０２によって実装されるものと呼ばれる。オペレーティング・システム５１６は、ユーザ・モード５１８およびカーネル・モード５２０に分割される。シリアル・バス５０８に接続された周辺デバイスのためのデバイス・ドライバ５２２、ならびにアプリケーション・プログラム５２４は、ユーザ・モード５１８内で実行し、シリアル・ドライバ５２６およびネットワーク・ドライバ５２８はカーネル・モード５２０内で実行する。ドライバ５２２、５２６、および５２８はオペレーティング・システム５１６の一部および構成要素であるとみなすことができるが、アプリケーション・プログラム５２４はそのようにみなされないことに留意されたい。
【００５４】
カーネル・モード５２０で実行される必須のシステム・プロセスにある程度の保護またはセキュリティが提供できるように、ユーザ・モード５１８とカーネル・モード５２０とが区別されるため、結果としてこれらのプロセスはユーザ・モード５１８内から直接影響を受けることがない。したがって、カーネル・モード５２０は、オペレーティング・システム５１６の必須コンポーネントを含むその基本部分であり、ユーザ・モード５１８内で実行するアプリケーション・プログラム５２４に基本サービスを提供する、コンピューティング・デバイス５００のカーネルを含む。
【００５５】
当業者であれば理解できるように、本発明の諸態様は、システム、方法、またはコンピュータ・プログラム（製品）として具体化することができる。したがって、本発明の諸実施形態の諸態様は、全体としてハードウェア実施形態、全体としてソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、本明細書ではすべてが「回路」、「モジュール」、または「システム」と総称することが可能な、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の諸態様は、その上で実施されるコンピュータ読み取り可能プログラム・コードを有する（１つまたは複数のコンピュータ読み取り可能媒体内で具体化された、）コンピュータ・プログラム（製品）の形を取ることができる。
【００５６】
１つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ媒体のより具体的な例（限定的なリスト）は、１本または複数の配線を有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ・デバイス、磁気ストレージ・デバイス、またはそれらの任意の好適な組み合わせを含む。本明細書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行のシステム、装置、またはデバイスによって、またはこれらに関連して使用するためのプログラムを、包含または格納可能な、任意の有形媒体とすることができる。
【００５７】
コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部でコンピュータ読み取り可能プログラム・コードが実施される伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、様々な形のうちの任意の形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはこれらに関連して使用するためのプログラムを、通信、伝搬、または移送可能な、任意のコンピュータ読み取り可能媒体とすることができる。コンピュータ読み取り可能媒体上で実施されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送可能である。
【００５８】
一般に、コンピュータ・プログラム製品は、１つまたは複数のコンピュータ・プログラムが格納可能なコンピュータ読み取り可能媒体を含む。１つまたは複数のハードウェア・デバイスのうちの１つまたは複数のプロセッサによってコンピュータ読み取り可能媒体からコンピュータ・プログラムを実行することによって、方法が実行される。たとえば、実行されることになる方法は、前述の方法のうちの１つまたは複数とすることができる。
【００５９】
コンピュータ・プログラム自体がコンピュータ・プログラム・コードを含む。本発明の諸態様に関する動作を実施するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（ＴＭ）、またはＣ＋＋（Ｒ）などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラム・コードは、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上および部分的にリモート・コンピュータ上で、あるいは全体としてリモート・コンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、あるいは、（たとえばインターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに接続可能である。
【００６０】
以上、本発明の諸態様について、本発明の諸態様に従った方法、装置（システム）、およびコンピュータ・プログラム（製品）の流れ図あるいはブロック図またはその両方を参照しながら説明してきた。流れ図あるいはブロック図またはその両方の各ブロック、および流れ図あるいはブロック図またはその両方における各ブロックの組み合わせは、コンピュータ・プログラム命令によって実装可能であることを理解されよう。これらのコンピュータ・プログラム命令は、マシンを製造するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブル・データ処理装置の、プロセッサに提供可能であるため、結果として、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実装するための手段を作成する。
【００６１】
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに対して、特定の様式で機能するように指示することができる、コンピュータ読み取り可能媒体内に格納することも可能であるため、結果として、コンピュータ読み取り可能媒体内に格納された命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実装する命令を含む製品を製造する。
【００６２】
コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードして、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させることも可能であり、結果として、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能／動作を実装するためのプロセスを提供する。
【００６３】
図面内の流れ図およびブロック図は、本発明の様々な実施形態に従った、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示すものである。この点に関して、流れ図またはブロック図内の各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を備える、モジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替の実施では、ブロック内に記載された機能を、図面内に記載された順番以外で実行できることにも留意されたい。たとえば連続して示された２つのブロックは、含まれる機能に応じて、実際にはほぼ同時に実行可能であるか、時にはそれらのブロックを逆の順序で実行することができる。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方におけるブロックの組み合わせは、指定された機能または動作、あるいは特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェアベース・システムによって、実装可能であることにも留意されたい。
【００６４】
最終的に、本明細書では特定の諸実施形態について例示および説明してきたが、当業者であれば、示された特定の諸実施形態を、同じ目的を達成するように算出された任意の配置構成に置き換え可能であることが理解されることに留意されたい。したがって本明細書は、本発明の諸実施形態の任意の適応または変形をカバーすることが意図されている。したがって本発明は、特許請求の範囲およびその等価物によってのみ限定されるものであることが明白に意図されている。
【符号の説明】
【００６５】
１００    システム
１０２Ａ、１０２Ｂ    コンピューティング・デバイス
１０４Ａ、１０４Ｂ    シリアル・バス
１０６Ａ、１０６Ｂ    周辺デバイス
１０８Ａ、１０８Ｂ    ハードウェア・シリアル・コンポーネント
１１０Ａ、１１０Ｂ    シリアル・ドライバ
１１２    ネットワーク
１１４Ａ、１１４Ｂ    ハードウェア・ネットワーク・コンポーネント
１１６Ａ、１１６Ｂ    ネットワーク・ドライバ
１１８Ａ、１１８Ｂ、１２０Ａ、１２０Ｂ    デバイス・ドライバ
１２２Ａ、１２２Ｂ    アプリケーション・プログラム
【図１】
0005911200.tif 000002
【図２】
0005911200.tif 000003
【図３】
0005911200.tif 000004
【図４】
0005911200.tif 000005
【図５】
0005911200.tif 000006