(57)【要約】【課題】  複数の媒体にわたるネットワークおよびインターフェースの選択を実施するためのシステムおよび方法を提供すること。【解決手段】  開示するシステムは、異なる媒体を介した通信をサポートするネットワークのセットにまたがる自動化ネットワークインターフェース構成決定を容易にする。異なる通信媒体に関連する媒体特有モジュールのセットが、ネットワークインターフェースステータス／機能情報を獲得する。その後、規則エンジンが、獲得されたネットワークインターフェースステータス／機能情報、およびインターフェースとネットワークのいずれかに起因するその他の任意の適切なパラメータに、指定のネットワーク選択規則を適用し、接続を確立／維持するための１つまたは複数のネットワークおよびインターフェースを選択する。【選択図】  図３
2005130474.tif 000002
【特許請求の範囲】
【請求項１】
複数の通信媒体にまたがるネットワーク情報に基づいたネットワーク選択をサポートするコンピューティングシステムであって、
ネットワーク選択基準を維持するための規則データストアと、
前記コンピューティングシステムがネットワークインターフェースのセットを介して接続することのできるネットワークのセットに関連する潜在的に複数の通信媒体にまたがるネットワークインターフェース情報の獲得を容易にする媒体特有モジュールインターフェースと、
前記規則データストアからのネットワーク選択基準を、潜在的に複数の媒体にまたがる前記蓄積されたネットワークインターフェース情報に適用することによって、前記ネットワークのセットのうちの１つを指定するためのネットワーク選択ロジックと
を備えたことを特徴とするコンピューティングシステム。
【請求項２】
前記媒体特有モジュールインターフェースおよび前記ネットワーク選択ロジックは、前記規則データストアへのアクセスを有する規則エンジンに関連付けられていることを特徴とする請求項１に記載のコンピューティングシステム。
【請求項３】
前記媒体特有モジュールインターフェースは、ネットワークインターフェースに向けられた要求を前記規則エンジンから受け取る正規化モジュールを備えたことを特徴とする請求項２に記載のコンピューティングシステム。
【請求項４】
特定の媒体種類に関連するネットワークインターフェースに関するネットワークインターフェース情報を獲得するように構成された媒体特有モジュールのセットをさらに備えたことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項５】
前記媒体特有モジュールは、特定のネットワークインターフェースに関連する媒体特有ドライバからネットワークインターフェース情報を獲得することを特徴とする請求項４に記載のコンピューティングシステム。
【請求項６】
前記複数の通信媒体は、少なくとも無線ワイドエリアネットワーク媒体および無線ローカルエリアネットワーク媒体を含むことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項７】
前記無線ローカルエリアネットワーク媒体は、１つまたは複数の８０２．１１無線プロトコルを含むことを特徴とする請求項６に記載のコンピューティングシステム。
【請求項８】
前記ネットワーク選択基準は、前記媒体に関連するネットワークパラメータに基づいて、少なくとも２つの媒体間の優先順位を指定することを特徴とする請求項１に記載のコンピューティングシステム。
【請求項９】
前記ネットワーク選択基準は、前記媒体に関連するネットワーク種類に基づいて、少なくとも２つの媒体間の優先順位を指定することを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１０】
前記ネットワーク選択基準は、前記コンピューティングシステムの現在位置に基づいて優先順位を指定することを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１１】
前記ネットワーク選択基準は、論理ネットワーク間の優先順位を指定することを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１２】
前記ネットワーク選択基準は、時間パラメータに基づいて優先順位を指定することを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１３】
前記ネットワーク選択ロジックは、ネットワークを求めてネットワークインターフェースのセットを周期的に走査する状態機械に組み込まれ、前記ネットワーク選択基準をネットワークおよびインターフェースのセットに適用して現在ネットワークおよびインターフェース選択を実施し、前記現在ネットワークおよびインターフェース選択に従って構成命令を発行することを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１４】
走査履歴中で維持されている前の走査結果に基づいて周期的走査を制御するための、ネットワークインターフェースに関連する走査エンジンをさらに備えたことを特徴とする請求項１に記載のコンピューティングシステム。
【請求項１５】
コンピューティングシステムがネットワークインターフェースを介して開始する接続の接続先になるネットワークとインターフェースとの組合せを、複数の通信媒体にまたがるネットワーク情報に基づいて選択する方法であって、
ネットワーク選択基準にアクセスするステップと、
前記コンピューティングシステムがネットワークインターフェースのセットを介して接続することのできるネットワークのセットに関連する潜在的に複数の通信媒体にまたがるネットワークインターフェース情報を蓄積するステップと、
潜在的に複数の媒体にまたがる前記ネットワークインターフェース情報にネットワーク選択基準を適用することによって、前記ネットワークのセットのうちの１つと、前記ネットワークインターフェースのセットからのネットワークインターフェースとを指定するステップと
を含むことを特徴とする方法。
【請求項１６】
前記ネットワーク選択基準は、構成可能な規則データストアからアクセスされることを特徴とする請求項１５に記載の方法。
【請求項１７】
前記指定するステップに従ってネットワークインターフェース構成命令を発行するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
前記蓄積するステップは、潜在的に複数の異なる種類の通信媒体ドライバに関連する媒体特有モジュールのセットと、前記指定するステップを実施する規則エンジンとの間に介在する正規化モジュールによって容易にされることを特徴とする請求項１５に記載の方法。
【請求項１９】
前記媒体特有モジュールによって、特定のネットワークインターフェースに関連する前記通信媒体ドライバからネットワークインターフェース情報を獲得するステップをさらに含むことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記複数の通信媒体は、少なくとも無線ワイドエリアネットワーク媒体および無線ローカルエリアネットワーク媒体を含むことを特徴とする請求項１５に記載の方法。
【請求項２１】
前記ネットワーク選択基準は、前記媒体に関連するネットワークパラメータに基づいて、少なくとも２つの媒体間の優先順位を指定することを特徴とする請求項１５に記載の方法。
【請求項２２】
前記ネットワーク選択基準は、前記媒体に関連するネットワーク種類に基づいて、少なくとも２つの媒体間の優先順位を指定することを特徴とする請求項１５に記載の方法。
【請求項２３】
前記ネットワーク選択基準は、前記コンピューティングシステムの現在位置に基づいて優先順位を指定することを特徴とする請求項１５に記載の方法。
【請求項２４】
前記ネットワーク選択基準は、論理ネットワーク間の優先順位を指定することを特徴とする請求項１５に記載の方法。
【請求項２５】
前記ネットワーク選択基準は、時間パラメータに基づいて優先順位を指定することを特徴とする請求項１５に記載の方法。
【請求項２６】
前記ネットワーク選択ロジックは状態機械に組み込まれ、さらに、前記状態機械の制御下で、
ネットワークを求めてネットワークインターフェースのセットを走査するステップと、
前記ネットワーク選択基準をネットワークおよびインターフェースのセットに適用して現在ネットワークおよびインターフェース選択を実施するステップと、
前記現在ネットワークおよびインターフェース選択に従って構成命令を発行するステップと
を周期的に実施することを含むことを特徴とする請求項１５に記載の方法。
【請求項２７】
走査アルゴリズムと、走査履歴中で維持されている前の走査結果とに少なくとも部分的に基づいて、前記ネットワークインターフェースのセットのうちの指定の１つまたは複数に対するネットワーク走査を開始するステップをさらに含むことを特徴とする請求項１５に記載の方法。
【請求項２８】
コンピューティングシステムがネットワークインターフェースを介して開始する接続の接続先になるネットワークとインターフェースとの組合せを、複数の通信媒体にまたがるネットワーク情報に基づいて選択することを容易にするためのコンピュータ実行可能命令を備えたコンピュータ可読媒体であって、前記コンピュータ実行可能命令は、
ネットワーク選択基準にアクセスするステップと、
前記コンピューティングシステムがネットワークインターフェースのセットを介して接続することのできるネットワークのセットに関連する潜在的に複数の通信媒体にまたがるネットワークインターフェース情報を蓄積するステップと、
潜在的に複数の媒体にまたがる前記ネットワークインターフェース情報にネットワーク選択基準を適用することによって、前記ネットワークのセットのうちの１つと、前記ネットワークインターフェースのセットからのネットワークインターフェースとを指定するステップとを容易にすることを特徴とするコンピュータ可読媒体。
【請求項２９】
前記ネットワーク選択基準は、構成可能な規則データストアからアクセスされることを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３０】
前記コンピュータ実行可能命令はさらに、前記指定するステップに従ってネットワークインターフェース構成命令を発行するステップを容易にすることを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３１】
前記蓄積するステップは、潜在的に複数の異なる種類の通信媒体ドライバに関連する媒体特有モジュールのセットと、前記指定するステップを実施する規則エンジンとの間に介在する正規化モジュールによって容易にされることを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３２】
前記媒体特有モジュールによって、特定のネットワークインターフェースに関連する前記通信媒体ドライバからネットワークインターフェース情報を獲得するためのコンピュータ実行可能命令をさらに含むことを特徴とする請求項３１に記載のコンピュータ可読媒体。
【請求項３３】
前記複数の通信媒体は、少なくとも無線ワイドエリアネットワーク媒体および無線ローカルエリアネットワーク媒体を含むことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３４】
前記ネットワーク選択基準は、前記媒体に関連するネットワークパラメータに基づいて、少なくとも２つの媒体間の優先順位を指定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３５】
前記ネットワーク選択基準は、前記媒体に関連するネットワーク種類に基づいて、少なくとも２つの媒体間の優先順位を指定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３６】
前記ネットワーク選択基準は、前記コンピューティングシステムの現在位置に基づいて優先順位を指定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３７】
前記ネットワーク選択基準は、論理ネットワーク間の優先順位を指定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３８】
前記ネットワーク選択基準は、時間パラメータに基づいて優先順位を指定することを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項３９】
前記ネットワーク選択ロジックは状態機械に組み込まれ、さらに、前記状態機械の制御下で、
ネットワークを求めてネットワークインターフェースのセットを走査するステップと、
前記ネットワーク選択基準をネットワークおよびインターフェースのセットに適用して現在ネットワークおよびインターフェース選択を実施するステップと、
前記現在ネットワークおよびインターフェース選択に従って構成命令を発行するステップと
を周期的に実施するためのコンピュータ実行可能命令を備えたことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【請求項４０】
走査アルゴリズムと、走査履歴中で維持されている前の走査結果とに少なくとも部分的に基づいて、前記ネットワークインターフェースのセットのうちの指定の１つまたは複数に対するネットワーク走査を開始するためのコンピュータ実行可能命令をさらに備えたことを特徴とする請求項２８に記載のコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般に、コンピュータシステムの領域に関する。より詳細には、本発明は、コンピューティングデバイス内で、さらに具体的には複数の異なるネットワーキング媒体に関連する複数のネットワークインターフェースをサポートするコンピューティングデバイス中で、ネットワークインターフェースに関する構成を選択および決定する方法に関する。
【背景技術】
【０００２】
無線ネットワーキングは、ネットワーク接続への様々な扉を開いてきた。今日、ユーザは、ネットワーキングソフトウェアとハードウェアの組合せを介して、事実上どんな位置からでもネットワークリソースにアクセスすることができる。実際、多くの場合にユーザは、任意の時点で様々な通信媒体の中から選択することができる。本明細書で言う通信媒体とは、ユーザのコンピュータがネットワークを介して通信するための、物理的ならびに論理的（プロトコル）手段を指す。通信媒体の例には、セルラー無線ワイドエリアネットワーク、パーソナルエリアネットワーク（例えばブルートゥース）、無線ローカルエリアネットワーク（例えば８０２．１１（ａ／ｂ／ｇ））、有線ローカルエリアネットワーク、有線ワイドエリアネットワークが含まれる。例えば、無線ローカルエリアネットワーク、有線ローカルエリアネットワーク、無線ワイドエリアネットワーク、有線ワイドエリアネットワーク接続をサポートするオフィス環境内では、複数の通信媒体が同時に利用可能である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
様々な技術（例えば無線ローカルエリアネットワーク、無線ワイドエリアネットワーク、配線式ローカルおよびワイドエリアネットワーク、パーソナルコンピュータエリアネットワークなど）を介して潜在的に到達可能な複数のネットワークがあると、ネットワーク接続可能なコンピューティングデバイス上に、ネットワーク選択機能が必要になる。知られているコンピューティングシステム、特にＷＩＮＤＯＷＳ（登録商標）ＸＰを実行するコンピュータシステムでは、自動化されたネットワーク選択は現在、特定の通信媒体すなわち無線ＬＡＮの優先リスト中で識別されるネットワークの順番に基づく。各ネットワークごとの優先リストベースの自動化選択手法では、現リストエントリを考慮するときの唯一の問題は、「コンピューティングデバイスが現在、識別されたネットワークに接続することができるか？」ということである。答がイエスなら、接続が確立される。答がノーなら、（ネットワーク接続が確立されるまで）優先リスト内の次のエントリが使用される。しかし、この優先リスト手法は、自動的にネットワークに接続するようにコンピューティングデバイスを構成する際に、柔軟性が幾分限られている。
【課題を解決するための手段】
【０００４】
本発明は、複数の通信媒体にまたがる選択規則およびネットワークインターフェース機能情報に基づいてネットワークおよびインターフェースを選択するためのフレームワークおよび方法を含む。このフレームワークは、ネットワーク選択基準を維持するための規則データストアを備える。基準は、様々な形をとることができ、潜在的に複数の媒体にわたる選択をサポートすることができる。
【０００５】
媒体特有モジュールインターフェースが、利用可能なネットワークインターフェースに関連するネットワークインターフェース情報を獲得するのを容易にする。蓄積される情報は、コンピューティングシステムがネットワークインターフェースのセットを介して接続することのできるネットワークのセットに関連する、複数の通信媒体にまたがる可能性がある。
【０００６】
このネットワークおよびインターフェース選択フレームワークは、ネットワーク選択ロジックも含む。蓄積された情報にネットワーク選択ロジックを適用して、ネットワークのセットのうちの１つを指定する。したがってこのフレームワークは、複数の媒体にまたがるネットワークおよびインターフェース選択を可能にする。
【０００７】
本発明はまた、上に要約した複数の媒体種類（ｍｅｄｉａ  ｔｙｐｅｓ）にまたがるネットワークおよびインターフェース選択フレームワークに組み入れられた機能を実施するための方法およびコンピュータ可読媒体も対象とする。
【０００８】
本発明の特徴については添付の特許請求の範囲に詳細に述べるが、本発明は、その目的および利点と合わせて、添付の図面と共に以下の詳細な記述を読めば最もよく理解することができる。
【発明を実施するための最良の形態】
【０００９】
本明細書に開示する例示的なネットワークおよびインターフェース選択アーキテクチャは、複数通信媒体の環境で、非常にフレキシブルな自動化ネットワークおよびインターフェース選択決定を容易にする。このネットワークおよびインターフェース選択アーキテクチャは、プログラム可能なネットワークおよびインターフェース選択規則エンジンによる決定をサポートする。さらに、プログラム可能な規則エンジンによって特定の通信媒体に関連する特定のネットワークインターフェースに適用される基準は、代替通信媒体を利用する他のネットワークインターフェースに関連する機能／ポリシー／ステータス／ネットワークリソース情報に基づくことが可能である。
【００１０】
例として、規則エンジンは、ネットワーク優先順位、特定のネットワーク上で利用可能なリソース、特定の媒体を介したネットワークへの接続速度などを含めた選択規則のセットに基づいて、複数の通信媒体を包含する媒体特有モジュールに関連するネットワークインターフェースおよびネットワークのセットから、特定のネットワークインターフェースおよびネットワークを選択する。例示的な一実施形態では、規則エンジンによって適用される規則は、ユーザ、ネットワーク管理者（グループポリシー）、ネットワークサービスプロバイダを含めた様々なソースによって指定される可能性がある。規則は、様々な通信媒体（例えば無線ＬＡＮ、無線ＷＡＮ、無線ＰＡＮ、有線ＬＡＮ、有線ＷＡＮなど）に関連する媒体特有モジュールによって提供されるネットワークインターフェースステータス／機能情報に適用される。
【００１１】
規則エンジンは、コンピューティングデバイス上のネットワークインターフェースのセットによってサポートされる複数の媒体にまたがる、全般的なネットワーク選択を容易にする。例示的な実施形態では、規則エンジンは、潜在的に複数の通信媒体に関連するネットワークインターフェースのセットのそれぞれに関するステータス／機能情報を受け取る。規則エンジンは、受け取った情報と、潜在的に複数の媒体にまたがるネットワークおよびインターフェース選択規則とに従って、ネットワークおよびインターフェース選択決定を実行する。決定中にもたらされたネットワーク／インターフェース選択結果に基づいて、規則エンジンは、例えば、ネットワークおよびインターフェース選択結果の影響を受けるネットワークインターフェースのうちの特定の１つに関連する媒体特有モジュールに構成命令を発行することによって、選択されたネットワークインターフェースを構成することを開始する。媒体特有モジュールは、影響を受けるネットワークインターフェースに関連するドライバに命令を発行する。
【００１２】
図１に、様々な異なる通信媒体を介してアクセスされる１つまたは複数のネットワークを含む環境で使用されるコンピューティングデバイス（例えばノートブックコンピュータ）に適した動作環境の例１００を例示的に示す。動作環境１００は、適した動作環境の一例に過ぎず、本発明の使用または機能の範囲についてどんな制限も意味しないものとする。本発明と共に使用するのに適すると考えられる他の周知のコンピューティングシステム、環境、および／または構成の例には、限定しないがパーソナルコンピュータ、サーバコンピュータ、ラップトップ／ポータブルコンピューティングデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータや、これらのシステムまたはデバイスのいずれかを含む分散コンピューティング環境などが含まれる。
【００１３】
本発明は、プログラムモジュールなど、コンピュータによって実行されるコンピュータ実行可能命令の一般的なコンテキストで述べることができる。一般にプログラムモジュールは、特定のタスクを実施するか特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、分散コンピューティング環境で動作するネットワークノード内に組み込むことが可能であり、その場合、タスクは通信ネットワークを介してリンクされたリモート処理デバイスによって実施される。分散コンピューティング環境では、プログラムモジュールは一般に、メモリ記憶デバイスを含めたローカルとリモートの両方のコンピュータ記憶媒体に位置する。
【００１４】
引き続き図１を参照するが、本発明を実施するための例示的なシステムは、コンピュータ１１０の形の汎用コンピューティングデバイスを含む。コンピュータ１１０のコンポーネントには、限定しないが処理ユニット１２０と、システムメモリ１３０と、システムメモリを含めた様々なシステムコンポーネントを処理ユニット１２０に結合するシステムバス１２１とを含めることができる。システムバス１２１は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺機器バス、ローカルバスを含めて、いくつかの種類のバス構造のいずれかとすることができる。限定ではなく例として、このようなアーキテクチャには、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＭＣＡ（Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＥＩＳＡ（Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ＶＥＳＡ（Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス（メザニンバスとも呼ばれる）が含まれる。
【００１５】
コンピュータ１１０は通常、様々なコンピュータ可読媒体を備える。コンピュータ可読媒体は、コンピュータ１１０からアクセスできる任意の利用可能な媒体とすることができ、揮発性と不揮発性の媒体、取外し可能と固定式の媒体の両方が含まれる。限定ではなく例として、コンピュータ可読媒体には、コンピュータ記憶媒体および通信媒体を含めることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータなどの情報を記憶するための任意の方法または技術で実現された、揮発性と不揮発性、取外し可能と固定式の両方の媒体が含まれる。コンピュータ記憶媒体には、限定しないがＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ディジタル多用途ディスク（ＤＶＤ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイスが含まれ、あるいは、所望の情報を記憶するのに使用できコンピュータ１１０からアクセスできるその他の任意の媒体が含まれる。通信媒体は通常、搬送波や他のトランスポート機構などの変調されたデータ信号中に、コンピュータ可読命令、データ構造、プログラムモジュール、またはその他のデータを組み入れたものであり、任意の情報送達媒体が含まれる。「変調されたデータ信号」という語は、信号に情報を符号化する形で１つまたは複数のその特性が設定または変更された信号を意味する。限定ではなく例として、通信媒体には、有線ネットワークや直接有線接続などの有線媒体と、音響、無線周波数、赤外線、その他の無線媒体、例えば無線ＰＡＮ、無線ＬＡＮ、無線ＷＡＮ媒体などの無線媒体とが含まれる。以上の任意の組合せもコンピュータ可読媒体の範囲に含めるべきである。
【００１６】
システムメモリ１３０は、読取り専用メモリ（ＲＯＭ）１３１やランダムアクセスメモリ（ＲＡＭ）１３２など、揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。ＲＯＭ１３１には通常、起動中などにコンピュータ１１０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）１３３が記憶されている。ＲＡＭ１３２は通常、処理ユニット１２０がすぐにアクセス可能な、かつ／または処理ユニット１２０が現在作用している、データおよび／またはプログラムモジュールを含む。限定ではなく例として、図１には、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、プログラムデータ１３７を示す。
【００１７】
コンピュータ１１０は、その他の取外し可能／固定式、揮発性／不揮発性コンピュータ記憶媒体を備えることもできる。例に過ぎないが図１には、固定式な不揮発性の磁気媒体に対して読み書きするハードディスクドライブ１４１と、取外し可能な不揮発性の磁気ディスク１５２に対して読み書きする磁気ディスクドライブ１５１と、ＣＤ  ＲＯＭや他の光媒体など取外し可能な不揮発性の光ディスク１５６に対して読み書きする光ディスクドライブ１５５を示す。この例示的な動作環境で使用できる他の取外し可能／固定式、揮発性／不揮発性コンピュータ記憶媒体には、限定しないが磁気テープカセット、フラッシュメモリカード、ディジタル多用途ディスク、ディジタルビデオテープ、固体ＲＡＭ、固体ＲＯＭなどが含まれる。ハードディスクドライブ１４１は通常、インターフェース１４０などの固定式メモリインターフェースを介してシステムバス１２１に接続され、磁気ディスクドライブ１５１および光ディスクドライブ１５５は通常、インターフェース１５０などの取外し可能メモリインターフェースでシステムバス１２１に接続される。
【００１８】
以上に論じ図１に示したドライブおよびそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、その他のデータの記憶域をコンピュータ１１０に提供する。例えば図１には、ハードディスクドライブ１４１がオペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、プログラムデータ１４７を記憶しているのが示されている。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、その他のプログラムモジュール１３６、プログラムデータ１３７と同じものとすることもでき、異なるものとすることもできることに留意されたい。ここでは、オペレーティングシステム１４４、アプリケーションプログラム１４５、その他のプログラムモジュール１４６、プログラムデータ１４７が少なくとも異なるコピーであることを示すために、異なる番号を付けてある。ユーザは、キーボード１６２、マウスやトラックボールやタッチパッドと一般に呼ばれるポインティングデバイス１６１などの入力デバイスを介して、コンピュータ１１０にコマンドおよび情報を入力することができる。その他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含めることができる。これらおよび他の入力デバイスは、システムバスに結合されたユーザ入力インターフェース１６０を介して処理ユニット１２０に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（「ＵＳＢ」）など、その他のインターフェースおよびバス構造で接続されてもよい。モニタ１９１または他の種類の表示デバイスも、ビデオインターフェース１９０などのインターフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、スピーカ１９７やプリンタ１９６など他の周辺出力デバイスも備えることができ、これらは出力周辺インターフェース１９５を介して接続することができる。
【００１９】
コンピュータ１１０は、リモートコンピュータ１８０など１つまたは複数のリモートコンピュータへの論理接続を用いて、ネットワーク化された環境で動作することができる。リモートコンピュータ１８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、またはその他の一般的なネットワークノードとすることができ、図１にはメモリ記憶デバイス１８１しか示していないが、通常は、コンピュータ１１０に関して上述した要素の多くまたはすべてを備える。図１に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）１７１およびワイドエリアネットワーク（ＷＡＮ）１７３を含むが、その他のネットワークを含むこともできる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、インターネットでよくみられる。
【００２０】
ＬＡＮネットワーキング環境で使用されるときは、コンピュータ１１０は、１つまたは複数の有線／無線ネットワークインターフェース１７０を介してＬＡＮ１７１に接続される。さらに、１つまたは複数の有線／無線ネットワークインターフェース１７０のセットは、インターネットなどのＷＡＮ１７３を介した通信もサポートする。図１には示していないが、コンピュータ１１０は、内蔵または外付けのモデムを備えることが可能であり、モデムはユーザ入力インターフェース１６０または他の適切な機構を介してシステムバス１２１に接続される。ネットワーク化された環境では、コンピュータ１１０に関して示したプログラムモジュールまたはその一部をリモートのメモリ記憶デバイスに記憶することができる。限定ではなく例として、図１には、リモートアプリケーションプログラム１８５がメモリデバイス１８１上にあるのが示してある。図示のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するための他の手段を使用してもよいことは理解されるであろう。
【００２１】
本発明は、様々な動的ネットワーキング環境で使用されるモバイルおよび非モバイルコンピューティングデバイス／マシンに組み入れることが可能である。このような環境では、好ましい通信方式は、利用可能な媒体のセットの変化、特定の媒体上のサービス品質の変化、および／または様々な通信媒体上の作業負荷の変化に伴って変化する可能性がある。図２に移ると、本発明を利用することの可能な無線コンピューティング環境の単純な例が示してある。図示の環境では、ノートブックコンピュータ２００が、複数の通信媒体を介した通信を容易にする複数のネットワークインターフェースカード（特に図示せず）を備える。図２に示す特定の例では、ノートブックコンピュータ２００は、セルラー伝送塔２０２と（ＷＷＡＮ媒体を介して）通信し、また、ローカルエリアネットワーク２０６に通信可能に結合された無線トランシーバ２０４と（ＷＬＡＮ媒体を介して）通信する。
【００２２】
（無線アクセスポイントすなわちＷＡＰとも呼ばれる）無線トランシーバ２０４は、ＬＡＮ２０６上の様々なリソースへのアクセスを提供する。例えば、無線トランシーバ２０４は、ノートブックコンピュータ２００からファイルサーバ２０８上で維持されているディレクトリ／ファイルへのアクセスを提供する。ＬＡＮ２０６は、ノートブックコンピュータ２００のユーザを含めたＬＡＮ２０６のユーザからインターネット２１２へのアクセスを提供するゲートウェイ／ファイアウォール／モデム２１０も含む。ゲートウェイ／ファイアウォール／モデム２１０は、インターネット２１２のユーザからＬＡＮ２０６上のリソースへのアクセスも提供する。
【００２３】
複数のネットワーク媒体がサポートされる結果、ノートブックコンピュータ２００のユーザは、複数の通信媒体を介してインターネット２１２および（インターネット２１２を通して）ファイルサーバ２０８にアクセスすることができる。例えばノートブックコンピュータ２００は、ＷＷＡＮネットワークインターフェースを利用して、セルラー伝送塔２０２を含むセルラーネットワークを介してインターネット２１２にアクセスすることができる。あるいはノートブックコンピュータ２００は、無線トランシーバ２０４を介してＬＡＮ２０６上のリソースにアクセスする。図示の例のＬＡＮ２０６はネットワークアクセス／プロキシサーバを含むものとし、これは、正しく認証されたノートブックコンピュータ２００ユーザが、例示的に示す２つの無線ネットワーク媒体のいずれかを介してインターネット２１２およびＬＡＮ２０６のリソースにアクセスできるようにするものである。複数の媒体を介して同じリソースにアクセスするというノートブックコンピュータの機能は、ノートブックコンピュータ２００のユーザの現在の条件、ニーズ、好みなどに基づいて無線ネットワーク媒体のうちの特定の１つを選択する可能性をもたらす。例えば、ネットワークの他のユーザ（例えば無線トランシーバ２０４を介して接続されたＰＣ２１４や配線接続されたＰＣ２１６）が、複数のネットワーク媒体のうちの特定の１つを介して、限られたネットワーク帯域幅を得ようと競合し、かつ／または通信品質を劣化させる。さらに、ＰＣ２１４は、無線ユーザインターフェースデバイス（マウスおよびキーボード）を使用しているために、他の無線通信を劣化させる信号干渉を生み出す恐れがある。このような場合、相対的に静的な優先リストは、現在のネットワーキング環境の条件下でノートブック２００の現ユーザの特定のニーズを満たすのに利用可能な最良の接続を選択しないことがある。
【００２４】
本発明を実施するノートブックコンピュータ２００内には、規則／ローミング（ネットワークおよびインターフェース選択）エンジンが組み込まれるが、このローミングエンジンは、ノートブックコンピュータ２００の現在のネットワーキングニーズを果たすために、サポートされる複数のネットワーク媒体インターフェースに関係する情報に基準を適用して、ノートブックコンピュータ２００のネットワークインターフェースおよび関連するネットワークのセットのうちの１つまたは複数を選択する。ローミングエンジンは、複数のネットワークインターフェースから供給されるステータス／機能情報に基づいて、その複数のネットワークインターフェースのそれぞれについての自動化ネットワークおよびインターフェース選択決定をサポートする。ローミングエンジンは、接続を確立するための現在好ましいネットワークとインターフェースの組合せを選択するとき、他のネットワーク／媒体の組合せの現在ステータス／機能に関係する情報を考慮することができる。優先リストに加えて、ローミングエンジンは、特定リソースの利用可能性、ネットワーク速度（最大／実際）、日時、ならびにその他ローミングエンジンによって得られる所望の要素に基づいて、そのネットワークインターフェース／ネットワーク選択決定を行うことができる。したがって、単一の媒体（例えばＷＬＡＮ）に関するネットワークインターフェースの優先順のリストを、所望の接続を確立するのに利用可能なネットワークインターフェースが識別されるまで単に下降していくだけの優先リストに比べ、ノートブックコンピュータ２００の複数ネットワークインターフェース構成を決定する情報の範囲および要素の幅（それぞれ潜在的に複数の媒体を包含する）が大きく向上する。
【００２５】
本発明が好ましく組み込まれる例示的な無線ネットワーキング環境について述べたところで、図３に注目する。図３には、ノートブックコンピュータ２００（または他の任意のコンピューティングデバイス）に組み込まれた場合の例示的な自動化ネットワークおよびインターフェース選択アーキテクチャ／フレームワークを概略的に示してある。このネットワークおよびインターフェース選択アーキテクチャは、規則エンジン３００に組み込まれた集中型の自動ネットワークおよびインターフェース選択決定／制御を特徴とする。
【００２６】
物理ネットワークインターフェースレベルから始めるが、図示のアーキテクチャでは、様々な媒体種類（例えばブルートゥース、ＷＷＡＮ、ＷＬＡＮ−例えば８０２．１１ａ／ｂ／ｇなど）のＮ個の媒体特有ドライバのセット３０２が、コンピュータ２００にインストールされた現存のＮ個のネットワークインターフェースカード（ＮＩＣ）のセットに関連する。図示の例では、媒体特有ドライバ３０２のそれぞれは、対応するＮＩＣと通信する。このような通信にはとりわけ、ＮＩＣから提供されるステータス／機能情報が含まれる。このようなステータス／機能情報は、例えば、ドライバ３０２からの要求時にＮＩＣが実施する定期的な走査によって得られる。要求後、Ｎ個の媒体特有ドライバ３０２によって収集されたステータス／機能情報は、規則エンジン３００に渡される。規則エンジン３００は、サポートされるすべてのＮＩＣに関するすべてのステータス／機能情報のアグリゲータ／リポジトリとして、Ｎ個の媒体特有ドライバ３０２から提供されて受け取ったステータス／機能情報を動的規則データストア３０４内に記憶する。ＮＩＣは、走査コマンドに加えて、構成コマンドもドライバ３０２から受け取る。
【００２７】
本発明の一実施形態では、前述のネットワークインターフェースステータス／機能情報および通知は、アプリケーション、プロビジョニング（ｐｒｏｖｉｓｉｏｎｉｎｇ）サービス３１４（例えば無線ＩＳＰ）、グループポリシーサービス３１２、ユーザインターフェース３１０によって、共通リモートプロシージャコールＡＰＩ３０３を介してアクセス可能であることに留意されたい。例として、共通ＲＰＣ  ＡＰＩ３０３は、優先リスト、可視リスト、媒体構成、デバイス状態、ユーザ認証データ、ネットワーク構成をユーザインターフェース３１０またはグループポリシーサービス３１２を介して照会および変更するための、呼出し可能なメソッド／演算／関数を含む。本発明の一実施形態では、プロビジョニングサービス３１４は、共通ＲＰＣ  ＡＰＩ３０３への呼出しを介して、規則エンジン３００に渡されるネットワーク構成を生成および更新すること、およびユーザ認証データを生成することに限られる。上述した機能については、後で図４を参照して述べる。
【００２８】
規則エンジン３００は、動的規則データストア３０４から、潜在的に複数の通信媒体にまたがるネットワークおよびインターフェース選択規則にアクセスする。規則データストア３０４内に記憶されるネットワークおよびインターフェース選択規則は、図３に示すように、（ユーザインターフェース３１０を介する）ユーザ、（グループポリシーサービス３１２を介する）ネットワーク管理者、ネットワークアクセスプロビジョニングサービス３１４（例えばＩＳＰ）を含めた、様々なソースから来るものとすることができる。図示の実施形態では、ＵＩ３１０は、共通ＲＰＣ  ＡＰＩ３０３を介して規則を通信する。ただし、任意の規則ソースが様々な手段を介して規則をサブミット（ｓｕｂｍｉｔ）できることが企図される。これらの手段には、規則データストア内に直接に規則を記憶することが含まれ、また、規則エンジン３００や、ネットワークデバイス接続／構成をサポートするその他のサービスなどの、フィルタリングエンティティを介して規則をサブミットすることが含まれる。本発明の一実施形態では、規則エンジン３００は、グループポリシーサービス３１２の規則の方がＵＩ３１０から供給される規則よりも好まれるように、規則ソースに優先順位を適用する。このようにプロビジョニングサービス３１４に従うことをＵＩ３１０が指定した場合、プロビジョニングサービス３１４によって指定される規則の方が、ＵＩ３１０から供給される規則よりも優先される。
【００２９】
ネットワークおよびインターフェース選択規則は、特定の媒体をデータ通信に利用するネットワークおよびインターフェースを接続に向けて選択するためのガイドラインを指定する。例えばユーザおよびネットワーク管理者は、以下の要素／パラメータのうちの１つまたは複数に基づいて、ネットワークおよびインターフェース選択規則を指定する。
１．リソース−インターネット、企業、または家庭。インターネットは、より高い細分性で指定することができることに留意されたい。さらに、特定のネットワークが複数の利用可能リソースを有することもできる。
２．速度−１つのネットワーク（インターフェース）が複数のリンク速度をサポートすることができ、さらに、指定の速度は（接続が確立されるまでわからない場合がある）実際の接続速度ではなく最大値であることに留意されたい。
３．ネットワークプロバイダサービス優先順位（例えばＭＳＦＴ、ＷＩＳＰ１、Ｃｅｌｌ１など）
４．コスト−規則エンジンは、ユーザ選択を施行するか、あるいはネットワークプロバイダにコスト決定を行わせる。複数の媒体／ネットワークインターフェースを介して利用可能なネットワークは、各媒体に関連して異なるコストを有する。さらに、コストは使用モデルに基づいて動的に変動する可能性があり、したがって定期的に再計算されリフレッシュされる。
５．電力消費−コンピューティングデバイスが低電力で稼動している場合、必要とされる電力消費のより少ない媒体に切り替えるための決定プロセスを呼び出すことができる。
６．位置−ネットワークの種類および地理的位置。
【００３０】
ネットワークプロビジョニングサービスは、様々な媒体（例えばＷＷＡＮ、ダイヤルアップ、ＤＳＬなど）を介して利用可能な可能性がある。ユーザは、上に挙げた選択規則種類（ｓｅｌｅｃｔｉｏｎ  ｒｕｌｅ  ｔｙｐｅ）「３」（ネットワークプロバイダサービス優先順位）により、プロビジョニングサービスから供給される規則に特定媒体の選択を付託する規則を指定することが可能である。例示的な一実施形態では、プロビジョニングサービス３１４は、このような規則をＸＭＬファイルの形で指定する。
【００３１】
規則エンジン３００は、潜在的に複数の媒体に関連する蓄積されたステータス／機能情報に選択規則のセットを適用して、Ｎ個のネットワークインターフェースについてのネットワークおよびインターフェース選択決定を行う。Ｎ個のネットワークインターフェースカードのうちの特定の１つと、このインターフェースが接続すべきネットワークとに関して選択を行った後、規則エンジン３００は、Ｎ個の媒体特有ドライバ３０２のうちでこの特定のネットワークインターフェースに対応する特定の１つに、構成命令をサブミットする。その後、媒体特有ドライバは、対応する構成命令を、Ｎ個のＮＩＣのうちの関連する１つに渡す。
【００３２】
本発明の一実施形態では、媒体特有モジュールのセット３２０が、特定の媒体種類に関する自動ネットワークおよびインターフェース選択をサポートする。図示の例では、媒体特有モジュールのセット３２０には、ＬＡＮモジュール、ＷＬＡＮモジュール、ＷＷＡＮモジュール、パーソナルエリアネットワーク（例えばブルートゥース）モジュールが含まれる。媒体特有モジュール３２０は、規則エンジン３００に代わって機能／ステータス情報を媒体特有ドライバに要求し、サポートされる媒体種類に関連する媒体特有ドライバによるネットワークインターフェースの走査を呼び出す。要求後、媒体特有モジュールは、結果としての獲得したネットワーク情報（例えば存在、機能、ステータスなど）を規則エンジン３００に渡す。
【００３３】
規則エンジンは、現在の規則および情報のセットに基づいてネットワーク／インターフェース選択を行った後、特定の１つまたは複数のネットワークに接続するために、ネットワークインターフェース構成コマンドを媒体特有モジュール３２０のうちの適切な１つ（または複数）に渡す。媒体特有モジュール３２０は、規則エンジン３００から受け取った構成命令に応答して、関連する媒体特有ドライバへの呼出しを介して、識別されたネットワークインターフェースに関連する接続に対する変更を開始する。例示的な実施形態では、媒体特有モジュール３２０のそれぞれは、前述の機能を実施するための状態機械を組み込んでいる。状態機械の例示的な状態のセットについては、後で図６を参照して述べる。
【００３４】
媒体特有モジュール３２０は、２つのインターフェースに関連する。媒体特有モジュール３２０は、媒体特有正規化モジュール３２２に組み込まれた一般化されたインターフェースを介して規則エンジンと通信する。正規化モジュール３２２は、規則エンジン３００と媒体特有モジュール３２０との間にあるレイヤであり、規則エンジン３００と媒体特有モジュール３２０との間における多くの種類の通信を正規化することを容易にする。正規化モジュール３２２は、（１）媒体特有モジュール３２０から規則エンジン３００にネットワークドライバ機能／ステータス情報を提供すること、および（２）規則エンジン３００が媒体特有モジュール３２０を介して媒体特有ドライバ３０２にネットワークインターフェース構成コマンドを指定することを容易にする。さらに、ユーザモードの媒体特有モジュール３２０は、例えば（カーネルモードの）ネットワークドライバインターフェース仕様（ＮＤＩＳ）３４０に従って、媒体特有ドライバ３０２と通信する。図示の実施形態は、特定の媒体種類ごとに、または媒体種類の種類ごとに媒体特有モジュールを提供しているが、本発明の代替実施形態は、関係のない複数の媒体種類をサポートする複合的な媒体特有モジュール（例えばＷＷＡＮ／ＷＬＡＮ媒体特有モジュール）を含むことが企図される。さらに、正規化モジュール３２２は、規則エンジン３００とも媒体特有モジュール３２０とも別個のエンティティとして示してあるが、本発明の代替実施形態では、正規化モジュールの機能は、規則エンジン３００と媒体特有モジュール３２０のどちらかに組み込まれる。
【００３５】
媒体特有モジュールのセット３２０は拡張可能であり、個々のモジュールは、インストールされたネットワークインターフェース／ドライバに対応するよう、必要に応じてロードおよびアンロードされる。本発明の一実施形態では、規則エンジン３００は、コンピューティングデバイスに対するデバイスのインストール／削除を監視するデータリンクレイヤ（ＯＳＩレイヤ２）モジュール３２４によって提供される通知サービスに登録している。特定の一実施形態では、このような通知は、規則エンジン３００によってデータリンクレイヤモジュール３２４の通知サービスに登録されたコールバックルーチンを介して実施される。その後、規則エンジン３００は、新しいネットワークインターフェース／デバイスがインストールされたという通知を通知サービスから受け取ると、この新しいネットワークインターフェースの媒体種類を扱うための媒体特有モジュールをロードするかどうかを決定する（例えばこのネットワークインターフェースは、この特定の媒体種類で最初のものである）。必要なら、適切な媒体特有モジュールは、規則エンジン３００からの要求時にデータリンクレイヤモジュール３２４によってロードされ、関数ポインタのセットへの参照（例えばインターフェーステーブル）が規則エンジン３００に提供されて、それにより、新しくインストールされた媒体特有モジュールに関連する正規化モジュール３２２の機能を呼び出すのが容易になる。その後、規則エンジン３００は、この媒体特有モジュールを参照するためのハンドルを獲得して、新しいネットワークインターフェースに関連する媒体特有ドライバに対して構成操作（走査、接続、切断など）を開始する。逆に、ネットワークインターフェースが削除されるという通知を受け取ると、デバイス上で開かれたハンドルは切断される／閉じられる。複数のインターフェースをサポートすることのできる媒体特有モジュール上のすべてのセッションおよびハンドルが閉じられた場合は、ネットワークインターフェースの数が決定される。ネットワークインターフェースが残っていない場合は、アンロードテストが実施された後で（いくらかの時間にわたって削除が遅延する可能性がある）、媒体特有モジュールのアンロードが開始される。
【００３６】
媒体特有モジュールのロード／アンロードは、様々な管理エンティティによって様々な方法で管理することができる。本発明の一実施形態では、個々の媒体特有モジュール３２０のロードおよびアンロードは、媒体特有モジュール３２０と規則エンジン３００の両方のロードおよびステータス管理を担うデータリンクレイヤサービスモジュール３２４によって実施される。識別された特定の媒体種類をサポートする追加の媒体特有モジュールを登録することにより、拡張性がサポートされる。ただし、このようなプログラムモジュールのロードおよびアンロードは、本発明の様々な実施形態により、様々なエンティティによって様々な方法で行うことができる。
【００３７】
要約すると、図３を参照して上述した自動構成アーキテクチャは、異なるネットワーク／インターフェースに関連する複数の通信媒体にまたがるステータス／機能情報および決定規則に基づいて、ネットワークインターフェースおよびネットワークのセットのうちの１つまたは複数を自動的に選択するための、拡張可能で非常にフレキシブルなインフラストラクチャを提供する。したがって、ネットワークインターフェースのセットに対するネットワーク接続を構成することに関して行われる決定は、単一の通信媒体だけを考慮／企図するネットワーク／インターフェース情報および規則に限定されない。
【００３８】
図４に移るが、規則エンジン３００と、ＵＩ３１０、グループポリシーサービス３１２、プロビジョニングサービス３１４との間のインターフェース（例えば共通ＲＰＣ  ＡＰＩ３０３）に関する例示的なメソッドのセットが列挙してある。Ｏｐｅｎメソッド４００は、規則エンジン３００にアクセスするユーザモードプロセスのためのコンテキストハンドルを生み出す。Ｃｌｏｓｅメソッド４０２は、前にＯｐｅｎメソッド４００によって生み出されたハンドルを受け取り、このハンドルを閉じる。Ｃｌｏｓｅメソッド４０２は、すべての未決定要求をアボートし、規則エンジン３００中の、前に呼出し元からの要求にサービスするために生み出されたこのハンドルに関連するすべての関連リソースを解放する。Ｃｏｎｔｒｏｌメソッド４０４は、ハンドル、ＧＵＩＤ、制御コード、入力パラメータを入力として受け取り、ＲｅｓｔａｒｔＡｕｔｈｅｎｔｉｃａｔｉｏｎなどの（制御コードで識別される）非標準機能を実行した後で出力パラメータを出力する。
【００３９】
規則エンジン３００からアプリケーションに公開されるメソッドのセットには、利用可能なネットワークのリストに対してアクセス／変更を行うためのメソッドのセットが含まれる。ＱｕｅｒｙＶｉｓｉｂｌｅＬｉｓｔメソッド４０６ＡＰＩは、利用可能なデバイス／インターフェースおよびそれらに関連するネットワークのリストを提供するよう、呼出し元が規則エンジン３００に要求することを可能にする。オプションの入力ＧＵＩＤパラメータが指定されている場合は、このＧＵＩＤのデバイスだけに対して照会が実行され、そうでない場合は、ロードされたすべての媒体特有モジュールにわたるすべてのデバイスにわたって呼出しが実行される。ＵｐｄａｔｅＶｉｓｉｂｌｅＬｉｓｔメソッド４０８は、規則エンジン３００による強制的な走査によって、すべてのデバイス上の、または指定されていれば特定のデバイス上の可視リストをリフレッシュさせ、規則エンジン３００は、得られた利用可能なネットワークのリストを返す。
【００４０】
規則エンジン３００からアプリケーションに公開されるメソッドのセットには、好ましいネットワークのリストに対してアクセス／変更を行うためのメソッドのセットが含まれる。ＱｕｅｒｙＰｒｅｆｅｒｒｅｄＬｉｓｔメソッド４１０は、好ましいネットワークのリストを規則エンジン３００に照会する。ＧＵＩＤまたは媒体種類が（これらのフィールドについてのフラグまたは設定値によって）指定されている場合は、返されるリスト結果はそのＧＵＩＤおよび／または媒体種類に対してフィルタにかけられ、そうでない場合はグローバルリストが返される。ＡｄｄＴｏＰｒｅｆｅｒｒｅｄＬｉｓｔメソッド４１２は、好ましいリストにエントリを追加するために呼び出される。ＡｄｄＴｏＰｒｅｆｅｒｒｅｄＬｉｓｔメソッド４１２は、好ましいリストが別の呼出し元によってその最終状態から修正されている場合には、失敗する可能性がある。ＲｅｍｏｖｅＦｒｏｍＰｒｅｆｅｒｒｅｄＬｉｓｔメソッド４１４は、好ましいリストからエントリを削除するために呼び出される。このメソッドは、好ましいリストが別の呼出し元によってその最終状態から修正されている場合には、失敗する可能性がある。
【００４１】
ＯｎｅＴｉｍｅＣｏｎｎｅｃｔメソッド４１６は、ワンタイム接続機能を実施する。言い換えれば、指定のエントリについて、規則エンジン３００内で一時的な状態が確立される。接続が完了した後は、接続はどの好ましいリスト上でも存続しない。
【００４２】
あるメソッドセットは、通信媒体に関する現在構成へのアクセスを提供する。ＱｕｅｒｙＭｅｄｉａＣｏｎｆｉｇｕｒａｔｉｏｎメソッド４１８は、現在の媒体特有構成に関係するすべてのパラメータを入手して提供するように規則エンジン３００を呼び出す。ＳｅｔＭｅｄｉａＣｏｎｆｉｇｕｒａｔｉｏｎメソッド４２０は、媒体特有構成の設定を開始するように規則エンジン３００を呼び出す。
【００４３】
あるメソッドセットは、デバイス特有構成へのアクセスを提供する。ＱｕｅｒｙＤｅｖｉｃｅＳｔａｔｅメソッド４２２は、指定のデバイス特有（例えばネットワークインターフェースカード）構成に関係するパラメータのセットを返す。ＳｅｔＤｅｖｉｃｅＳｔａｔｅメソッド４２４は、特定のデバイス特有構成に関連するパラメータを設定する。
【００４４】
あるメソッドセットは、特定のユーザに関連する認証データへのアクセスを提供する。ＱｕｅｒｙＵｓｅｒＡｕｔｈＤａｔａメソッド４２６は、指定のユーザ認証トークンで識別されるユーザに関する認証情報を返す。ＳｅｔＵｓｅｒＡｕｔｈＤａｔａメソッド４２８は、指定のユーザ認証トークンに対応する認証データを設定する。
【００４５】
あるメソッドセットは、特定のネットワークに関連する認証データへのアクセスを提供する。ＱｕｅｒｙＮｅｔｗｏｒｋＡｕｔｈＤａｔａメソッド４３０は、指定のネットワーク認証トークンと提供されたユーザハンドルとで識別されるネットワークに関する、ネットワーク特有の認証情報を返す。ＳｅｔＮｅｔｗｏｒｋＡｕｔｈＤａｔａメソッド４３２は、指定のネットワーク認証トークンに対応する認証データを設定する。
【００４６】
次の３つのメソッドは、規則エンジンの共通ＲＰＣ  ＡＰＩ３０３によってプロビジョニングサービス２１４に対してサポートされるものである。ＣｒｅａｔｅＮｅｔｗｏｒｋＣｏｎｆｉｇｕｒａｔｉｏｎメソッド４３４は、前述のＳｅｔＮｅｔｗｏｒｋＡｕｔｈＤａｔａメソッド４３２に類似するが、ネットワーク構成が入力パラメータを介してＸＭＬフォーマットで供給される。ＵｐｄａｔｅＮｅｔｗｏｒｋＣｏｎｆｉｇｕｒａｔｉｏｎメソッド４３６は、ＣｒｅａｔｅＮｅｔｗｏｒｋＣｏｎｆｉｇｕｒａｔｉｏｎメソッド４３４に類似するが、例外として、識別されるネットワークには既存の構成があると考えられる。ＣｒｅａｔｅＵｓｅｒＡｕｔｈＤａｔａメソッド４３８は、ＳｅｔＵｓｅｒＡｕｔｈＤａｔａメソッド４２８に類似するが、例外として、ユーザデータはＸＭＬフォーマットで、渡されたパラメータで供給される。
【００４７】
図５に移ると、規則エンジン３００と媒体特有モジュール３２０との間の正規化モジュール３２２によって提供されるインターフェースによって公開される例示的なメソッドのセットが列挙されている。これらのメソッドのセットは、（正規化モジュール３２２によって対処される）どんな媒体特有の実施要件も知る必要がないようにしながら、媒体特有モジュール３２０を介して、媒体特有ドライバに関連するデバイス（例えばネットワークインターフェースカード）を照会および構成するのを容易にする。
【００４８】
Ｏｐｅｎメソッド５００は、識別された特定のデバイス／インターフェースについての、規則エンジン３００のためのコンテキストハンドルを生み出す。Ｃｌｏｓｅメソッド５０２は、前にＯｐｅｎメソッド５００によって生み出されたハンドルを受け取り、このハンドルを閉じる。Ｃｌｏｓｅメソッド５０２は、すべての未決定要求をアボートし、規則エンジン３００中の、識別された特定のデバイスについて前に規則エンジンからの要求にサービスするために生み出されたこのハンドルに関連するすべての関連リソースを解放する。
【００４９】
ＥｖｅｎｔＬｉｓｔｅｎｅｒメソッド５０４は、識別された通知を規則エンジン３００が正規化モジュール３２２から受け取るためのコールバック（通知）参照を確立する。ＥｖｅｎｔＬｉｓｔｅｎｅｒメソッド５０４は、入力として、規則エンジンが通知を望む何らかのイベントを識別するイベント通知コードと、通知のインターフェースソースへのポインタと、通知のデータへのポインタと、ユーザ／コンテキスト情報を受け取る。
【００５０】
正規化モジュール３２２から規則エンジン３００に公開されるメソッドのセットには、ＱｕｅｒｙＶｉｓｉｂｌｅＬｉｓｔメソッド５０６ＡＰＩが含まれる。このメソッドにより、規則エンジン３００は、入力ＧＵＩＤパラメータで指定されるように各デバイスごとに、媒体ごとに、またはすべてのデバイスについて、利用可能なネットワークのリストの列挙を要求することができる。同様に、ＱｕｅｒｙＰｒｅｆｅｒｒｅｄＬｉｓｔメソッド５０８は、好ましいネットワークのリストを規則エンジン３００が照会することを容易にする。ＧＵＩＤまたは媒体種類が（これらのフィールドについてのフラグまたは設定値によって）指定されている場合は、返されるリスト結果はそのＧＵＩＤおよび／または媒体種類に対してフィルタにかけられ、そうでない場合はグローバルリストが返される。
【００５１】
あるメソッドセットは、インストールされたデバイス／インターフェースの機能および現在ステータスへのアクセスを提供する。ＧｅｔＤｅｖｉｃｅＣａｐｓメソッド５１２は、前のＯｐｅｎメソッド５００への呼出し中に返されたハンドルで指定されるインターフェースに関するデバイス機能を得ることを開始するために、規則エンジン３００によって呼び出される。このような機能の例については後述する。さらに、これらの機能には、インターフェースに関するデバイス種類特有の定義も含まれる。
【００５２】
ＡｓｙｎｃＧｅｔｘｘｘメソッドのセット５１４、およびＡｓｙｎｃｈＳｅｔｘｘｘメソッドのセット５１６は、様々なデバイス特有の状態／ステータスパラメータを入手および設定するのを容易にする。ＡｓｙｎｃＧｅｔｘｘｘメソッド５１４は、Ｏｐｅｎメソッド５００に応答してデバイスに対して提供されたデバイス／インターフェースハンドルを渡す。ＡｓｙｎｃＧｅｔｘｘｘメソッド５１４はまた、ｐｈＡｓｙｎｃ入出力パラメータも含み、これにより規則エンジン３００は、非同期通知のためのユーザコンテキスト値へのポインタを渡す。ｐｈＡｓｙｎｃパラメータを介して返された出力は、非同期通知ハンドルへのポインタである。このハンドルは後で、取り出された情報にアクセスするのに使用される。Ｇｅｔｘｘｘメソッド５１４の種類（ｔｙｐｅ）の例には、オンライン／オフラインステータス、信号状態、可視プロバイダ／ネットワーク、好ましいプロバイダ、レディ状態、登録状態などが含まれる。
【００５３】
ＡｓｙｎｃＳｅｔｘｘｘメソッド５１６は、デバイス／インターフェースハンドルと、特定の設定機能を実施するために提供されるデータへのポインタと、返される通知に対するユーザコンテキストハンドルへのポインタとを渡す。完了時、ポインタは、要求に対するハンドルを参照する。ユーザコンテキスト値／出力ハンドルへのポインタは、規則エンジン３００への通知機構として使用されて、要求された設定機能の完了または失敗が伝えられる。ＡｓｙｎｃＳｅｔｘｘｘメソッド５１６の種類には、例えば、指定のデバイス／インターフェースのオンライン／オフラインおよび接続ステータスに影響を与える命令が含まれる。
【００５４】
さらに留意されたいが、本発明の実施形態では、インターフェースの状態を決定しインターフェースの状態を設定するための一般化されたメソッドであるＱｕｅｒｙＤｅｖｉｃｅＳｔａｔｅメソッド５１８およびＳｅｔＤｅｖｉｃｅＳｔａｔｅメソッド５２０（それぞれＱｕｅｒｙＤｅｖｉｃｅＳｔａｔｅメソッド４２２およびＳｅｔＤｅｖｉｃｅＳｔａｔｅメソッド４２４に対応する）も、正規化モジュール３２２中で、または規則エンジン３００と媒体特有モジュール３２０との間に介在するその他の任意の適したインターフェース中でサポートされる。
【００５５】
正規化モジュール３２２によってサポートされるインターフェースには、ＳｅｔＵｓｅｒＡｕｔｈＤａｔａメソッド５２２およびＳｅｔＮｅｔｗｏｒｋＡｕｔｈＤａｔａメソッド５２４も含まれ、これらの機能は、ＳｅｔＵｓｅｒＡｕｔｈＤａｔａメソッド４２８およびＳｅｔＮｅｔｗｏｒｋＡｕｔｈＤａｔａメソッド４３２に対応する。
【００５６】
規則エンジン３００は、ネットワークインターフェース構成選択を実施する際、ｃｏｎｎｅｃｔメソッド５２６およびｄｉｓｃｏｎｎｅｃｔメソッド５２８を介して、接続を確立／遮断する命令をサブミットする。ｃｏｎｎｅｃｔメソッド５２６は、例としてネットワーク名（例えばＷＬＡＮの場合のＳＳＩＤ、またはＷＷＡＮの場合のプロバイダおよびＡＰＮ）、ログオン／認証情報、Ｐｉｎ（ＷＷＡＮの場合）などを受け取る。
【００５７】
本発明の例示的な一実施形態に組み込まれる例示的なインターフェースのセットについて述べたが、本発明の代替実施形態も企図されることに留意されたい。代替実施形態では、インターフェースには、本明細書で例として述べたような構成選択規則エンジン／システムの動作に従ってネットワークインターフェースに関する情報を獲得してネットワークインターフェースを構成することを容易にするための、異なる呼出しのセットが含まれる。
【００５８】
媒体特有モジュールの機能は、様々な方法で実施することができる。図６に移ると、モジュール３２０の例示的な一実施形態による、媒体特有モジュール３２０のセットのそれぞれに対して規則エンジン３００（あるいは正規化モジュール３２２）によって実施される状態機械の状態のセットが識別されている。最も単純な形では、この状態のセットは連続的に実行される。連続の中で特定の状態に達し、関連の動作が必要とされない場合は、少なくとも連続の次回の反復までは関連の動作はスキップされる。しかし代替実施形態では、状態間の遷移は、状態変数によって進められ、非連続的な順序で行われる可能性があり、必ずしも図６に示す順序に従うとは限らない。ネットワークを求めて走査する状態６００の間に、媒体特有モジュールは、接続されている各ネットワークに関係するステータス／機能情報を、同じ媒体種類のインストール済み媒体特有ドライバに照会するよう、要求される。ネットワークがプロビジョニングサービスに関連する場合は、プロビジョニングサービス中のネットワークを検索する状態６０２の間に、媒体特有モジュールは、媒体特有ネットワーク情報を求める照会を、規則エンジン３００を介してプロビジョニングサービスに発行する。１つまたは複数のネットワークインターフェース情報セットを蓄積した後、リストを渡す状態６０４の間に、媒体特有モジュールは、媒体特有モジュール種類に関連するネットワーク記述データ構造のセット（図７参照）を含むリストを提供する。
【００５９】
特定のネットワークインターフェースを構成するための呼出しを規則エンジン３００から受け取ると、状態機械の接続構成状態６０６で、規則エンジン３００からの呼出しの中で識別されるネットワークインターフェースに対応する特定の媒体特有ドライバに、接続構成命令を発行する。規則エンジン３００からの要求に基づいて新しい接続が確立される場合は、状態６０６でネットワークインターフェースを構成した後、ネットワークに接続する状態６０８で、媒体特有モジュールは、選択されたネットワークおよびインターフェースに関連する媒体特有ドライバに、ネットワークインターフェースと識別されたネットワークとの間に動作レイヤ２（データリンク）接続を確立するよう命令を発行する。ステータスを報告する状態６１０の間に、媒体特有の状態機械は、ドライバに照会し、特定のネットワークインターフェースカード（ＮＩＣ）に関する現在接続ステータス情報を取り出し、その後、この情報を規則エンジン３００に提示する。
【００６０】
媒体特有機能の状態６１２は、媒体特有の状態機械が関連付けられている媒体の特定のニーズに従ってプログラムされる一般的な状態である。ネットワーク切替えを管理する状態６１４は、第１のネットワーク接続が中断して別のネットワーク接続がそれに取って代わる場合に対処する。ネットワーク切替えを管理する状態６１４の内容／機能は、媒体特有の状態機械が関連付けられている特定の媒体に大きく依存する。本発明の一実施形態では、切替え動作は、規則エンジン３００によって適切な接続／切断命令を介して進められる。しかし代替実施形態では、切替え動作はより低いレベルで、例えば正規化モジュール３２２などによって進められる。
【００６１】
手短に図７に移ると、例示的なネットワークインターフェース記述子データ構造に関連するフィールドのセットが提供されている。このネットワークインターフェース記述子は、潜在的に複数の通信媒体にわたるネットワークおよびインターフェース選択を容易にするために、媒体特有モジュール３２０から規則エンジン３００に提供されるものである。特定の媒体を求めて複数のネットワークインターフェースを走査することを担う単一の媒体特有モジュールが、走査した各ネットワークインターフェースに対応するこのような記述子のリストを供給する。規則エンジン３００は、媒体特有モジュールのセットから提供されたネットワークインターフェース記述子を蓄積し、蓄積した記述子にネットワークおよびインターフェース選択基準を適用する。その後、規則エンジン３００は、ネットワーク／インターフェースの組合せを選択すると、ネットワーク／インターフェース選択を実施するために構成命令を媒体特有モジュール３２０に対して指定する。媒体特有モジュール３２０はその後、構成命令を実施して、特定のネットワークインターフェースに関連する指定のネットワークに接続（またはそれから切断）する。
【００６２】
例示的なネットワークインターフェース記述子中では、記述子ハンドルフィールド７００が、ネットワークインターフェースについての記述子の特定インスタンスに割り当てられた一意識別を記憶する。ハンドルの値は、後で特定のネットワークインターフェースについて述べるステータス／機能情報の組合せの特定のインスタンスに関する参照を提供する。ネットワーク名フィールド７０２は、ネットワークインターフェースが関連付けられているネットワークを一意に識別する値を記憶する。リソースフィールド７０４は、ネットワークインターフェースを介してアクセスされるネットワークリソースを一般に識別する。リソースフィールド７０４は、企業ＬＡＮやインターネットなどの特定リソースにアクセスする必要に基づいた、規則ベースのネットワークおよびインターフェース選択をサポートする。速度フィールド７０６は、この特定のネットワークインターフェースによって現在サポートされる最大データレートを示す値を記憶する。コストフィールド７０８は、この特定のネットワークの使用に関連するコストを指定するのに使用される。コストフィールド７０８は、最も単純な場合では、単にネットワーク接続が使用ごとにコストを課さないか否かを示すだけである。別法として、コストは、複数のネットワークのうちの特定のネットワークに関連する相対的なコストを比較するのに使用される重み付きの数字とすることもできる。コストフィールド７０８は、接続を確立するために特定のネットワークインターフェースを（他の利用可能ネットワークインターフェースに優先して）選択するか否かを決定するときにコストが要素の１つとなる、規則ベースの決定をサポートする。ドメイン名フィールド７１０は、オプションのドメイン名（例えばＭｉｃｒｏｓｏｆｔ．ｃｏｍ）を指定する。本発明は広範なネットワークインターフェース記述フォーマットを企図しており、したがって前述の例は本発明を限定するものと解釈すべきではないことに留意されたい。前述の記述子フィールドのセットは、例示的なものとする。使用できるその他のフィールドには、無線／有線媒体種類、特定の無線媒体種類のサブタイプ（例えばＷＬＡＮ媒体の場合の８０２．１１ａ／ｂ／ｇサブタイプ）、認証モード、暗号化モードなどが含まれる。
【００６３】
以下は、８０２．１１媒体特有モジュールおよびＷＷＡＮモジュールによって規則エンジン３００に提供された、蓄積されたネットワークインターフェース記述子のセットの例である。最初の３つの記述子は、８０２．１１モジュールによって提供されたものであり、最後の記述子は、ＷＷＡＮモジュールによって提供されたものである。記述子は、ハンドル「ＧＵＩＤ３」で識別される第３の記述子に例として示すように、リソースのセットを指定することができることに留意されたい。
【００６４】
【表１】
2005130474.tif 000003
【００６５】
本発明を組み入れた規則エンジンベースの自動ネットワーク接続構成機構に関する一般的なフレームワークについて述べたところで、図８に示す表に注目する。図８は、複数の通信媒体にまたがる例示的なネットワークおよびインターフェース選択シナリオのセットを含む。このような基準は、例として上に述べた種類のネットワークインターフェース記述子に基づいて、規則エンジン３００によって実施される。
【００６６】
表の１行目に示す第１のシナリオでは、規則エンジン３００によって適用される規則は、ある媒体を他の１つまたは複数の媒体に優先して指定する。具体的なシナリオ例としては、媒体種類（例えばＷＷＡＮよりもＷＬＡＮ）、最高データ伝送レート、媒体のサブタイプ（例えば８０２．１１ｂよりも８０２．１１ａ）を指定することが含まれる。このような規則シナリオで使用されるパラメータには、リンク速度、物理媒体（有線／無線）、８０２．１１タイプ（ａ／ｂ／ｇ）、コストが含まれる。
【００６７】
表の２行目に示す第２のシナリオでは、規則エンジン３００によって適用される規則は、あるネットワークを他の１つまたは複数のネットワークに優先して指定する。具体的なシナリオ例は、無線インターネットサービスプロバイダ（ＷＩＳＰ）によって提供される公衆無線ＬＡＮネットワークよりも、企業ＬＡＮを指定するものである。このような規則シナリオで使用されるパラメータには、ネットワーク識別子タイプ（例えばＷＬＡＮの場合のＳＳＩＤ、ＷＩＳＰの場合のＡＰＮ）が含まれる。
【００６８】
表の３行目に示す第３のシナリオでは、規則エンジン３００によって適用される規則は、現在位置に基づいてネットワーク優先順位を指定する。具体的なシナリオ例としては、米国ではＷＩＳＰ  ＢよりもＷＩＳＰ  Ａを、欧州に位置するときはＷＩＳＰ  ＡよりもＷＩＳＰ  Ｂを指定することが含まれる。このような規則シナリオで使用されるパラメータは、位置（例えば家庭、職場、物理的位置など）である。
【００６９】
表の４行目に提供する別のシナリオでは、規則エンジン３００によって適用される規則は、論理ネットワークを含む優先順位を指定する。具体的なシナリオ例としては、ＷＩＳＰ  ＢよりもＷＩＳＰ  Ａを介した企業ネットワークを指定することが含まれる。ネットワークプロバイダは、ＸＭＬプロビジョニングに基づいて、どの物理ネットワーク（ＷＷＡＮかＷＬＡＮ）を使用するかを決定する。このような規則シナリオで使用されるパラメータには、無線プロバイダからのＸＭＬプロビジョニングファイル、動的なネットワークおよびインターフェース選択を容易にするためのビジネスロジックが含まれる。
【００７０】
別のシナリオでは、優先は時刻に基づいて指定される。時刻に基づいてある種のネットワーク／インターフェースが好まれる場合、現在検出された時刻に基づいて優先を実施することができる。例えば、特定のＷＷＡＮネットワークプロバイダは夜間および週末に好まれるが、別のプロバイダは平日に好まれる場合、規則が規則エンジン３００にサブミットされ、規則エンジン３００によって適用されて、（指定のネットワークと、このネットワークへの接続を確立するためのインターフェースとの組合せを含む）構成選択が実施される。
【００７１】
一般に、規則エンジンは、規則にアクセスして、潜在的に複数の媒体種類に関連する選択ネットワークを決定する。規則は、ユーザインターフェース（例えば特定のアプリケーションまたはサービスを起動するのに伴うダイアログ）、管理者によって指定されたグループポリシー、またはネットワークプロビジョニングサービスを介して指定される。これらの規則は、以下のいずれか１つまたは組合せとすることができる。
【００７２】
・ネットワーク接続を確立するためにユーザが指定した規則（例えばユーザはＷＷＡＮ媒体よりもＷＬＡＮ媒体を指定する）。
【００７３】
・ネットワークプロバイダによって指定された優先順位。機能している規則に応じて、規則エンジンは、利用可能な媒体ごとにネットワーク接続を指定することもでき、あるいは、１つの媒体種類だけに対してネットワーク接続を指定して、他の媒体種類に対しては接続をブロックすることもできる。
【００７４】
・ユーザがネットワークプロバイダに付託することを選択した場合の、ネットワークプロバイダが提供した規則（例：ＷＩＳＰ１は最も好ましいネットワークプロバイダだが、複数の媒体を介して利用可能である。どの物理ネットワークを使用して接続するかはＷＩＳＰ１が決定する）。
【００７５】
図９に移ると、図３に示した構成アーキテクチャを使用して無線媒体構成を実施するための例示的なステップのセットがフローチャートに要約してある。ネットワークおよびインターフェース選択規則の現在セットを、利用可能なデバイスおよび関連するネットワークの現在セットに適用する規則エンジンの動作は、様々な条件下で開始することができる。例えば、インターフェースが追加／削除されたこと、新しい規則または規則セットが指定されること、接続が遮断されたこと、ネットワーク／論理位置が変化したこと、ポリシーまたはプロビジョニング変更が生じたことなどの通知がデータリンクレイヤサービスモジュール３２４から受け取られたとき、すべてのデバイスの走査が実施されると新しいデバイス状態（例えば新しいネットワークが利用可能であること）が返される。
【００７６】
ネットワークおよびインターフェース選択を実施するための予備ステップとして、ステップ９００の間に、規則エンジン３００は、複数の通信媒体にまたがるネットワークインターフェースのセット（例えばＷＷＡＮインターフェースおよびＷＬＡＮインターフェース）から得られたステータス／機能情報を受け取る。このような情報は、例えば標準化されたフォーマットで１つまたは複数の媒体特有モジュール３２０から正規化モジュール３２２を介して、規則エンジン３００に提供される。新しいデバイスが出現した場合は、最初の予備ステップとして、規則エンジン３００は、関連する媒体特有モジュールを（まだロードされていなければ）ロードするようデータリンクレイヤサービスモジュール３２４に要求し、媒体特有モジュールへの適切な参照を返す。
【００７７】
ステータス／機能情報は、規則エンジン３００によって様々な方法で蓄積／更新される。本発明の例示的な実施形態では、この情報は、規則エンジン３００が、後で例として述べる走査アルゴリズムに従って媒体特有モジュール３２０に能動的に照会（ポーリング）することによって獲得され、また、媒体ドライバからデータを受け取ったモジュール３２０からネットワークインターフェースのステータス／機能の自発的な更新を受け取ることによって獲得され、媒体ドライバは、場合によってはそれ自体のバージョンの走査アルゴリズムを実行する。
【００７８】
媒体特有モジュール３２０は、プッシュとプルのどちらかまたは両方のデータ獲得手順を含めた任意の適した方式で、媒体特有ドライバ３０２からネットワークインターフェースステータス／機能情報を得る。本発明の一実施形態では、無線媒体特有モジュールは（自発的に、またはネットワークインターフェース構成に関連する別のエンティティからの非同期要求に応答して）、様々な要素を考慮するように定式化された走査アルゴリズムに基づいてドライバ３０２から情報をプルする。要素には、現在の電源（例えば電池）、現在の接続状態（有線／無線）、現在の接続の継続時間、コンピューティングデバイスが現在移動しているかどうかなどが含まれる。特定の無線走査構成では、無線媒体特有モジュールに関連する走査エンジンが、走査履歴テーブル内で維持される履歴情報を含めた走査パラメータのセットに基づいて走査アルゴリズムを適用して、ネットワークインターフェース（またはネットワークインターフェースのセット）に対する次の走査サイクルをいつ開始するかを決定する。次の走査期間の時が来ると、媒体特有モジュールは、影響を受けるネットワークインターフェースの走査を開始し、走査結果を記憶する。
【００７９】
ステップ９１０の間に、規則エンジン３００は、ユーザインターフェース３１０、グループポリシーサービス３１２、プロビジョニングサービス３１４を含めた規則ソースのいずれか１つまたは組合せによって指定された規則のセットにアクセスする。本発明の例示的な実施形態では、規則エンジン３００は、動的規則データストア３０４からネットワークインターフェース構成規則を取り出す。前述のように、規則は複数の媒体を包含する可能性がある。
【００８０】
ステップ９２０で、規則エンジン３００は、定期的にまたは非同期要求時に、ステップ９１０の間にアクセスした潜在的に複数の通信媒体にまたがるネットワークおよびインターフェース選択規則を、受け取った情報に適用する。そして、１つまたは複数の特定ネットワークに接続するための１つまたは複数のネットワークインターフェースを選択し、選択したインターフェース／ネットワークの組合せに対する媒体特有ドライバ３０２のセットに対応するネットワークインターフェースのセットのそれぞれについて、構成命令を実施する。ネットワークインターフェースに対して特定のネットワークを選択することは、無線ＬＡＮトランシーバなど単一のネットワークインターフェースが複数のネットワークにアクセスすることができる状況で必要である。
【００８１】
その後、ステップ９３０で、規則エンジン３００は、媒体特有モジュール３２０を介して媒体特有ドライバ３０２に構成コマンドを発行する。ステップ９２０の結果によってネットワークインターフェースステータスが変化しない場合は、構成コマンドを発行する必要はない。しかし、特定のネットワークインターフェースのステータスが変化する場合は、規則エンジン３００は、対応する媒体特有モジュールに、変更を実施するための適切な構成命令を発行し、命令が実施されたことの確認が媒体特有モジュールから来るのを待機する。
【００８２】
複数の媒体にわたるネットワークインターフェース構成決定を実施するための例示的なステップのセットについて述べたが、前述のステップは例示に過ぎないことに留意されたい。本明細書に含まれる開示に鑑みて当業者なら理解するであろうが、個々のステップは、規則エンジンから媒体特有モジュール３２０のうちの適切な１つに構成命令のセットが発行される結果をもたらすデータ／処理フローの進行を示すものである。したがって例えば、ネットワークインターフェース情報の獲得は、ネットワークインターフェース情報に適用されることになる構成規則を規則エンジンが入手しつつある間に行うこともできる。
【００８３】
次に図１０および１１に移るが、無線ネットワークの走査は、無線ＮＩＣによって検知されるネットワークにユーザが接続する意向／必要を有さないときでも、前述のネットワークおよびインターフェース選択アーキテクチャ／方法のサポートで、無線ネットワークインターフェースカードによって定期的に実施される。以下に述べる走査アルゴリズム１０１０の制御下で動作する無線ネットワーク走査エンジン１０００は、走査履歴１０３０に記憶された情報によって明示される無線ＮＩＣの現在状態に基づいて、無線ＮＩＣ１０２０の走査頻度を変更する。
【００８４】
走査エンジン１０００によって実施される一般的な走査アルゴリズムを要約すると、無線ＮＩＣ１０２０が無線ネットワークに関連付けられておらず、かなりの期間にわたって関連付けられていなかったときは、走査頻度は低下する。さらに、ＮＩＣ１０２０がかなりの期間にわたって良好な信号強度で同じアクセスポイントに関連付けられているときも、やはり走査頻度は低下する。というのは、このＮＩＣに関連する無線接続に依拠するクライアントアプリケーションは、別のアクセスポイントまたはネットワークへのローミング／切替えを行う必要がある可能性がより低いからである。このことは、ＮＩＣ１０２０を備えるラップトップまたはその他の電池式コンピューティングデバイスが能動的にデータパケットを送信していない場合に、特に当てはまる。この走査アルゴリズムに従って走査頻度を低下させると、走査と走査の間により長い期間にわたってカードをパワーダウンさせることができるので、ラップトップ電池電力の節約になる。
【００８５】
次に図１１を参照すると、走査エンジンの動作を律するステップの反復シーケンスに関するステップのセットが示されている。まずステップ１１００の間に、走査エンジンは、知られている方法で、ＮＩＣ１０２０（例えばＷＬＡＮ  ＮＩＣ）を呼び出して利用可能ネットワークを求めて走査し、得られた情報は、走査履歴１０３０に記憶される。ステップ１１１０の間に、結果はまた、ＮＩＣ１０２０に関連するネットワークインターフェースドライバにも記憶される（後で対応する媒体特有モジュールに渡される）。その後、ステップ１１２０の間に、走査エンジン１０００は、（後でさらに述べる）走査アルゴリズム１０１０および前に記憶した走査履歴１０３０中の走査結果に少なくとも部分的に基づいて、走査遅延期間を決定する。その後、ステップ１１３０で、ＮＩＣ１０２０の次の走査を実施するための走査遅延期間を設定する。その後、制御は遅延期間が切れるまで待機段階１１４０に入り、ステップ１１００に戻って次の走査が実施される。
【００８６】
例示的な走査手順を述べたが、以下に一般的な走査制御方式を述べる。まず、コンピューティングデバイスの電力モードが、走査タイミングアルゴリズムをイネーブルにするかどうかを律する。例として、走査タイミングアルゴリズムは、コンピュータの電池電力が入っておりＮＩＣが継続的なアクセスモードにないときに実施される。
【００８７】
走査は、コンピューティングデバイスがうまくローミングできるようにするよう意図される。定期的に走査することにより、コンピューティングデバイスは、別のアクセスポイントに関連付け（ローミング）されずに、現在関連付けられているアクセスポイントから過度に遠くへ移動することはできないはずである。本発明の実施形態によれば、記憶は、走査期間を適応的に調整することができるように、前の走査に応答する。この走査方式は、以下の場合に対処する。
１．可視のネットワークがないとき、またはユーザが特定のネットワークに関連することができないとき。
２．ラップトップがかなりの時間にわたって同じアクセスポイントに関連付けられており、信号強度がまだ十分であるとき。このことは、ユーザが移動しておらず、他のネットワークまたはアクセスポイントを求めて走査する必要がないことを示す。
３．ユーザのラップトップが物理的に移動しており、したがってユーザがアクセスポイントの範囲外に移動する前に利用可能ネットワークを求めて走査することができるとき。
【００８８】
１および２の場合、走査間の間隔は６０秒よりもかなり長くすることができる。このスキャナタイミング方式を実施して、前の走査の履歴に基づいて走査間の間隔を設定最大値に増大させる。最大値は、状態に変化がないときに走査手順が完全にシャットダウンするのを防ぐためのフェイルセーフ手段として提供される。
【００８９】
３の場合、ラップトップが移動したことを検出できた場合は、ユーザが現在のネットワークの範囲外に移動する可能性があるので、走査エンジン１０００は、走査を実施して、利用可能なネットワークまたはアクセスポイントがあるかどうかチェックする。移動は、位置認識モジュール中で検出することができ、あるいは８０２．１１ＮＩＣの場合は、受信信号強度、伝送カウント、フレームエラーレートなど、８０２．１１統計を分析することによって検出することができる。
【００９０】
例示的な走査方式によれば、コンピューティングデバイスはまた、ネットワークアクセスを（イーサネット（登録商標）ケーブルなどを介して）提供する別のＮＩＣがあるときを検出する。この場合、無線ＮＩＣに対するすべての走査は電力の無駄であり、ＮＩＣはディセーブルにされるべきである。ＮＩＣがイネーブルのままにされる場合でも、走査を実施するよう要求されるべきではない。
【００９１】
さらに、走査エンジンは、ＮＩＣが能動的にトラフィックを送信しているときを検出する。これは走査を実施するのに適さない時であり、予定されたどんな走査も、トラフィックが送信されるまで遅延されるべきである。トラフィックが送信され、統計が十分に良好な場合は、走査期間はスキップされる。最後に、例示的な走査制御方式によれば、ユーザは、次の走査期間が来る前に走査を要求したい場合がある。ＮＩＣは、要求があり次第この走査を実施し、走査履歴、期間、タイマ、頻度を相応に調整する。
【００９２】
自動化されたネットワークアクセス構成／選択を促進／実施するための新しい有用な方法およびフレームワークを本明細書に述べたことが、当業者には理解されるであろう。より具体的には、本明細書に述べた規則ベースのネットワークおよびインターフェース選択アーキテクチャは、複数の通信媒体に関連する媒体特有モジュールのセットによって提供されるステータス情報に基づいて、特定モードのネットワークアクセスの自動化選択を容易にする。本発明の原理を適用することのできる多くの可能なコンピューティング環境と、自動化ネットワークアクセス構成を実施することの柔軟性とに鑑みて、本明細書に述べた実施形態は例示的なものであり、本発明の範囲を限定するものと考えるべきではないことを理解されたい。本発明の趣旨を逸脱することなく、例示的な実施形態の構成および詳細を修正することもできることは、本発明が適用される技術分野の当業者なら理解するであろう。したがって、本明細書に述べた本発明は、添付の特許請求およびその均等物の範囲に含めることのできるすべての実施形態を企図する。
【図面の簡単な説明】
【００９３】
【図１】本発明の一実施形態を組み込むための／実施するためのコンピューティングデバイスの例示的なアーキテクチャを示す簡略化した概略図である。
【図２】移動コンピューティングデバイスが接続することの可能な複数のネットワークアクセスポイントを含む、例示的な複数ネットワーク通信媒体構成の図である。
【図３】本発明を組み入れたコンピューティングデバイス内の自動ネットワーク選択フレームワーク中の主要なコンポーネントを識別する概略図である。
【図４】規則エンジンと、アプリケーションおよびユーザインターフェースのセットとの間の公開インターフェースに関して識別されるメソッドの例示的なセットを要約した図である。
【図５】複数の通信媒体にまたがるネットワークインターフェースのセットをサポートするコンピューティングデバイス上のネットワークインターフェースの構成を選択および決定するのを容易にするために対話する規則エンジンと媒体特有モジュールとの間に介在するインターフェースに関するメソッドの例示的なセットを要約した図である。
【図６】媒体特有モジュールのセットのそれぞれにつき実施される状態機械の状態のセットを要約した図である。
【図７】規則エンジンによる機能照会に応答して媒体特有モジュールから規則エンジンに渡される例示的なネットワークインターフェース情報内のフィールドのセットを要約した図である。
【図８】複数の通信媒体に関する規則エンジンに提供される情報に基づいた自動化ネットワークインターフェース選択および構成シナリオを要約した表である。
【図９】図３に示したネットワークインターフェース選択アーキテクチャを使用してネットワークおよびインターフェース選択を実施するための例示的なステップのセットを要約したフローチャートである。
【図１０】ネットワークインターフェースによる走査を制御して、モバイルコンピューティングデバイス上の電池電力消費を削減するのを容易にするための、例示的な走査エンジンアーキテクチャの図である。
【図１１】図１０で識別された走査アーキテクチャに組み込まれる走査方式の例示的なステップのセットの図である。
【符号の説明】
【００９４】
１２０  処理ユニット
１２１  システムバス
１３０  システムメモリ
１３４  オペレーティングシステム
１３５  アプリケーションプログラム
１３６  その他のプログラムモジュール
１３７  プログラムデータ
１４０  固定式な不揮発性メモリインターフェース
１４４  オペレーティングシステム
１４５  アプリケーションプログラム
１４６  その他のプログラムモジュール
１４７  プログラムデータ
１５０  取外し可能な不揮発性メモリインターフェース
１６０  ユーザ入力インターフェース
１６１  マウス
１６２  キーボード
１７０  ネットワークインターフェース／モデム
１７１  ローカルエリアネットワーク
１７３  ワイドエリアネットワーク
１８０  リモートコンピュータ
１８５  リモートアプリケーションプログラム
１９０  ビデオインターフェース
１９５  出力周辺インターフェース
１９６  プリンタ
１９７  スピーカ
２０２  セルタワー
２０６  イーサネット（登録商標）
２１２  インターネット
３００  規則エンジン
３０２  媒体特有ドライバ１  媒体特有ドライバ２  ・・・  媒体特有ドライバＮ
３０３  共通ＲＰＣ  ＡＰＩ
３０４  動的規則データ
３１２  グループポリシーサービス
３１４  プロビジョニングサービス
３２２  媒体特有正規化モジュール
３２４  データリンクレイヤ（レイヤ２）サービス
３４０  ネットワークドライバインターフェース仕様（ＮＤＩＳ）
【図１】
2005130474.tif 000004
【図２】
2005130474.tif 000005
【図３】
2005130474.tif 000006
【図４】
2005130474.tif 000007
【図５】
2005130474.tif 000008
【図６】
2005130474.tif 000009
【図７】
2005130474.tif 000010
【図８】
2005130474.tif 000011
【図９】
2005130474.tif 000012
【図１０】
2005130474.tif 000013
【図１１】
2005130474.tif 000014