複数のコンピューティングデバイスであって、各コンピューティングデバイスが、ネットワークを介して前記コンピューティングデバイスを前記複数のコンピューティングデバイスの他のコンピューティングデバイスに接続するための、ハードウェアネットワークコンポーネントと、シリアルバスを介して前記コンピューティングデバイスを1つまたは複数の周辺デバイスに接続するための、ハードウェアシリアルコンポーネントと、各デバイスドライバが、前記コンピューティングデバイスの前記周辺デバイスのうちの1つのため、または前記他のコンピューティングデバイスの前記周辺デバイスのうちの1つのためのものである、複数のデバイスドライバと、前記ハードウェアネットワークコンポーネントのためネットワークドライバと、前記ハードウェアシリアルコンポーネントのためのシリアルドライバと、を備え、各コンピューティングデバイス内で、前記シリアルドライバ、前記ネットワークドライバ、および前記デバイスドライバは、前記コンピューティングデバイスが前記ネットワークを介して前記他のコンピューティングデバイスの前記周辺デバイスと通信できるように対話する、複数のコンピューティングデバイスを備えるシステム。前記複数のコンピューティングデバイスの一部ではない追加のコンピューティングデバイスをさらに備え、前記追加のコンピューティングデバイスが、前記ネットワークを介して前記追加のコンピューティングデバイスを前記複数のコンピューティングデバイスに接続するための、ハードウェアネットワークコンポーネントと、各デバイスドライバが、前記他の複数のコンピューティングデバイスの前記周辺デバイスのうちの1つのためのものである、複数のデバイスドライバと、前記ハードウェアネットワークコンポーネントのためネットワークドライバと、前記ハードウェアシリアルコンポーネントのためのシリアルドライバと、を備え、前記追加のコンピューティングデバイス内で、前記シリアルドライバ、前記ネットワークドライバ、および前記デバイスドライバは、前記追加のコンピューティングデバイスが前記ネットワークを介して前記複数のコンピューティングデバイスの前記周辺デバイスと通信できるように対話する、請求項1に記載のシステム。前記シリアルバスが、RS-485シリアルバス、RS-423シリアルバス、RS-422シリアルバス、およびRS-232シリアルバスのうちの1つである、請求項1に記載のシステム。前記他のコンピューティングデバイスの前記周辺デバイスのための各コンピューティングデバイスのデバイスドライバが、前記他のコンピューティングデバイスの前記周辺デバイスが前記コンピューティングデバイスの前記シリアルバスに接続されていないことを認識しない、請求項1に記載のシステム。各コンピューティングデバイスが、前記コンピューティングデバイスの前記周辺デバイスと対話するためのアプリケーションプログラムをさらに備え、前記アプリケーションプログラムが、前記他のコンピューティングデバイスの前記周辺デバイスが前記コンピューティングデバイスの前記シリアルバスに接続されていないことを認識しない、請求項1に記載のシステム。前記コンピューティングデバイスの前記周辺デバイスのうちの所与の周辺デバイスについて、前記アプリケーションプログラムが、前記所与の周辺デバイスのための前記デバイスドライバへとデータを送信するためのものであり、前記デバイスドライバが、前記データを含むフレームを作成し、前記フレームを前記シリアルドライバへと送信するためのものであり、前記シリアルドライバが、前記所与の周辺デバイスが前記コンピューティングデバイスの前記シリアルバスに接続されているか、または、前記他のコンピューティングデバイスのうちの1つの前記シリアルバスに接続されているかを判別するためのものである、請求項5に記載のシステム。前記所与の周辺デバイスが、前記他のコンピューティングデバイスのうちの1つの前記シリアルバスに接続され、前記シリアルドライバが、前記フレームをネットワークパケット内にラッピングし、前記所与の周辺デバイスの接続先である前記シリアルバスを有する前記コンピューティングデバイスへの伝送のために、前記ネットワークパケットを前記デバイスドライバへと送信するためのものである、請求項6に記載のシステム。所与のコンピューティングデバイスの前記シリアルドライバが、前記所与のコンピューティングデバイスがネットワークパケットを検査する前に、前記ネットワークを介して受信したネットワークパケットを検査するためのものであり、前記シリアルドライバが、前記ネットワークパケットが前記所与のコンピューティングデバイスの前記シリアルバスに接続された前記周辺デバイスのうちの1つに関連付けられたデータのフレームを内部にラッピングしているかどうか、または、前記ネットワークパケットが前記所与のコンピューティングデバイスの前記シリアルバスに接続されていない前記周辺デバイスのうちの1つに関連付けられたデータのフレームを内部にラッピングしているかどうかを判別するために、前記ネットワークパケットを検査するためのものである、請求項1に記載のシステム。前記ネットワークパケットが、前記所与のコンピューティングデバイスの前記シリアルバスに接続されていない前記周辺デバイスのうちの1つに関連付けられたデータのフレームを内部にラッピングしており、前記シリアルドライバが、前記ネットワークパケットから前記データのフレームをアンラッピングするため、および、前記データのフレームが関連付けられている前記周辺デバイスのための前記デバイスドライバへと前記データのフレームを送信するためのものであり、前記データのフレームが関連付けられている前記周辺デバイスのための前記デバイスドライバが、前記データのフレームから前記データを復号し、前記データを前記所与のコンピューティングデバイスのアプリケーションプログラムへと送信するためのものである、請求項8に記載のシステム。前記ネットワークパケットが、前記所与のコンピューティングデバイスの前記シリアルバスに接続されている前記周辺デバイスのうちの1つに関連付けられたデータのフレームを内部にラッピングしており、前記シリアルドライバが、前記ネットワークパケットから前記データのフレームをアンラッピングするため、および、前記所与のコンピューティングデバイスの前記シリアルバスを介して、前記データのフレームを前記データのフレームが関連付けられている前記周辺デバイスへと送信するためのものである、請求項8に記載のシステム。各コンピューティングデバイスの前記シリアルドライバおよび前記ネットワークドライバが、ネットワークプロトコルのリンク層を使用することのみによって、前記コンピューティングデバイスが前記ネットワークを介して前記他のコンピューティングデバイスの前記周辺デバイスと通信できるようにするために互いに対話し、結果として、前記コンピューティングデバイスのみが、前記コンピューティングデバイスがルータを介して互いに接続されていない前記他のコンピューティングデバイスの前記周辺デバイスと通信可能となる、請求項1に記載のシステム。各コンピューティングデバイスの前記シリアルドライバが、前記コンピューティングデバイスおよび前記コンピューティングデバイスの前記周辺デバイスのテーブルを維持するためのものである、請求項1に記載のシステム。各コンピューティングデバイスがユーザモードおよびカーネルモードを有するオペレーティングシステムを備え、前記デバイスドライバが、前記オペレーティングシステムの前記ユーザモード内に常駐するユーザモードのデバイスドライバであり、前記ネットワークドライバが、前記オペレーティングシステムの前記カーネルモード内に常駐するカーネルモードのネットワークドライバであり、前記シリアルドライバが、前記オペレーティングシステムの前記カーネルモード内に常駐するカーネルモードのシリアルドライバである、請求項1に記載のシステム。第1の周辺デバイスに関する第1のデータを、第1のコンピューティングデバイスの第1のアプリケーションプログラムから、前記第1の周辺デバイスのための前記第1のコンピューティングデバイスの第1のデバイスドライバへと送信すること、前記第1のデバイスドライバによって前記第1のデータを含む第1のフレームを作成すること、前記第1のフレームを、前記第1のデバイスドライバから前記第1のコンピューティングデバイスの第1のシリアルドライバへと送信すること、前記第1のシリアルドライバによって、前記第1の周辺デバイスが前記第1のコンピューティングデバイスの第1のシリアルバスに接続されるか、または前記第1の周辺デバイスが第2のコンピューティングデバイスの第2のシリアルバスに接続されるかを判別することであって、前記第1の周辺デバイスが前記第2のシリアルバスに接続される場合、前記第1のシリアルドライバによって前記第1のフレームを第1のネットワークパケット内にラッピングすること、および前記第1のネットワークパケットを前記第1のコンピューティングデバイスから前記第2のコンピューティングデバイスへとネットワークを介して送信すること、を含む方法。前記第1の周辺デバイスが前記第1のシリアルバスに接続される場合、前記第1のフレームを、前記第1のシリアルドライバから前記第1のシリアルバスを介して前記第1の周辺デバイスへと送信すること、をさらに含む、請求項14に記載の方法。前記第2のコンピューティングデバイスによって、前記ネットワークを介して前記第1のコンピューティングデバイスから第2のネットワークパケットを受信すること、前記第2のコンピューティングデバイスの第2のシリアルドライバによって、前記第2のネットワークパケットが、第2の周辺デバイスに関連付けられた第2のデータの第2のフレームを内部にラッピングしているかどうかを判別すること、前記第2のネットワークパケットが第2の周辺デバイスに関連付けられた第2のデータの第2のフレームを内部にラッピングしている場合、前記第2のシリアルドライバによって、前記第2のネットワークパケットから前記第2のフレームをアンラッピングすること、前記第2のシリアルドライバによって、前記第2の周辺デバイスが前記第2のシリアルバスまたは前記第1のシリアルバスのいずれに接続されるかを判別すること、および前記第2の周辺デバイスが前記第2のシリアルバスに接続される場合、前記第2のフレームを、前記第2のシリアルドライバから前記第2のシリアルバスを介して前記第2の周辺デバイスへと送信すること、をさらに含む、請求項14に記載の方法。前記第2の周辺デバイスが前記第1のシリアルバスに接続される場合、前記第2のフレームを、前記第2のシリアルドライバから、前記第2の周辺デバイスのための前記第2のコンピューティングデバイスの第2のデバイスドライバへと送信すること、前記第2のデバイスドライバによって前記第2のフレームから前記第2のデータを復号すること、および前記第2のデータを、前記第2のデバイスドライバから前記第2のコンピューティングデバイスの第2のアプリケーションプログラムへと送信すること、をさらに含む、請求項16に記載の方法。コンピュータに実行させるコンピュータ読み取り可能コードを備え、第1のコンピューティングデバイスの第1のシリアルバスに接続された第1の周辺デバイスのための第1のデバイスドライバと、第2のコンピューティングデバイスの第2のシリアルバスに接続された第2の周辺デバイスのための第2のデバイスドライバとを有する、第1のコンピューティングデバイスによって実行可能であり、前記コンピュータ読み取り可能コードは、前記デバイスドライバのうちの1つから第1のデータの第1のフレームを受信するための、第1のコンピュータ読み取り可能コードと、前記第1のデータの第1のフレームが前記第2の周辺デバイスを備えた前記第1の周辺デバイスに関連付けられるかどうかを判別するための、第2のコンピュータ読み取り可能コードと、前記第1のデータの第1のフレームを第1のネットワークパケット内にラッピングするため、および、前記第1のデータの第1のフレームをネットワークを介して前記第2のコンピューティングデバイスへと送信させるための、第3のコンピュータ読み取り可能コードとを備える、コンピュータプログラム。前記コンピュータ読み取り可能コードは、前記第1のデータの第1のフレームを前記第1のシリアルバスを介して前記第1の周辺デバイスへと送信させるための、第4のコンピュータ読み取り可能コードをさらに備え、前記第1のデータの第1のフレームは前記第1の周辺デバイスに関連付けられた、請求項18に記載のコンピュータプログラム。前記コンピュータ読み取り可能コードは、前記第2のコンピューティングデバイスから前記ネットワークを介して第2のネットワークパケットを受信するための、第5のコンピュータ読み取り可能コードと、前記第2のネットワークパケットが、第1の周辺デバイスまたは第2の周辺デバイスに関連付けられた第2のデータの第2のフレームを内部にラッピングしているかどうかを判別するための、第6のコンピュータ読み取り可能コードと、前記第2のデータの第2のフレームを前記第2のネットワークパケットからアンラッピングし、前記第2のデータの第2のフレームを、前記第2のデバイスドライバへと送信するための、第7のコンピュータ読み取り可能コードであって、前記第2のデータの第2のフレームは前記第2の周辺デバイスに関連付けられた、第7のコンピュータ読み取り可能コードと、前記第2のデータの第2のフレームを前記第2のネットワークパケットからアンラッピングし、前記第2のデータの第2のフレームを、前記第1のシリアルバスを介して前記第1の周辺デバイスへと送信するための、第8のコンピュータ読み取り可能コードであって、前記第2のデータの第2のフレームは前記第1の周辺デバイスに関連付けられた、第8のコンピュータ読み取り可能コードと、をさらに備える、請求項18に記載のコンピュータプログラム。ネットワークを介してコンピューティングデバイスを1つまたは複数の他のコンピューティングデバイスに接続するためのハードウェアネットワークコンポーネントと、前記他のコンピューティングデバイスのうちの1つのシリアルバスに接続された周辺デバイスのためのデバイスドライバと、前記ハードウェアネットワークコンポーネントのためのネットワークドライバと、を備え、前記ネットワークドライバおよび前記デバイスドライバは、前記コンピューティングデバイスが前記ネットワークを介して前記周辺デバイスと通信できるように対話する、コンピューティングデバイス。前記周辺デバイスのための前記デバイスドライバが、前記周辺デバイスが前記コンピューティングデバイスのシリアルバスに接続されていないことを認識しない、請求項21に記載のコンピューティングデバイス。前記周辺デバイスと対話するためのアプリケーションプログラムをさらに備え、前記アプリケーションプログラムは、前記周辺デバイスが前記コンピューティングデバイスのシリアルバスに接続されていないことを認識しない、請求項21に記載のコンピューティングデバイス。前記ネットワークドライバが、ネットワークプロトコルのリンク層を使用することのみによって、前記コンピューティングデバイスが前記ネットワークを介して前記他の周辺デバイスと通信できるようにし、結果として、前記コンピューティングデバイスのみが、前記他のコンピューティングデバイスがルータを介して前記コンピューティングデバイスに接続されていない前記周辺デバイスと通信可能となる、請求項21に記載のコンピューティングデバイス。前記周辺デバイスが販売時点管理POSデバイスである、請求項21に記載のコンピューティングデバイス。本発明の目的は、シリアルバスに接続された周辺デバイスへのリモートアクセスをより効果的にすることにある。本発明の実施形態のシステムは、いくつかのコンピューティングデバイスを含む。各コンピューティングデバイスは、ハードウェアネットワークコンポーネント、ハードウェアシリアルコンポーネント、デバイスドライバ、ネットワークドライバ、およびシリアルドライバを含む。ハードウェアネットワークコンポーネントは、ネットワークを介してコンピューティングデバイスを他のコンピューティングデバイスに接続する。ハードウェアシリアルコンポーネントは、シリアルバスを介してコンピューティングデバイスを1つまたは複数の周辺デバイスに接続する。各デバイスドライバは、コンピューティングデバイスの周辺デバイスのうちの1つのため、または他のコンピューティングデバイスの周辺デバイスのうちの1つのためのものである。ネットワークドライバはハードウェアネットワークコンポーネントのため、シリアルドライバはハードウェアシリアルコンポーネントのためのものである。各コンピューティングデバイス内で、シリアルドライバ、ネットワークドライバ、およびデバイスドライバは、コンピューティングデバイスがネットワークを介して他のコンピューティングデバイスの周辺デバイスと通信できるように対話する。本発明の実施形態の方法は、第1の周辺デバイスに関する第1のデータを、第1のコンピューティングデバイスの第1のアプリケーションプログラムから、第1の周辺デバイスのための第1のコンピューティングデバイスの第1のデバイスドライバへと送信する。方法は、第1のデバイスドライバによって第1のデータを含む第1のフレームを作成する。方法は、第1のフレームを、第1のデバイスドライバから第1のコンピューティングデバイスの第1のシリアルドライバへと送信する。方法は、第1のシリアルドライバによって、第1の周辺デバイスが第1のコンピューティングデバイスの第1のシリアルバスに接続されるか、または第1の周辺デバイスが第2のコンピューティングデバイスの第2のシリアルバスに接続されるかを判別する。第1の周辺デバイスが第2のシリアルバスに接続される場合、方法は、第1のシリアルドライバによって第1のフレームを第1のネットワークパケット内にラッピングしwrap、この第1のネットワークパケットを第1のコンピューティングデバイスから第2のコンピューティングデバイスへとネットワークを介して送信する。一実施形態では、方法は、第2のコンピューティングデバイスによって、ネットワークを介して第1のコンピューティングデバイスから第2のネットワークパケットも受信する。方法は、第2のコンピューティングデバイスの第2のシリアルドライバによって、第2のネットワークパケットが、第2の周辺デバイスに関連付けられた第2のデータの第2のフレームを内部にラッピングしているかどうかを判別する。第2のネットワークパケットが第2の周辺デバイスに関連付けられた第2のデータの第2のフレームを内部にラッピングしている場合、方法は、第2のシリアルドライバによって、第2のネットワークパケットから第2のフレームをアンラッピングする。次に方法は、第2のシリアルドライバによって、第2の周辺デバイスが第2のシリアルバスまたは第1のシリアルバスのいずれに接続されるかを判別する。第2の周辺デバイスが第1のシリアルバスに接続される場合、方法は、第2のフレームを、第2のシリアルドライバから第2の周辺デバイスのための第2のコンピューティングデバイスの第2のデバイスドライバへと送信する。次に方法は、第2のデバイスドライバによって第2のフレームから第2のデータを復号し、第2のデータを、第2のデバイスドライバから第2のコンピューティングデバイスの第2のアプリケーションプログラムへと送信する。本発明の実施形態のコンピュータプログラム製品は、内部にコンピュータ読み取り可能コードが実施されたコンピュータ読み取り可能ストレージ媒体を含む。コンピュータ読み取り可能コードは、第1のデバイスドライバおよび第2のデバイスドライバを有する第1のコンピューティングデバイスによって実行可能である。第1のデバイスドライバは、第1のコンピューティングデバイスの第1のシリアルバスに接続された第1の周辺デバイスのためのものである。第2のデバイスドライバは、第2のコンピューティングデバイスの第2のシリアルバスに接続された第2の周辺デバイスのためのものである。コンピュータ読み取り可能コードは、デバイスドライバのうちの1つから第1のデータの第1のフレームを受信するための、第1のコンピュータ読み取り可能コードを含む。コンピュータ読み取り可能コードは、第1のデータの第1のフレームが第2の周辺デバイスを備えた第1の周辺デバイスに関連付けられるかどうかを判別するための、第2のコンピュータ読み取り可能コードを含む。コンピュータ読み取り可能コードは、第1のデータの第1のフレームを第1のネットワークパケット内にラッピングするため、および、第1のデータの第1のフレームをネットワークを介して第2のコンピューティングデバイスへと送信させるための、第3のコンピュータ読み取り可能コードを含み、第1のデータの第1のフレームは第2の周辺デバイスに関連付けられる。本発明の実施形態のコンピューティングデバイスは、ハードウェアネットワークコンポーネント、デバイスドライバ、およびネットワークドライバを含む。ハードウェアネットワークコンポーネントは、ネットワークを介してコンピューティングデバイスを1つまたは複数の他のコンピューティングデバイスに接続するためのものである。デバイスドライバは、他のコンピューティングデバイスのうちの1つのシリアルバスに接続された周辺デバイスのためのものである。ネットワークドライバは、ハードウェアネットワークコンポーネントのためのものである。ネットワークドライバおよびデバイスドライバは、コンピューティングデバイスがネットワークを介して周辺デバイスと通信できるように対話する。本書で参照される図面は、本明細書の一部を形成する。図面に示される特徴は、特に明示的に示されていない限り、本発明のすべての実施形態ではなく、本発明のいくつかの例示的実施形態を単に例示するためのものであり、その他の点で反対の含意はない。以下の本発明の例示的諸実施形態の詳細な説明では、本明細書の一部を形成する添付の図面が参照され、この図面には、本発明が実施可能な特定の例示的諸実施形態が例として示される。これらの諸実施形態は、当業者であれば本発明を実施できるように十分詳細に説明されている。他の諸実施形態が使用可能であり、本発明の趣旨または範囲を逸脱することなく、論理的、機械的、および他の変更が可能である。したがって、以下の詳細な説明は限定的な意味ではなく、本発明の実施形態の範囲は添付の特許請求の範囲によってのみ定義される。背景のセクションで示されるように、いくつかのタイプの販売時点管理POSデバイスなどのいくつかのタイプの周辺デバイスが、RS-485シリアルバス、RS-423シリアルバス、RS-422シリアルバス、またはRS-232シリアルバスなどの、コンピューティングデバイスのシリアルバスに接続される。特定のコンピューティングデバイスのシリアルバスに接続されたこうした周辺デバイスは、特定のコンピューティングデバイスに対してローカルであると言われ、任意の他のコンピューティングデバイスに対してリモートであると言われる。コンピューティングデバイスは、通常、他のコンピューティングデバイスのシリアルバスに接続された周辺デバイスとは通信不能である。すなわち、シリアルバスに接続された周辺デバイスは、通常、ローカルコンピューティングデバイスとのみ通信可能であり、リモートコンピューティングデバイスとは通信不能である。これに比べて本発明の諸実施形態は、コンピューティングデバイスが、他のコンピューティングデバイスのシリアルバスに接続された周辺デバイスと通信できるようにする。すなわち、本発明の諸実施形態は、シリアルバスに接続された周辺デバイスが、リモートコンピューティングデバイスならびにローカルコンピューティングデバイスと通信できるようにする。したがって、所与のコンピューティングデバイスは、本発明の諸実施形態に従って、所与のコンピューティングデバイスのシリアルバスに接続された周辺デバイス、ならびに他のコンピューティングデバイスのシリアルバスに接続された周辺デバイスと、通信可能である。図1は、本発明の実施形態に従ったシステム100を示す。システム100は、集合的にコンピューティングデバイス102と呼ばれる2つのコンピューティングデバイス102Aおよび102Bを含む。しかしながら他の実施形態では、コンピューティングデバイス102が2つより多くても良い。コンピューティングデバイス102は、集合的にシリアルバス104と呼ばれるシリアルバス104Aおよび104Bを、それぞれ含む。シリアルバス104は、一実施形態では、RS-485シリアルバス、RS-423シリアルバス、RS-422シリアルバス、またはRS-232シリアルバスとすることができる。シリアルバス104には、集合的に周辺デバイス106と呼ばれる周辺デバイス106Aおよび106Bが、それぞれ接続される。図1の例では、各シリアルバス104に1つの周辺デバイス106が接続されている。しかしながら他の実施形態では、特に当該のシリアルバス104が、RS-485シリアルバスのようなマルチポイントまたはマルチドロップのシリアルバスである場合、各シリアルバス104に複数の周辺デバイス106が接続されてもよい。周辺デバイス106は、一実施形態では、キャッシュレジスタ、ハンドヘルドバーコードスキャナ、および他のタイプのPOSデバイスなどの、POSデバイスとすることができる。周辺デバイス106Aはコンピューティングデバイス102Aのシリアルバス104Aに接続されているため、周辺デバイス106Aはコンピューティングデバイス102Aに対してローカルである。同様に、周辺デバイス106Bはコンピューティングデバイス102Bのシリアルバス104Bに接続されているため、周辺デバイス106Bはコンピューティングデバイス102Bに対してローカルである。周辺デバイス106Aはコンピューティングデバイス102Bのシリアルバス104Bに接続されていないため、周辺デバイス106Aはコンピューティングデバイス102Bに対してリモートである。同様に、周辺デバイス106Bはコンピューティングデバイス102Aのシリアルバス104Aに接続されていないため、周辺デバイス106Bはコンピューティングデバイス102Aに対してリモートである。コンピューティングデバイス102は、集合的にハードウェアシリアルコンポーネント108と呼ばれるハードウェアシリアルコンポーネント108Aおよび108Bを、それぞれ含む。ハードウェアシリアルコンポーネント108は、それぞれ、対応するシリアルバス104を介して周辺デバイス106と通信するために、対応するコンピューティングデバイス102のための物理コネクタまたはポート、および任意の必要なハードウェアを含む。たとえば各ハードウェアシリアルコンポーネント108は、この点において、好適なマイクロコントローラを含むことができる。コンピューティングデバイス102は、同様に、集合的にハードウェアネットワークコンポーネント114と呼ばれるハードウェアネットワークコンポーネント114Aおよび114Bを、それぞれ含む。ハードウェアネットワークコンポーネント114は、それぞれ、ネットワーク112と通信するために、対応するコンピューティングデバイス102のための物理コネクタまたはポート、および任意の必要なハードウェアを含む。たとえば各ハードウェアネットワークコンポーネント114は、ネットワークインターフェースコントローラNICとするか、またはこれを含むことができる。ネットワーク112と通信するハードウェアネットワークコンポーネント114を介して、コンピューティングデバイス102は互いに通信的に相互接続される。コンピューティングデバイス102は、集合的にアプリケーションプログラム122と呼ばれるアプリケーションプログラム122Aおよび122Bを、それぞれ含む。アプリケーションプログラム122は、それぞれ、特に周辺デバイス106に関して、所望の機能を実行するための、対応するコンピューティングデバイス102のオペレーティングシステム上で実行するコンピュータプログラムである。たとえば、周辺デバイス106がバーコードスキャナである場合、アプリケーションプログラム122は、デバイス106によってスキャンされたバーコードによって表される情報を受信し、この情報を処理することができる。この点において、アプリケーションプログラム122は周辺デバイス106と対話するものと言うことができる。コンピューティングデバイス102は、集合的にシリアルドライバ110と呼ばれるシリアルドライバ110Aおよび110Bを、それぞれ含む。シリアルドライバ110は、それぞれ、対応するコンピューティングデバイス102のオペレーティングシステム内にインストールされたドライバコンピュータプログラムであるため、結果として、対応するハードウェアシリアルコンポーネント108ならびに対応するシリアルバス104には、ソフトウェアによってアクセス可能である。たとえば、コンピューティングデバイス102Aに関して、シリアルドライバ110Aはコンピューティングデバイス102Aのオペレーティングシステム内にインストールされるため、結果としてハードウェアシリアルコンポーネント108Aならびに対応するシリアルバス104Aには、ソフトウェアによってアクセス可能である。コンピューティングデバイス102Bについても、ハードウェアシリアルコンポーネント108Bおよびシリアルバス104Bとの関連でシリアルドライバ110Bに関して同様である。コンピューティングデバイス102は、集合的にデバイスドライバ118と呼ばれるデバイスドライバ118Aおよび118Bを、それぞれ含む。デバイスドライバ118はそれぞれ、具体的に周辺デバイス106Aにアクセスするために、対応するコンピューティングデバイス102のオペレーティングシステム内にインストールされたドライバコンピュータプログラムである。たとえば、コンピューティングデバイス102Aに関して、デバイスドライバ118Aがコンピューティングデバイス102Aのオペレーティングシステム内にインストールされるため、結果として周辺デバイス106Aには、アプリケーションプログラム122Aのようなソフトウェアによってアクセス可能である。コンピューティングデバイス102Bについても、デバイスドライバ118B、周辺デバイス106A、およびアプリケーションプログラム122Bに関して同様である。しかしながら、特にデバイスドライバ118Bは、周辺デバイス106Aがコンピューティングデバイス102Bのシリアルバス104Bに接続されていないことを認識しないことに留意されたい。この点において、デバイスドライバ118Bは、デバイスドライバ118Aが符号化されるのとまったく同様に符号化することができる。さらに、デバイスドライバ118Bは周辺デバイス106Aがシリアルバス104Bに接続されていないことを認識しないため、アプリケーションプログラム122Bも、周辺デバイス106Aがシリアルバス104Bに接続されていないことを認識しない。コンピューティングデバイス102は、集合的にデバイスドライバ120と呼ばれるデバイスドライバ120Aおよび120Bも、それぞれ含む。デバイスドライバ120はそれぞれ、具体的に周辺デバイス106Bにアクセスするために、対応するコンピューティングデバイス102のオペレーティングシステム内にインストールされたドライバコンピュータプログラムである。たとえば、コンピューティングデバイス102Aに関して、デバイスドライバ120Aはコンピューティングデバイス102Aのオペレーティングシステム内にインストールされるため、結果として周辺デバイス106Bにはアプリケーションプログラム122Aのようなソフトウェアによってアクセス可能である。コンピューティングデバイス102Bについても、デバイスドライバ120B、周辺デバイス106B、およびアプリケーションプログラム122Bに関して同様である。しかしながら、特にデバイスドライバ118Aは、周辺デバイス106Bがコンピューティングデバイス102Aのシリアルバス104Aに接続されていないことを認識しないことに留意されたい。この点において、デバイスドライバ120Aは、デバイスドライバ120Bが符号化されるのとまったく同様に符号化することができる。さらに、デバイスドライバ118Aは周辺デバイス106Bがシリアルバス104Aに接続されていないことを認識しないため、アプリケーションプログラム122Aも、周辺デバイス106Bがシリアルバス104Aに接続されていないことを認識しない。コンピューティングデバイス102は、集合的にネットワークドライバ116と呼ばれるネットワークドライバ116Aおよび116Bを、それぞれ含む。ネットワークドライバ116は、それぞれ、対応するコンピューティングデバイス102のオペレーティングシステム内にインストールされたドライバコンピュータプログラムであるため、結果として対応するハードウェアネットワークコントローラ114ならびにネットワーク112にはソフトウェアによってアクセス可能である。たとえば、コンピューティングデバイス102Aに関して、ネットワークドライバ116Aがコンピューティングデバイス102Aのオペレーティングシステム内にインストールされるため、結果としてハードウェアネットワークコントローラ114Aならびにネットワーク112には、ソフトウェアによってアクセス可能である。コンピューティングデバイス102Bについても、ハードウェアネットワークコントローラ114Bおよびネットワーク112との関連でネットワークドライバ116Bに関して同様である。前述のように、典型的には、コンピューティングデバイスは他のコンピューティングデバイスのシリアルバスに接続された周辺デバイスにはアクセスできないが、むしろ、それ自体のシリアルバスに接続された周辺デバイスにのみアクセスできる。たとえば図1に関して、典型的にはコンピューティングデバイス102Aは周辺デバイス106Bにアクセスできず、典型的にはコンピューティングデバイス102Bは周辺デバイス106Aにアクセスできない。しかしながら本発明の諸実施形態は、コンピューティングデバイス102Aを、周辺デバイス106Aに加えて周辺デバイス106Bにもアクセス可能にし、コンピューティングデバイス102Bを、周辺デバイス106Bに加えて周辺デバイス106Aにもアクセス可能にする。これは、コンピューティングデバイス102がネットワーク112を介してリモート周辺デバイス106にアクセスできるようにするために互いに対話する、各コンピューティングデバイス102内の、シリアルドライバ110、ネットワークドライバ116、およびデバイスドライバ118および120によって達成される。シリアルドライバ110は、従来技術に比べて、リモート周辺デバイス106に対するコンピューティングデバイス102からの要求がネットワーク112を介して送信されるように修正されている。シリアルドライバ110は、従来技術に比べて、リモートコンピューティングデバイス102に向けての周辺デバイス106からの応答は、ネットワーク112を介して送信されるようにも修正されている。比較すると、デバイスドライバ118および120は、従来技術に比べて変更されないままとすることができる。ネットワークドライバ116は、ネットワークドライバ116が実行する前にネットワーク112を介して受信されたネットワークパケットをシリアルドライバ110が検査する範囲内で、従来技術に比べて修正することができる。シリアルドライバ110がどのように修正されるかについては、具体的に、図2および図3に関してそれらの機能の説明によって記述される。図2は、本発明の実施形態に従って、データが、周辺デバイス106Aまたは周辺デバイス106Bのいずれかなどの周辺デバイスへと、コンピューティングデバイス102Aのアプリケーションプログラム122Aによって送信されるのを例示的に表す方法を示す。アプリケーションプログラム122Aは、周辺デバイスに関するデータを周辺デバイスのためのデバイスドライバに送信する202。たとえば、アプリケーションプログラム122Aが周辺デバイス106Aに関するデータを送信している場合、データはデバイスドライバ118Aへと送信されるが、プログラム122Aが周辺デバイス106Bに関するデータを送信している場合、データはデバイスドライバ120Aへと送信される。当該のデバイスドライバはアプリケーションプログラム122Aからデータを受信し、そのデータを含むフレームを作成して、そのフレームをシリアルドライバ110Aへと送信する204。フレームは、当該のシリアルバス上の所期の周辺デバイスを識別するデータ構造である。たとえば、シリアルバス上に複数の周辺デバイスが存在する場合、具体的に1つのこうした周辺デバイスに向けてのデータは、この周辺デバイスを識別するフレーム内に含められる。このフレームは、たとえばRS-485フレームとすることが可能であり、データの送信者、データの整合性を保証するためのチェックサム値、ならびに他の情報を識別することも可能である。シリアルドライバ110Aはフレームを受信し、フレームのデータが関連付けられている周辺デバイスが、シリアルバス104Aまたはシリアルバス104Bのいずれに接続されているかを判別する206。たとえば一実施形態では、シリアルドライバ110Aは、メディアアクセスコントローラMACアドレスなどによってシステム100内の各コンピューティングデバイス102のテーブルを、ならびに、各コンピューティングデバイス102のシリアルバス104に接続された各周辺デバイス106のテーブルを維持する。次にこのテーブルを参照することによって、シリアルドライバ110Aは、フレームのデータが関連付けられている周辺デバイスが、ローカルシリアルバス104Aまたはリモートシリアルバス104Bのいずれに接続されているかを判別する。当該の周辺デバイスがローカルシリアルバス104Aに接続されている場合、シリアルドライバ110Aは、ハードウェアシリアルコンポーネント108Aを介し、シリアルバス104Aを通じて周辺デバイスへとフレームを送信する208。しかしながら、当該の周辺デバイスがリモートシリアルバス104Bに接続されている場合、シリアルドライバ110Aはフレームをネットワークパケット内にラッピングし、このネットワークパケットをネットワークドライバ116Aへと送信する212。ネットワークドライバ116Aはネットワークパケットを受信し、これを周辺デバイス106Bへの伝送用に、コンピューティングデバイス102Bへと送信する214。シリアルドライバ110Aが内部にフレームをラッピングしているネットワークパケットは、コンピューティングデバイス102Bを、シリアルバス104Bに対してローカルなコンピューティングデバイスであるものと識別する。ネットワークパケットの構造について、以下の詳細な説明でより詳細に説明する。アプリケーションプログラム122Aあるいはデバイスドライバ118Aまたは120Aは、いずれも、プログラム122Aのデータの送信先である周辺デバイスが、ローカルシリアルバス104Aに接続されているか否かを認識していないことに留意されたい。アプリケーションプログラム122Aは、単に、周辺デバイスのための適切なデバイスドライバ118Aまたは120Aへとデータを送信するのみである。デバイスドライバ118Aまたは120Aは、そのデータを含むフレームを作成し、このフレームをシリアルドライバ110Aへと送信するのみである。周辺デバイスがローカルの周辺デバイスであるかリモートの周辺デバイスであるかを判別するのがシリアルドライバ110Aである。前者の場合、シリアルドライバ110Aは、周辺デバイスが受信するためにシリアルバス104Aを介してフレームを送信する。後者の場合、シリアルドライバ110Aは、フレームをネットワークパケット内にラッピングし、周辺デバイスが接続されているシリアルバスのローカルコンピューティングデバイスへ伝送するために、このネットワークパケットをネットワークドライバ116Aへと送信する。ネットワークドライバ116Aは、ハードウェアネットワークコンポーネント114Aを通じ、ネットワーク112を介して、当該のローカルコンピューティングデバイスへとネットワークパケットを送信する。ネットワークドライバ116Aも、ネットワークドライバ116Aがネットワーク112を介してネットワークパケットを伝送する限りは、任意の他のネットワークパケットとまったく同様に、所期の周辺デバイスがリモートであることを認識していない。図3は、本発明の実施形態に従って、コンピューティングデバイス102Bによって受信される、周辺デバイスに関連付けられたデータを例示的に表す方法300を示す。たとえばこのデータは、コンピューティングデバイス102Aのアプリケーションプログラム122Aから、コンピューティングデバイス102Bのシリアルバス104Bに接続された周辺デバイス106Bに向けて送信することが可能である。他の例として、このデータは、コンピューティングデバイス102Aのシリアルバス104Aに接続された周辺デバイス106Aから、周辺デバイス106Aに対して以前に要求を生成したアプリケーションプログラム122Bへの返答として、送信することが可能である。ネットワークドライバ116Bは、データを含むフレームが内部にラッピングされたネットワークパケットを、ハードウェアネットワークコントローラ114Bを介し、ネットワーク112を通じて受信する302。しかしながら、ネットワークドライバ116Bがネットワークパケットを検査する前に、シリアルドライバ110Bは、ネットワークパケットが、シリアルバスに接続された周辺デバイスに関連付けられた、内部にラッピングされたデータのフレームを有するかどうかを判別するために、ネットワークパケットを検査する304。ネットワークパケットが内部にラッピングされたこうしたデータのフレームを有さない場合、ネットワークパケットはネットワークドライバ116Bによって従来通りに処理される。しかしながら、ネットワークパケットが、シリアルバスに接続された周辺デバイスに関連付けられた、内部にラッピングされたデータのフレームを有する場合、以下のように実行される306。シリアルドライバ110Bは、ネットワークパケットからデータのフレームをアンラッピングする308。シリアルドライバ110Bは、データのフレームが、シリアルバス104Bに接続された周辺デバイスに関連付けられるかどうかも判別する310。すなわち、シリアルドライバ110Bは、データのフレームが、コンピューティングデバイス102Bに対してローカルな周辺デバイスに関連付けられるかどうかを判別する。この判別は、図2の方法200に関して上記で説明したように、テーブルを参照することによって実行可能である。データのフレームが、シリアルバス104Bに接続された周辺デバイスに関連付けられる場合、シリアルドライバ110Bは、ハードウェアシリアルコンポーネント108Bを通じ、シリアルバス104Bを介して、このデータのフレームを周辺デバイスへと送信する312。この場合、フレームに含まれるデータは、他のコンピューティングデバイスのアプリケーションプログラムなどによって他のコンピューティングデバイスで生成された。フレーム自体も、他のコンピューティングデバイスのシリアルドライバなどによって、他のコンピューティングデバイスで生成された。しかしながら、データのフレームが、シリアルバス104Bに接続されていない周辺デバイスに関連付けられている場合、以下のように実行される314。シリアルドライバ110Bは、データのフレームを周辺デバイスのためのローカルデバイスドライバへと送信する316。たとえば、当該の周辺デバイスが周辺デバイス106Aである場合、シリアルドライバ110Bは、データのフレームを周辺デバイス106Aのためのデバイスドライバ118Bへと送信する。デバイスドライバは、データのフレームを受信し、このフレームからデータを復号し、データの向け先であるアプリケーションプログラムへとデータを送信する318。この場合、フレームに含まれるデータは、他のコンピューティングデバイスのシリアルバスに接続されたリモート周辺デバイスで生成された。リモート周辺デバイスがフレームも同様に生成したか、またはこの他のコンピューティングデバイスのシリアルドライバがフレームを生成した可能性がある。たとえばアプリケーションプログラム122Bは、当初、図2の方法200に従って、周辺デバイス106Aにデータを戻す旨を要求するために、周辺デバイス106Aへとデータを送信した可能性がある。要求を受信すると、周辺デバイス106Aは応答データを生成し、応答データをアプリケーションプログラム122Bへと返送する。この場合、データを含むフレームが内部にラッピングされたネットワークパケットを受信するため、および最終的にこのデータをアプリケーションプログラム122Bへと送信するために、図3の方法300が実行される。フレームからデータを復号し、データの向け先であるアプリケーションプログラムへとデータを送信するデバイスドライバは、いくつかの異なる方法のうちの1つでアプリケーションプログラムの識別を認識することができる。一実施形態では、一度に1つのコンピュータプログラムのみが、当該の周辺デバイスとの通信セッションを維持することができる可能性がある。したがってデバイスドライバは、どのコンピュータプログラムがその周辺デバイスとの通信セッションを有するかを認識するため、結果として周辺デバイスから戻されたデータは、このコンピュータプログラムへと自動的に送信される。しかしながら他の実施形態では、複数のコンピュータプログラムが同時に周辺デバイスにアクセスできる可能性がある。この場合、データの向け先であるアプリケーションプログラムは、周辺デバイスとの間のすべての通信で使用される、固有またはほぼ固有の識別子を有することができる。周辺デバイスのためのデバイスドライバはこれらの固有の識別子を追跡するため、結果としてアプリケーションプログラムは、それらに向けられるデータを周辺デバイスから正しく受信する。アプリケーションプログラム122B、ネットワークドライバ116B、あるいはデバイスドライバ118Bまたは120Bは、いずれも、プログラム122Bのデータの受信元である周辺デバイスがローカルシリアルバス104Bに接続されているか否かを認識していないことに留意されたい。周辺デバイスのための適切なデバイスドライバ118Bまたは120Bは、データを含むフレームをシリアルドライバ110Bから単に受信するのみである。アプリケーションプログラム122Bは、フレームから復号されたデータを、適切なデバイスドライバ118Bまたは120Bから単に受信するのみである。さらにネットワークドライバ116Bは、ドライバ116Bがネットワーク112を介して任意の他のネットワークパケットを受信するのとまったく同様に、ネットワーク112を介してこのネットワークパケットを単に受信するのみである。むしろ、アプリケーションプログラム122Bのデータの受信元である周辺デバイスがローカルシリアルバス104Bに接続されているか否かを認識しているのは、シリアルドライバ110Bである。シリアルドライバ110Bは、周辺デバイス106Bおよび周辺デバイス106Aの両方からデータを受信し、後者は、ネットワークドライバ116Bおよびハードウェアネットワークコンポーネント114Bを通じ、ネットワーク112を介する。シリアルドライバ110Bがネットワークパケットからデータのフレームをアンラッピングした場合、このデータのフレームは、シリアルバス104Bに接続されたローカル周辺デバイスから受信されたデータのフレームとまったく同様である。図4は、本発明の実施形態に従って、データのフレームがネットワークパケット400内にどのようにラッピング可能であるかを説明するために、ネットワークプロトコルスタック402に関して代表的なネットワークパケット400を示す。ネットワークプロトコルスタック402は、リンク層404、ネットワーク層406、移送層408、およびアプリケーション層410を含む。したがって、ネットワークプロトコルスタック402は、伝送制御プロトコルTCP/インターネットプロトコルIP通信で使用されるような、従来のネットワークプロトコルスタックとすることができる。リンク層404は、ネットワークプロトコルスタック402内の最下層として、実際のネットワークハードウェアと通信する責務を負う。リンク層404は、IPアドレスなどの数値アドレスではなく、典型的にはMACアドレスによってデバイスを識別する。これと比べて、ネットワーク層406はネットワークを介してどのようにデータをルーティングするかを決定する責務を負い、この層では、デバイスはIPアドレスなどではなく数値アドレスによってアドレス指定される。移送層408はアプリケーション層410にデータ流れを提供し、この層にTCPが常駐する。最後にアプリケーション層410は、通常、コンピュータプログラムがネットワークと対話する場所であるため、ファイル伝送プロトコルFTP、テルネット、eメールなどのようなアプリケーションはアプリケーション層410に常駐する。図4の実施形態では、データのフレームはリンク層404のネットワークパケット400内にラッピングされる。具体的に言えば、リンク層404で、ネットワークパケット400はEthernetRタイプなどの特定のタイプ412を有する。図4の実施形態は、ネットワークパケット400のペイロード414がシリアルバスに接続された周辺デバイスに関するデータのフレームを含むすなわち内部にラッピングしていることを識別するために、0×1234などのこのタイプ412に関する特定の値を保持する。したがって、シリアルドライバが、こうしたデータのフレームが内部にラッピングされているかどうかを判別するためにネットワークパケットを検査する場合、ネットワークパケット400のタイプ412が当該の所定の値と一致するかどうかを単に判別するだけでよい。データのフレームがリンク層404でネットワークパケット400内にラッピングされていることにより、図4の実施形態に一定の特性が鼓吹されるimbue。第1に、データのフレームの周辺デバイスがローカルなコンピューティングデバイスは、ルーティング可能なIPアドレスなどのルーティング可能な数値アドレスではなく、MACアドレスにより、ネットワークパケット400の1つまたは複数の他のフィールドによって識別される。これは、コンピューティングデバイスのシリアルドライバが、変更可能なコンピューティングデバイス102のIPアドレスを維持する必要がなく、むしろ通常は変更されないデバイス102のMACアドレスのみを維持することを意味する。次いで、より重要なことに、データのフレームを含むネットワークパケット400は、ネットワーク112内でルーティング可能ではない。すなわち、ネットワークパケット400のソースコンピューティングデバイスおよびネットワークパケット400の宛先コンピューティングデバイスは、どちらも、1つまたは複数のネットワークスイッチまたはハブを介して、およびいかなる介在ルータもなしに、互いに接続される必要がある。ルータは、IPアドレスなどのそれらの関連付けられたルーティング可能アドレスによって、ネットワークパケットを適切なネットワークデバイスへとルーティング可能なネットワークデバイスである。しかしながら、ネットワークパケット400は、IPアドレスなどのルーティング可能アドレスによっては識別されず、むしろMACアドレスによってのみ識別される。図4の実施形態のこの第2の特性により、結果として2つの効果が生じる。第1に、所与のコンピューティングデバイスが通信可能なリモート周辺デバイスを、ルータによってネットワーク112内の所与の通信デバイスから分離されていないコンピューティングデバイスのシリアルバスに接続された周辺デバイスに制限する。したがって、所与のコンピューティングデバイスがネットワーク112を介して通信可能なリモート周辺デバイスは、所与のコンピューティングデバイスがネットワーク112を介して通信可能なコンピューティングデバイスよりも制限される。しかしながら、第2に、この制限により、図4の実施形態内に追加および特有のセキュリティが提供される。具体的に言えば、たとえネットワーク112がインターネットなどの外部ネットワークにさらされる場合であっても、周辺デバイス106へのアクセス権を得るための外部の不正または悪意ある試行は恐らく失敗に終わることになる。これは、周辺デバイス106へのアクセス権を得るためのこうした外部試行が、ルータによってコンピューティングデバイス102から必然的に分離されたソースコンピューティングデバイスから実行されることになるためである。したがって、非現実的であるが、ソースコンピューティングデバイスがコンピューティングデバイス102のMACアドレスを知っているかまたはこれを推測しない限り、ソースコンピューティングデバイスは、たとえ周辺デバイス106が接続されたシリアルバス104を有するコンピューティングデバイス102にアクセスできる場合であっても、周辺デバイス106にアクセスできないことになる。図5は、本発明の実施形態に従った、図1の任意のコンピューティングデバイス102を実装可能な代表的なコンピューティングデバイス500を示す。コンピューティングデバイス500は、前述のように、ハードウェアシリアルコンポーネント504、ハードウェアネットワークコンポーネント506、およびシリアルバス508などの、ハードウェア502を含む。ハードウェア502は、通常、1つまたは複数のプロセッサ510、揮発性メモリ512、および不揮発性ストレージデバイス514も含む。さらにハードウェア502は、図5に示されたものに加えて、あるいはそれらの代わりに、またはその両方で、他のタイプのハードウェアを含むこともできる。コンピューティングデバイス500はオペレーティングシステム516を含む。オペレーティングシステム516およびその構成コンポーネントは、それらがハードウェア502上に格納され、ハードウェア502から、およびハードウェア502によって実行される限り、ハードウェア502によって実装されるものと呼ばれる。オペレーティングシステム516は、ユーザモード518およびカーネルモード520に分割される。シリアルバス508に接続された周辺デバイスのためのデバイスドライバ522、ならびにアプリケーションプログラム524は、ユーザモード518内で実行し、シリアルドライバ526およびネットワークドライバ528はカーネルモード520内で実行する。ドライバ522、526、および528はオペレーティングシステム516の一部および構成要素であるとみなすことができるが、アプリケーションプログラム524はそのようにみなされないことに留意されたい。カーネルモード520で実行される必須のシステムプロセスにある程度の保護またはセキュリティが提供できるように、ユーザモード518とカーネルモード520とが区別されるため、結果としてこれらのプロセスはユーザモード518内から直接影響を受けることがない。したがって、カーネルモード520は、オペレーティングシステム516の必須コンポーネントを含むその基本部分であり、ユーザモード518内で実行するアプリケーションプログラム524に基本サービスを提供する、コンピューティングデバイス500のカーネルを含む。当業者であれば理解できるように、本発明の諸態様は、システム、方法、またはコンピュータプログラム製品として具体化することができる。したがって、本発明の諸実施形態の諸態様は、全体としてハードウェア実施形態、全体としてソフトウェア実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、あるいは、本明細書ではすべてが回路、モジュール、またはシステムと総称することが可能な、ソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができる。さらに、本発明の諸態様は、その上で実施されるコンピュータ読み取り可能プログラムコードを有する1つまたは複数のコンピュータ読み取り可能媒体内で具体化された、コンピュータプログラム製品の形を取ることができる。1つまたは複数のコンピュータ読み取り可能媒体の任意の組み合わせが使用可能である。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能ストレージ媒体とすることができる。コンピュータ読み取り可能ストレージ媒体は、たとえば、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、またはデバイス、あるいはそれらの任意の好適な組み合わせとすることができるが、これらに限定されない。コンピュータ読み取り可能ストレージ媒体のより具体的な例限定的なリストは、1本または複数の配線を有する電気接続、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み取り専用メモリROM、消去可能プログラマブル読み取り専用メモリEPROMまたはフラッシュメモリ、光ファイバ、ポータブルコンパクトディスク読み取り専用メモリCD-ROM、光ストレージデバイス、磁気ストレージデバイス、またはそれらの任意の好適な組み合わせを含む。本明細書との関連において、コンピュータ読み取り可能ストレージ媒体は、命令実行のシステム、装置、またはデバイスによって、またはこれらに関連して使用するためのプログラムを、包含または格納可能な、任意の有形媒体とすることができる。コンピュータ読み取り可能信号媒体は、たとえばベースバンド内に、または搬送波の一部として、内部でコンピュータ読み取り可能プログラムコードが実施される伝搬データ信号を含むことができる。こうした伝搬信号は、電磁、光、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、様々な形のうちの任意の形を取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能ストレージ媒体ではなく、命令実行のシステム、装置、またはデバイスによって、あるいはこれらに関連して使用するためのプログラムを、通信、伝搬、または移送可能な、任意のコンピュータ読み取り可能媒体とすることができる。コンピュータ読み取り可能媒体上で実施されるプログラムコードは、無線、有線、光ファイバケーブル、RFなど、またはそれらの任意の好適な組み合わせを含むが、これらに限定されない、任意の適切な媒体を使用して伝送可能である。一般に、コンピュータプログラム製品は、1つまたは複数のコンピュータプログラムが格納可能なコンピュータ読み取り可能媒体を含む。1つまたは複数のハードウェアデバイスのうちの1つまたは複数のプロセッサによってコンピュータ読み取り可能媒体からコンピュータプログラムを実行することによって、方法が実行される。たとえば、実行されることになる方法は、前述の方法のうちの1つまたは複数とすることができる。コンピュータプログラム自体がコンピュータプログラムコードを含む。本発明の諸態様に関する動作を実施するためのコンピュータプログラムコードは、JavaR、SmalltalkTM、またはCRなどのオブジェクト指向プログラミング言語、および、Cプログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで作成可能である。プログラムコードは、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェアパッケージとして、部分的にユーザのコンピュータ上および部分的にリモートコンピュータ上で、あるいは全体としてリモートコンピュータまたはサーバ上で、実行可能である。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワークLANまたはワイドエリアネットワークWANを含む任意のタイプのネットワークを介して、ユーザのコンピュータに接続可能であるか、あるいは、たとえばインターネットサービスプロバイダを使用してインターネットを介して外部コンピュータに接続可能である。以上、本発明の諸態様について、本発明の諸態様に従った方法、装置システム、およびコンピュータプログラム製品の流れ図あるいはブロック図またはその両方を参照しながら説明してきた。流れ図あるいはブロック図またはその両方の各ブロック、および流れ図あるいはブロック図またはその両方における各ブロックの組み合わせは、コンピュータプログラム命令によって実装可能であることを理解されよう。これらのコンピュータプログラム命令は、マシンを製造するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラマブルデータ処理装置の、プロセッサに提供可能であるため、結果として、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサを介して実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能/動作を実装するための手段を作成する。これらのコンピュータプログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスに対して、特定の様式で機能するように指示することができる、コンピュータ読み取り可能媒体内に格納することも可能であるため、結果として、コンピュータ読み取り可能媒体内に格納された命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能/動作を実装する命令を含む製品を製造する。コンピュータプログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイス上にロードして、コンピュータ実装プロセスを生成するために、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させることも可能であり、結果として、コンピュータまたは他のプログラマブル装置上で実行する命令が、流れ図あるいはブロック図またはその両方のブロックに指定された機能/動作を実装するためのプロセスを提供する。図面内の流れ図およびブロック図は、本発明の様々な実施形態に従った、システム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能、および動作を示すものである。この点に関して、流れ図またはブロック図内の各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を備える、モジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替の実施では、ブロック内に記載された機能を、図面内に記載された順番以外で実行できることにも留意されたい。たとえば連続して示された2つのブロックは、含まれる機能に応じて、実際にはほぼ同時に実行可能であるか、時にはそれらのブロックを逆の順序で実行することができる。ブロック図あるいは流れ図またはその両方の各ブロック、および、ブロック図あるいは流れ図またはその両方におけるブロックの組み合わせは、指定された機能または動作、あるいは特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実行する、特定用途向けハードウェアベースシステムによって、実装可能であることにも留意されたい。最終的に、本明細書では特定の諸実施形態について例示および説明してきたが、当業者であれば、示された特定の諸実施形態を、同じ目的を達成するように算出された任意の配置構成に置き換え可能であることが理解されることに留意されたい。したがって本明細書は、本発明の諸実施形態の任意の適応または変形をカバーすることが意図されている。したがって本発明は、特許請求の範囲およびその等価物によってのみ限定されるものであることが明白に意図されている。