計算デバイスであって、ワイヤレス通信のための無線装置と、複数のポートを実施するように前記無線装置を制御するためのドライバーであって、前記複数のポートは、インフラストラクチャモードでの動作のための少なくとも1つのポートと、ピアツーピア接続を制御するための制御ポートと、少なくとも1つのピアツーピア通信ポートとを含む、ドライバーと、ピアツーピア接続を確立するために前記制御ポートを使用して前記ドライバーと対話し、前記ピアツーピア通信ポートを通じて前記ピアツーピア接続を介して通信を行うように構成されるオペレーティングシステムとを含む計算デバイス。請求項1に記載の計算デバイスであって、前記オペレーティングシステムは、更に、前記ピアツーピア接続を介して前記計算デバイスと結合されたディスプレイデバイスのオーディオ/ビデオ特性を制御するためのコマンドを、前記制御ポートを通じて送信するように構成される、計算デバイス。請求項1に記載の計算デバイスであって、前記ドライバーは、メディアアクセスコントロールMACアドレスと前記制御ポートとを関連付け、前記制御ポートの前記MACアドレスと関連する制御フレームを送信するように前記無線装置を制御することにより、前記制御ポートを実施する、計算デバイス。請求項3に記載の計算デバイスであって、前記制御フレームは、パブリックアクションフレームおよびサービス発見フレームを含む、計算デバイス。請求項4に記載の計算デバイスであって、前記オペレーティングシステムは前記ドライバーと対話し、前記ピアツーピア通信ポートを作成するコマンドを前記ドライバーへ送信することにより、ピアツーピア接続を確立する、計算デバイス。ドライバーにより制御されるワイヤレス無線装置を有する計算デバイスを動作させる方法であって、少なくとも1つのプロセッサーにより、ピアツーピアプロトコルを用いるワイヤレス通信を確立するために制御ポートを供給するためのコマンドを前記ドライバーへ提供し、前記ドライバーに前記ワイヤレス無線装置を制御させてアクションフレームを送信させるための少なくとも1つのコマンドを前記制御ポートを通じて送信し、前記ドライバーに前記ワイヤレス無線装置を制御させてアクションフレームを送信させるための前記少なくとも1つのコマンドのうちの1以上のコマンドに対する応答を、前記制御ポートを通じて受信し、前記少なくとも1つのコマンドのうちの前記1以上のコマンドに対する前記応答に基づいて、少なくとも1つのリモートデバイスとのワイヤレス接続を確立するために、前記ワイヤレス接続における前記計算デバイスの役割を決定し、通信ポートを供給するため、および前記ワイヤレス接続における前記計算デバイスの決定された前記役割のために前記通信ポートを構成するための、少なくとも1つのコマンドを前記ドライバーへ提供し、前記通信ポートを通じて前記少なくとも1つのリモートデバイスとデータパケットを交換することを含む方法。請求項6に記載の方法であって、前記リモートデバイスはディスプレイデバイスを含み、前記データパケットはオーディオ/ビデオコンテンツを含み、前記方法は更に、前記ディスプレイデバイスでの前記オーディオ/ビデオコンテンツの提示における少なくとも1つのオーディオ/ビデオ特性を制御するコマンドを、前記制御ポートを通じて送信することを含む、方法。請求項6に記載の方法であって、前記計算デバイスの役割を決定することは、グループオーナーまたはクライアントとしての役割を選択することを含む、方法。請求項7に記載の方法であって、前記ワイヤレス接続は第1ワイヤレス接続を含み、前記方法は更に、ステーションポートを通じて前記ドライバーと対話することを含み、前記対話は、第2ワイヤレス接続を形成することを含み、前記第2ワイヤレス接続はアクセスポイントと関連するものであり、通信は、前記第1ワイヤレス接続と前記第2ワイヤレス接続とを介して同時に行われる、方法。請求項7に記載の方法であって、前記ワイヤレス接続は第1ワイヤレス接続を含み、前記方法は更に、前記制御ポートを通じて前記ドライバーと対話して、一組のリモートデバイスとの第2ワイヤレス接続を確立し、前記第2ワイヤレス接続における前記計算デバイスの役割を決定し、前記ドライバーへ少なくとも1つのコマンドを提供して、第2通信ポートを提供させ、前記第2ワイヤレス接続における前記計算デバイスの決定された前記役割のために前記通信ポートを構成し、前記第2通信ポートを通じて前記第2組のリモートデバイスとデータパケットを交換することを含む方法。0005ワイヤレス計算デバイスが他のワイヤレスデバイスへ結合できるというシナリオを拡張するために、直接接続をサポートする構成を計算デバイスに装備することが期待される。例えば、共に働くコンピュータユーザは、特別のインフラストラクチャを必要とせずにユーザー間でデーターを共有することを可能にするために、グループを容易に形成することができる。同様に、コンピューターは、プリンターや他の望まれるサービスを提供するデバイスへ、容易にワイヤレスで接続することができる。0006ワイヤレス計算デバイスは、構成設定可能なポートをサポートする無線装置ドライバーを提供することにより、インフラストラクチャモードでのワイヤレス通信とピアツーピアモードでのワイヤレス通信との双方をサポートするように、簡単に実施および制御される。それらのポートは、インフラストラクチャモードで動作するように、動的に構成設定されるポートであり得る。代替的または追加的に、ポートは、ピアツーピア通信をサポートするように構成設定されることもできる。0007ピアツーピア通信をサポートするポートは、制御ポートおよび1以上の通信ポートを含む。制御ポートは、パブリックアクションフレームpublicactionframeやサービス発見servicediscoveryフレームなどのような制御フレームの送信および受信に使用される。これらの制御フレームの交換は、オペレーティングシステムの制御の下で行われ、その結果として、ドライバーは、ピアツーピア通信のために、ワイヤレス計算デバイスを含むデバイスのグループを確立する。グループを確立する処理の一部として、グループ内のワイヤレス計算デバイスの役割に関しては、グループ内の他のデバイスとネゴシエーションが行われる。制御ポートは、これらの機能が行われるように、制御フレームの送信および受信をサポートする。0008グループが確立されると、グループ内のデバイス間での通信のために構成設定された第2のポートが使用される。そのポートは、ワイヤレス計算デバイスに対してネゴシエーションで決められた役割に基づいて構成設定される。デバイスは、例えば、グループオーナーとして動作するか、またはピアツーピアグループのクライアントとして動作することができる。0009ドライバーが複数のピアツーピア通信ポートをサポートして、ワイヤレス計算デバイスを、幾つかのグループのクライアントとして構成設定し、グループオーナーが他のグループにあるように構成設定することもできる。それぞれのポートは、1以上のグループ内のデバイス間での通信をサポートするように構成設定できる。その結果として、ワイヤレス計算デバイスは、複数のグループに参加し、それぞれのグループで同じ役割または異なる役割を持つようにされる。0010更に、1以上のポートを、インフラストラクチャモードで通信するように構成設定することもできる。その結果として、ワイヤレス計算デバイスは、複数のグループとの同時の通信をサポートすることに加えて、インフラストラクチャモードおよびピアツーピアモードでの同時の通信をサポートすることができ、多くのシナリオに対してデバイスを柔軟に構成設定することを可能とする。0011ポートは、指定された機能のために構成設定することができるが、更に、ポートは、指定された機能と他の機能とが矛盾しない場合、他の機能のために使用することもできる。一例として、ピアツーピアグループを確立する際に使用されるフレームを送信および受信するために構成設定された制御ポートは、そのグループを確立した後に、グループ内の1以上のデバイスを制御するためのサイドチャンネルとして使用することができる。デバイスを制御するコマンドは、そのデバイスへの接続を介して、データフレームとは別に送信される。特定の例として、制御ポートは、計算デバイスと、ディスプレイデバイス、例えば、ワイヤレスネットワーク接続の構成を備えるテレビジョンとを含むグループを確立するために、使用される。接続が確立されると、計算デバイスは、制御ポートを通じて、ディスプレイデバイスのオーディオ/ビデオ特性を制御するためのコマンドを送信する。このようにして、計算デバイスは、ディスプレイデバイスとのピアツーピア通信のために構成設定されたポートを通じて、オーディオ/ビデオコンテンツをデーターとしてストリームで送ることができ、計算デバイスとは別にリモートコントロールとして働いて、ディスプレイの可聴特性や視覚特性を変更することができる。0012このワイヤレス計算デバイスは、サポートされる通信のモードおよびモードの組み合わせに関する柔軟性を有するものでありながら、比較的少数のコマンドにより簡単に制御できる。0013前記の事項は、特許請求の範囲に記載した本発明の概要であり、この概要は本発明を限定するものではない。0014添付の図面は正確な尺度を考慮したものではない。様々な図面に示されているコンポーネントのうちの同じまたは類似のコンポーネントに関しては、同じ参照番号が付されている。図面を明瞭にするために、全ての図面において全てのコンポーネントへのラベル付けは行っていない。0024発明者は、ピアツーピアグループのデバイスとの直接接続およびインフラストラクチャモードでの通信をサポートするための簡素でありながらも柔軟性のある制御機構が、直接通信の有用性および有効性を大きく拡張するであろうことを、認識および理解した。そのような能力は、従来のインフラストラクチャモード通信に加えて直接モード通信をサポートする計算デバイスの普及を拡大する。更に、同じ無線装置を同時に制御する構成を提供することにより、複数の通信モードをサポートするために個別の無線装置にかける費用を削減できる。0025幾つかの実施形態によると、そのような機能は、ワイヤレス計算デバイスにおける無線装置のためのドライバー内で実現できる。無線装置は、複数のメディアアクセスコントロールMACアドレスを認識することができる。ドライバーは、無線装置と対話し、無線装置により使用されるMACアドレスとそれぞれに関連する複数のポートを準備させる。それぞれのポートは、インフラストラクチャモード、またはピアツーピアグループのデバイスとの直接通信のモードで動作するように構成設定される。0026ピアツーピアグループのデバイスとの直接通信のために構成設定されたポートのうち、1つのポートは制御ポートとして構成設定される。制御ポートは、グループのデバイスとの直接接続を確立する制御フレームの送信および受信に使用される。また、制御ポートを通じての通信は、グループ内のワイヤレス計算デバイスの役割を確立する。00271以上の他のポートを、ピアツーピアグループのデバイスとの直接通信をサポートするために使用することもできる。それらのポートは、グループ内のワイヤレス計算デバイスの特定の役割をサポートするように構成設定される。そのようなポートは、例えば、グループオーナーまたはクライアントとしての役割をサポートするように構成設定される。このようにして、ワイヤレス計算デバイスは、Wi-FiDirect標準に従ってグループオーナーネゴシエーションに参加することができ、そのネゴシエーションの結果がどうであれ、そのネゴシエーションにおいて決まった役割で動作する。0028それぞれのポートの構成設定は、ポートの構成設定に適切なフレームを送信および受信するための命令を含むドライバー内の活性化ソフトウェアactivatingsoftwareに基づくことができる。なお、フレームの処理は、ドライバーとオペレーティングシステムとで分離することができ、オペレーティングシステムがポートを通じての通信についてのステータス情報を保持するようにできる。従って、ドライバーは、ステータス情報を必要としないフレームに応答することができ、例えば、受信したメッセージに応じてアクノレッジメントを発行することにより応答することができる。他のフレームはオペレーティングシステムへ渡され得る。0029オペレーティングシステムとドライバーとの間での対話は、標準のドライバインターフェースを通じて行われる。そのインターフェースは、幾つかの実施においてOIDSと呼ばれる一組のコマンドをサポートする。少数の追加のコマンドを使用して、グループ内のワイヤレスデバイス間での直接通信のためのポートを提供するためのドライバーの構成設定をサポートすることができる。追加のコマンドは、ドライバーを制御して、ポートが構成設定されるようにし、そのポートが制御ポートとして働くように、またはグループ内の役割のうちの1つを引き受けるようにする。また、コマンドは、オペレーティングシステムが、ドライバーに対して、割り当てられた役割として適切な機能を行うことを命令することを、可能にする。例えば、ポートが、制御ポートとして構成設定された場合、そのポートは、デバイスおよびサービスを見つけること、グループを形成するために他のデバイスとフレームを交換すること、およびグループ内のワイヤレス計算デバイスの役割についてネゴシエーションすることを、命令される。0030幾つかの実施形態では、ドライバーは、追加のコマンドを認識するように構成設定され、そのコマンドには、インフラストラクチャ接続やピアツーピア接続を確立することにも、それらを介して通信することにも関連していないサイドチャンネル通信を行わせるコマンドが含まれる。一例として、ドライバーは、ピアツーピア接続と直接に関連しない、ピアツーピアグループのデバイスの幾つかの特徴を制御するものとして認識されるフレームを送信するように、構成設定される。0031より特定的な例として、ワイヤレス計算デバイスにおける直接接続は、計算デバイスから近くのディスプレイデバイスへ、オーディオ/ビデオ情報を送信するために使用される。そのようなオーディオ/ビデオ情報は音楽のようなオーディオ情報であり、ディスプレイデバイスはステレオスピーカーである場合もある。サイドチャンネルの情報は、スピーカーを通じて再生される音楽の音量や音色や他のオーディオ特性を制御するために使用される。代替例として、オーディオ/ビデオコンテンツは画像であり、ディスプレイデバイスはプロジェクターである場合もある。サイドチャンネルの情報は、プロジェクターで提示される画像の明るさや他のビデオ特性を制御するために使用される。更に別の例として、オーディオ/ビデオコンテンツはムービーであり、ディスプレイデバイスはテレビジョンである場合もある。サイドチャンネルの情報は、テレビジョンで再生されるムービーの明るさや他のビデオ特性や、ムービーの音量や他のオーディオ特性を制御するために使用される。0032前記の通信技術は、適切な環境において単独でまたは任意の適切な組み合わせで用いることができる。図1は、幾つかの実施形態に従って計算デバイスが通信する環境を示す。0033図1の例では、計算デバイス110は、ラップトップコンピュータとして示されている。なお、計算デバイス110のフォームファクタは、本発明に限定を加えるものではないことを理解すべきである。タブレットや、スマートフォンや、他の適切な形態のデバイスも、本発明の実施形態に従って構成設定されて動作することができる。0034図1は、計算デバイス110がユーザー112により制御されているところを示す。ユーザー112は、当該技術分野で知られた技術を用いて計算デバイス110と対話して、計算デバイス110が他のデバイスとワイヤレスで接続するように制御する。この例では、計算デバイス110は、アクセスポイント120を通じてのネットワーク124へのワイヤレス接続を有する。ネットワーク124は、ホームネットワーク、エンタープライズネットワーク、インターネット、または他の任意の適切なネットワークである。アクセスポイント120を通じてのワイヤレス接続122は、インフラストラクチャ型の接続の例である。ワイヤレス接続122を形成するために任意の適切な技術を使用でき、その技術には、既知のインフラストラクチャ型のプロトコルを用いる技術が含まれる。一例として、ワイヤレス接続122は、Wi-Fiと呼ばれることもあるプロトコルを用いて形成できる。なお、使用されるプロトコルは、本発明の重要事項ではない。0035ここで示した例では、計算デバイス110は、ワイヤレス接続122におけるステーションの役割を有する。計算デバイス110の役割は、アクセスポイント120と情報を交換するために計算デバイス110により行われるワイヤレスプロトコルの特定のステップを示す。0036図1はまた、他のワイヤレス接続を示す。計算デバイス110は、カメラ130およびプリンター134へのそれぞれの接続132および接続136を有するものとして示されている。この例では、カメラ130およびプリンター134は、計算デバイス110がデーターを交換するために接続するワイヤレスデバイスの例である。0037この例では、カメラ130、プリンター134、および計算デバイス110は、ピアツーピアプロトコルを用いてワイヤレス接続132および136を介して通信する。この例では、カメラ130、プリンター134、および計算デバイス110は、ピアツーピアプロトコルに従ってグループを形成する。なお、代替例では、計算デバイス110は、カメラ130と第1グループを形成し、プリンター134と第2グループを形成する。0038ワイヤレス接続132および136は、任意の適切なピアツーピアプロトコルに従って計算できる。この例では、接続132および136は、Wi-FiDirectと呼ばれるWi-Fiプロトコルの拡張版を用いて形成される。0039図2は、ワイヤレス接続122図1などのようなインフラストラクチャモードのワイヤレス接続と、接続132および136図1などのようなピアツーピアのワイヤレス接続とを形成するように動作する計算デバイス210のアーキテクチャを、高レベルで示す。図1の例では、計算デバイス210は、2つの無線装置、無線装置250および無線装置254を含む。それぞれの無線装置は、ワイヤレス通信で送信および受信を行うように適用される。例えば、無線装置250は、ワイヤレス接続122を形成するために使用される。例えば、無線装置254は、ピアツーピア接続132および136を形成するために使用される。0040この例では、無線装置250は、メディアアクセスコントロールMACアドレス252を有する。MACアドレスは、無線装置250と関連する一意の識別子であり、無線装置250を、無線装置254や、計算デバイス210が通信し得る他のデバイスと区別するために、使用される。従って、MACアドレス252は、無線装置250により送信されるパケットに含められて、そのフレームが無線装置250により送信されたことを示す。また、MACアドレス252は、無線装置250へ送信されるパケットに含められて、そのフレームが無線装置250に対するものであることを示す。0041MACアドレス252は、任意の適切な方法で無線装置250へ割り当てることができる。例えば、MACアドレス252は、無線装置250の製造者により割り当てられる。なお、幾つかの実施形態では、MACアドレス252は、計算デバイス210のオペレーティングシステム230または他のコンポーネントにより割り当てられるか、または計算デバイス210が動作しているシステム内の何れかのコンポーネントにより割り当てられる。0042無線装置250は、図2ではドライバー240として表されているソフトウェアを通じて、制御される。ここでは、ドライバー240はインターフェース242を含み、このインターフェース242を通じて、オペレーティングシステム230はドライバー240へ向けてコマンドを発行し、ドライバー240は、オペレーティングシステム230へステータスを報告し受信したデーターを通知する。インターフェース242は、既知の標準に従った方法を含む任意の適切な方法で実施できる。既知の標準の例には、NDISと呼ばれるものがあるが、そのような標準は本発明の重要事項ではない。0043インターフェース242は、無線装置250の構成に依存しないフォーマットの複数のコマンドをサポートする。ドライバー240は、インターフェース242の標準フォーマットのコマンドを、無線装置250へ印加される特定の制御信号へと変換する。更に、ドライバー240は、ワイヤレス接続と関連する特定の低レベル機能を行うように、プログラムされる。例えば、パケットを受信すると、ドライバー240は、パケットが適正にフォーマットされているかを検査する。パケットが適正にフォーマットされている場合、ドライバー240は無線装置250を制御してアクノレッジメントを生成させる。逆に、パケットが適正にフォーマットされていない場合、ドライバー240は無線装置250を制御してネガティブアクノレッジメントを送信させる。0044なお、ドライバー240、そして幾つかの場合には無線装置250は、ワイヤレス接続の確立および維持と関連する低レベル機能を自動的に行うが、オペレーティングシステム230またはアプリケーション220の制御の下で高レベル機能を行うこともできる。幾つかの実施形態では、アプリケーション220またはオペレーティングシステム230はユーザインターフェースを提供し、ワイヤレス通信の最終的な制御が計算デバイス210のユーザーにより行われるようにする。0045図2に示す実施形態では、計算デバイス210は無線装置254も含む。例えば、インフラストラクチャネットワークへの接続のために無線装置250が使用されている時、無線装置254は、接続132および136などのような1以上のピアツーピア接続を形成するために使用される。0046無線装置254は、一般に無線装置250と同じアーキテクチャであり、計算デバイス210へ組み込まれる。無線装置254はドライバー244と関連し、ドライバー244は、オペレーティングシステム230が無線装置254を動作させるための機構を提供する。ドライバー244はインターフェース246を有し、インターフェース246を通じて、オペレーティングシステム230はドライバー244へコマンドを送信し、ドライバー244はオペレーティングシステム230へステータスを提供する。インターフェース246は、インターフェース242と同様に標準のインターフェースであり、オペレーティングシステム230は、ドライバー240の制御に使用される一組のコマンドと同様のコマンドを用いて、ドライバー244と通信する。なお、無線装置254はピアツーピア接続を実施するために使用されるので、ドライバー244は、インフラストラクチャベースの通信では存在しないピアツーピア通信と関連する機能を実施するために、ドライバー240に対するコマンドとは異なるコマンドや追加のコマンドに応答する。0047無線装置250と無線装置254との更なる差異として、無線装置254が複数のMACアドレスを有することが示されている。それに対して、無線装置250は1つのMACアドレス252のみを含む。ここでは、MACアドレス256A、256B、および256Cが示されている。複数のMACアドレスは、例えば、無線装置254の製造者により割り当てることも、任意の適切な方法で割り当てることもでき、任意の適切な方法には、MACアドレス252と関連して説明した方法も含まれる。0048複数のMACアドレスを有することにより、無線装置254は、計算デバイス210の外部のデバイスからは、それぞれに個別のMACアドレスを有する複数のエンティティとして見えるようにされる。一例として、計算デバイス210が、第1ピアツーピアグループのグループオーナーとして、および第2ピアツーピアグループのクライアントとして、個別に通信を行っている場合、グループオーナーとクライアントとに対して個別にエンティティが確立される。計算デバイス210の外部のデバイスは、パケットが第1グループのグループオーナーとしての計算デバイス210により処理されること意図して、第1MACアドレスを用いてパケットをアドレス指定する。第2グループのクライアントとしての計算デバイス210に処理されるこが意図されたパケットは、第2MACアドレスを用いてアドレス指定される。同様に、計算デバイス210は、グループオーナーからのパケットへ第1MACアドレスを挿入する。クライアントからのパケットには第2MACアドレスを含める。0049オペレーティングシステム230が、ドライバー244との対話を、計算デバイス210内の複数のエンティティのうちの特定のエンティティと関連付けることを可能とするために、それぞれのエンティティはポートとして表される。従って、オペレーティングシステム230は、エンティティと関連するポートを通じて、そのエンティティへコマンドを送信し、また、そのエンティティからステータス情報を受信する。0050それぞれのポートは、ポートにより表されるエンティティのタイプに応じた適切な機能を行うように構成設定される。一例として、ピアツーピアグループの一部をなすデバイスは、グループオーナーまたはクライアントの役割を担う。ワイヤレスプロトコルに従うと、グループオーナーは、特定のタイプのアクションフレームを送信するため、および指定された様式で他のタイプのアクションフレームに応答するために、必要とされる。クライアントとして構成設定されたデバイスは、別のアクションフレームおよび応答を送信するか、または別の状況において同じアクションフレームおよび応答を送信する。0051なお、グループオーナーおよびクライアントは、無線装置254およびドライバー244を構成設定して行わせる役割の単なる2つの例であることを理解すべきである。別の例では、エンティティは、グループオーナーやクライアントとして構成設定されない。例えば、エンティティには、コントローラーとしての役割が割り当てられる場合もあり、コントローラーは、グループを形成するためおよびそのグループ内での計算デバイス210の役割を決定するために、他のデバイスとの対話を管理する。0052なお、図2は、同じ周波数チャンネルを用いるインフラストラクチャ接続とピアツーピア通信とが行われる実施形態における個別の無線装置、無線装置250および無線装置254、を示しているが、1つの無線装置のみを使用することも可能である。そのような実施形態では、インフラストラクチャ通信と関連する役割を行うエンティティと、ピアツーピア通信と関連する役割を行うエンティティとは、同じ無線装置で実施される。0053図3は、計算デバイス310が、インフラストラクチャネットワークにおいてそれぞれに役割を有する複数のエンティティと、ピアツーピア通信に関する役割をそれぞれに有する複数のエンティティとを、1つの無線装置を用いてサポートするように構成設定される実施形態を示す。図3は、無線装置354を含む計算デバイス310を示す。無線装置354は、複数のMACアドレス、356A、356B、356C、356D、および356Eを持つものとして示されている。なお、ここでは、無線装置354および関連するドライバー344が同時に5つのポートを提供することを可能にする5つのMACアドレスを示しているが、サポートされるMACアドレスの特定の数は、本発明の重要事項ではなく、別の実施形態では5つより多くの数または少ない数のMACアドレスを使用できることを、理解すべきである。0054この例では、5つのMACアドレスを使用して、それぞれが異なる役割を行うように構成設定された5つのポート382、384、386、388、および390を提供する。ここで示されるシナリオでは、これらのポートのグループ380Aは、インフラストラクチャベースの通信に使用されるエンティティを実施するように構成設定されている。グループ380Bは、ピアツーピア通信のために構成設定されたポートを含む。0055図3に示した例では、グループ380Aは2つのポート、ポート382および384を含む。グループ380Bは、3つのポート、ポート386、388、および390を含むものとして示されている。それぞれの使用タイプについて割り当てられるポートの数は、本発明の重要事項ではなく、任意の適切な数のポートを使用できることを理解すべきである。更に、それぞれのグループのポートの数が静的であるようにすることは、必要条件ではない。オペレーティングシステム320は、ドライバー344へ、必要に応じてポートを動的に生成または終了させるコマンドを発行することができる。0056ポートを生成するコマンドと関連して、オペレーティングシステム320は、そのポートと関連する役割を指定する。ドライバー344は、そのコマンドに応答して、指定された役割のために構成設定されるポートを生成する。その役割は、インフラストラクチャベースの通信またはピアツーピアの通信であり得る。0057なお、そのような能力を実現するために任意の適切な機構を使用できるが、図3は、オペレーティングシステム320とドライバー344との間にインターフェース346を示している。インターフェース346は、標準化された形式のドライバーへのインターフェースとすることができる。一例として、幾つかのドライバーは、NDISインターフェース仕様に従って書かれる。その仕様に従って、OIDと呼ばれるプログラミングオブジェクトを用いて、ドライバー344とオペレーティングシステム320との間でコマンドおよびステータス情報が交換される。NDIS標準は、ドライバーが応答すべきまたは応答し得るOIDの数を定義する。なお、その標準は拡張可能であり、OIDは、特定の状況下で更なる機能をサポートするように定義され得る。この拡張能力は、OIDまたは他の適切な表現を用いてコマンドを定義するために使用でき、それにより、オペレーティングシステム320は、ドライバー344へ、ポートを生成または破壊することや、特定の役割のためにポートを構成設定することを、命令することが可能とされる。0058無線装置354は複数のポートに対するパケットを処理できるが、複数のMACアドレスをサポートする以外に、無線装置354は、幾つかの実施形態では、ポートをサポートするように特別に構成設定する必要はない。無線装置354は、当該技術分野で知られた技術を用いて実施できる。この例では、送信機/受信機358は、当該技術分野で知られておりワイヤレス通信に使用されるハードウェアコンポーネントとすることができる。Wi-Fiインフラストラクチャモードプロトコルおよびピアツーピア通信のためのWi-FiDirectプロトコルに従った通信をサポートするために無線装置354が使用されるこの例では、送信機/受信機358の部分は、Wi-Fi仕様により定義された周波数範囲にわたる複数のサブチャンネルでの通信をサポートする。なお、送信機/受信機358の特定の動作特性は、通信のために使用される特定のプロトコルに応じて様々なものとなるが、それは本発明での重要事項ではない。同様に、コントローラー360は、ワイヤレス無線装置の設計の技術分野で知られたハードウェアコンポーネントとすることができる。同じように、構成設定レジスター370も、ワイヤレス無線装置の設計の技術分野で知られたハードウェアコンポーネントとすることができる。また、MACアドレス356A~356Eと示されたコンポーネントも、当該技術分野で知られた技術を用いて実施できる。幾つかの実施形態では、無線装置354によりサポートされるMACアドレスは、無線装置354の一部であるリードオンリメモリまたは他のコンポーネントへエンコードされる。なお、ドライバー344を介して無線装置354へMACアドレスが割り当てられる実施形態では、MACアドレス356A~356Eを、揮発性または不揮発性の書き換え可能メモリで物理的に実施でき、無線装置354により応答可能なMACアドレスのプールを動的に生成できることを、理解すべきである。0059無線装置354のコンポーネントの実施の様式にかかわらず、無線装置354は、ハードウェアインターフェース346を含むことができ、このインターフェース346を通じてドライバー344は無線装置354を制御することができる。幾つかの実施形態では、ドライバー344は、計算デバイス310内のプロセッサーで実行されるコンピューター実行可能ソフトウェア命令である。従って、ハードウェアインターフェース346は、ドライバー344を実行するプロセッサーと無線装置354を保持する分離したカードとの間に配されるバスコネクターや他の適切な相互接続として実施できる。なお、そのようなハードウェアインターフェースは当該技術分野では知られており、任意の適切なインターフェースを使用することができる。0060ポートをサポートするように無線装置354を構成設定するために、ドライバー344は、無線装置354がそのポートを通じた通信と関連する特定のMACアドレスに対するパケットを処理するようにさせる。ドライバー344は、制御レジスター370へ値を書き込み、MACアドレスをアクティブにするべきことを示し、それにより、無線装置354は、そのMACアドレスで識別された受信パケットを処理できるようになる。動作において、コントローラー360は送信機/受信機358を制御して、構成設定レジスター370内の情報によりアクティブと識別されたMACアドレスにより特定されたパケットへの応答を、行わせる。従って、複数のポートがアクティブである場合、構成設定レジスター370は、それぞれのアクティブなMACアドレスのインジケーションを含む。0061ポートに対するMACアドレスへ無線装置354が応答するように構成設定することに加えて、ドライバー344は、そのMACアドレスと関連して使用される通信パラメーターを指定する。それらのパラメーターは、例えば、別のMACアドレスを用いての通信に別の数のサブチャンネルが使用されることを指定する。このように、別のポートと関連する通信特性は、そのポートと関連する役割に基づいて制御される。特定の例として、制御ポートとして構成設定されたポートは、データーを通信するためのポートよりも、必要とされる帯域は低い。従って、無線装置354は、制御ポートと関連するMACアドレスに関して、より少ないサブチャンネルを使用するように、または異なるコード化スキームを使用するように構成設定される。0062送信される情報に関して、ドライバー344および/または無線装置354は、その情報を含む送信されたフレームが、その情報の送信が向けられているポートと関連するMACアドレスにより識別されるように、動作する。任意の適切な機構を用いて、MACアドレスと、特定のポートから送信されるまたはそのポートにより受信される特定のフレームとを、関連付けることができる。更に、この処理は、ドライバー344内で一部または全てを行うことも、無線装置354内で一部または全てを行うこともできる。なぜなら、ポートを機能させることに関して、特定の実施による影響は無いからである。0063複数のポートを実施するために、ドライバー344を構成設定することもできる。この例では、ドライバー344は、マルチプレクサー/デマルチプレクサー392を実現するコンピューター実行可能命令を含むものとして、示されている。マルチプレクサー/デマルチプレクサー392は、ポートと関連する受信パケットを、そのポートの機能を実現するドライバー344の一部へルーティングするように、動作する。また、マルチプレクサー/デマルチプレクサー392は、何れかのポートから送信のためのパケットを受信し、そのパケットを無線装置354へ送る。0064複数のポートが送信のための情報を同時に有するシナリオでは、マルチプレクサー/デマルチプレクサー392は、受信機358がポートから情報を受け取る順序を確立するために、調停を行う。この目的のために、マルチプレクサー/デマルチプレクサー392は、任意の適切な方針を用いる。例えば、制御フレームを運ぶパケットには、データフレームを運ぶパケットよりも高い優先度が与えられる。方針の別の例としては、インフラストラクチャモードで動作するポートと関連する送信には、ピアツーピアモードで動作するポートのものよりも高い優先度が与えられる。更に別の例としては、ピアツーピアグループにおいて、グループオーナーの役割を持つように構成設定されたポートには、クライアントの役割を持つように構成設定されたポートよりも高い優先度が与えられる。なお、マルチプレクサー/デマルチプレクサー392により適用される特定の方針は、本発明の重要事項ではなく、任意の適切な方針を用いることができる。0065パケットをルーティングするようにマルチプレクサー/デマルチプレクサー392を構成設定することに加えて、ドライバー344は、特定の機能モジュールをそれぞれのポートと関連付けすることにより、構成設定される。ポートと関連付けされる特定の機能モジュールは、そのポートへ割り当てられた役割に基づく。例えば、図3は5つの機能モジュールを示す。機能モジュール394Aは、ポートと関連付けされたときに、そのポートを、インフラストラクチャネットワークにおけるステーションの役割で動作するように構成設定する。同様に、機能モジュール394Bは、ポートと関連付けされたときに、そのポートを、インフラストラクチャネットワークにおけるアクセスポイントの役割のために構成設定する。機能モジュール394Cは、ポートと関連付けされたときに、そのポートを、ピアツーピアモードにおけるコントローラーの役割で動作するように構成設定する。機能モジュール394Dは、ポートと関連付けされたときに、そのポートを、ピアツーピアグループにおけるグループオーナーの役割のために構成設定する。機能モジュール394Eは、ポートと関連付けされたときに、そのポートを、ピアツーピアグループにおけるクライアントの役割のために構成設定する。図3には示していないが、他の機能モジュールを代替的または追加的に含むこともできる。0066機能モジュール394A~394Eは、任意の適切な方法で実施できる。例えば、それぞれの機能モジュールは、その機能モジュールと関連する役割のための機能を行うようにエンコードされたコンピューター実行可能命令の集合体として、実施できる。例えば、機能モジュール394Aに関しては、インフラストラクチャネットワークにおけるステーションとして適切にパケットを送信させるように無線装置354を制御するための命令が、エンコードされる。更に、機能モジュール394Aは、インフラストラクチャネットワークにおけるステーションの動作を実施するように、ドライバー344がオペレーティングシステム320と対話することを可能にする命令を含むことができる。特定的な例として、機能モジュール394Aは、特定の受信フレームに対して応答を自動的に生成するように、コード化される。更に、機能モジュール394Aは、フレームで受信したデーターを、計算デバイス310のメモリ内の位置へ転送し、次に、データーを受信したことをオペレーティングシステム320へ通知するように、コード化することができる。更に、機能モジュール394Aは、その機能モジュールの役割のために無線装置354を構成設定する。その構成設定は、特定の役割で使用されるワイヤレス通信のサブチャンネルの数の設定や、他のパラメーターの設定を含む。機能モジュール394により行われる動作は、Wi-Fiネットワークにおけるステーションとしてのみ構成設定されたワイヤレスネットワークインターフェースカードに関して従来のドライバーにより行われる動作と類似であり、機能モジュール394は、当該技術分野で知られた技術を用いてコード化することができる。0067他のそれぞれの機能モジュールは、同様に、オペレーティングシステム320および無線装置354と対話するようにコード化され、無線装置354を構成設定するようにコード化され、それぞれの役割に適するように通信を内部で処理および生成するようにコード化される。機能モジュール394Bに関しては、例えば、インフラストラクチャネットワークにおけるアクセスポイントとして当該技術分野で知られた適切な動作で、受信フレームに対して動作を行うまたは応答するコンピューター実行可能命令により、コード化される。また、機能モジュール394Bは、当該技術分野で知られた技術を用いてオペレーティングシステム320と対話するように、コード化される。0068機能モジュール394Cは、ピアツーピアグループの確立と関連する機能を行うようにコード化される。同様に、機能モジュール394Cを実現する命令は、当該技術分野で知られた技術を用いて書かれる。それらの命令は、無線装置354が、特定のプロトコルに従って、ピアツーピア通信のグループの確立において使用されるタイプのアクションフレームを含むパケットを送信するようにさせ、また、そのタイプのアクションフレームに応答するようにさせる。オペレーティングシステム320内のコンポーネントは、それらのアクションフレームの送信をトリガする。なお、幾つかのアクションフレームに関しては、機能モジュール394Cは、オペレーティングシステム320によるexpressエクスプレスアクション無しに、アクションフレームに対する応答を生成するように構成設定される。表1は、オペレーティングシステム320により機能モジュール394Cが送信を命令されるアクションフレームの例を示す。これらのアクションフレームは、Wi-FiDirectプロトコルに適切なアクションフレームを表す。このプロトコルで使用される追加のアクションフレームは、expressエクスプレスコマンド無しに、受信したアクションフレームまたは他の適切なトリガに応答して、送信される。なお、別のプロトコルに対して別のまたは追加のアクションフレームを使用できること、および特定のアクションフレームにより本発明が限定されないことを、理解すべきである。0069オペレーティングシステム320が、表1のアクションフレームのうちの1つのものを送信するために制御ポートに対する要求を提出すると、ドライバー344内の機能モジュール394Cは、下記のような動作を行う。a.送信のためにダイアログトークンを選択する。送信が、要求に対して応答するものである場合、オペレーティングシステムは、使用するダイアログトークン以下で説明を提供し、ドライバー344は、その指定されたダイアログトークンを使用する。b.要求を完了する。ドライバー344は、ダイアログトークンを選択すると、そのダイアログトークンをオペレーティングシステム320へ報告する。c.フレームの標的となっているWi-FiDirectデバイスと同期をとる。実施の態様に応じてではあるが、送信が、受信した要求に対して応答する送信例えば、インビテーション要求の受信の際に送信されるインビテーション応答である場合、このステップは省略することができる。d.フレームを送信し、ACKアクノレッジを待つ。e.フレームに対するACKが受信されるか、またはリトライを試みてもACKを得られなかった場合、NDIS_STATUSインジケーションをオペレーティングシステム320へ送信して、アクションフレームの送信ステータスについて通知する。このインジケーションは、アクションフレームを含むパケットからの情報エレメントを含む。0070送信が、ピアデバイスから応答を受信したであろうフレームに対するものであり、送信が成功した場合、ポートは、ピアデバイスが応答アクションフレームをミニポートへ送信するように、使用可能なステータスで維持される。タイムアウトと、使用可能にしておく機構とは、Wi-FiPeer-To-PeerTechnicalSpecificationワイファイピアツーピア技術仕様に従うべきである。0071機能モジュール394Cがポートと関連する場合において、機能モジュール394Cをトリガしてアクションフレームを送信させるオペレーティングシステム320内の特定のコンポーネントは、本発明の重要事項ではない。しかし、図3は、オペレーティングシステム320内にデバイスマネージャ330を示している。デバイスマネージャ330は、例えば、当該技術分野で知られたデバイスマネージャであり、ユーザーにプログラムのインターフェースを提示し、それを通じて、ユーザーまたは他の実行コンポーネントは、ピアツーピア通信を用いてデバイスとの通信セッションを確立することを要求する。0072ポート386などのようなポートが、機能モジュール394Cと関連付けられることにより、ピアツーピア通信のコントローラーとして動作するように構成設定された場合、デバイスマネージャ330は、ポート386と対話して、1以上のデバイスとのピアツーピア通信の確立の際の様々な特性を制御する。例えば、デバイスマネージャ330は、プリンター134図1などのようなデバイスへ計算デバイス310がワイヤレスで接続されることを要求するユーザー入力を、受信する。その入力に応答して、デバイスマネージャ330は、スタック322を通じてポート386と対話して、機能モジュール394Cに無線装置354を制御させて、無線装置354がアクションフレームを送信するようにさせる。0073送信されたアクションフレームは、デバイス発見またはサービス発見と関連するアクションフレームであり得る。デバイスマネージャ330はそれらの要求の特性を特定する。例えば、機能モジュール394Cは、計算デバイス310の近くにある何れかのデバイスを発見するために探索を行うべきか、またはプリンタサービスなどのような指定されたサービスを提供するデバイスのみを探索するかなどを、特定する。なお、デバイスマネージャ330は、グループ内の1以上のデバイスとの通信を確立するためにポート386を通じて別のフォーマットのコマンドを送信するように、構成設定できる。0074一例として、図3は、オペレーティングシステム320が永続的デバイス記憶装置328を保持していることを示している。永続的デバイス記憶装置328は、計算デバイス310により以前にワイヤレス通信を確立したデバイスを識別する情報を含む。ユーザー入力または他の適切なトリガに応答して、デバイスマネージャ330は、永続的デバイス記憶装置328内の情報へアクセスして特定のデバイスを識別し、機能モジュール394Cに対するポート386を通じてコマンドを送信し、永続的デバイス記憶装置328において識別されたデバイスとのワイヤレス通信を確立するためにアクションフレームを自動的に生成する。0075デバイスマネージャ330が、外部デバイスとの通信を確立するために、パスワードや識別子などのような情報を必要とするシナリオでは、デバイスマネージャ330は、代替的または追加的に、ユーザーインターフェース図3には示さずを通じてユーザーと対話して、その情報をユーザーまたは他のソースから入手する。その入手した情報を送信する必要がある場合、デバイスマネージャ330は、コントローラーとして構成設定されたポートと対話して、その情報が送信されるようにする。0076デバイスのグループを識別するためにポート386などのような制御ポートとして構成設定されたポートをトリガする機構にかかわらず、制御ポートは、計算デバイス310を含むグループを形成する1以上のデバイスを識別するためにアクションフレームの送信および受信を行う。ポート386を通じて開始される動作は、グループを識別することに加えて、そのグループ内の計算デバイス310の役割に関するネゴシエーションを行う。ここで示したWi-FiDirectピアツーピアプロトコルの例では、デバイスは、グループ内で、グループオーナーとしての役割またはクライアントとしての役割を有する。識別されたグループ内の別のデバイス1以上との通信は、別のポートを通じて行うことができる。そのポートは、計算デバイス310に対して特定された役割での行動をサポートするように構成設定される。0077図3に示した例には、更なるポート388および390が示されている。これらのポートのそれぞれは、異なる役割と関連付けされている。例えば、ポート388は、グループオーナーの役割と関連付けされている。ポート390は、クライアントの役割と関連付けされている。別の役割のためのポートの構成設定は、ポートと、そのポートと関連する機能を行う機能モジュールとを関連付けることにより、行われる。例えば、グループオーナーとして動作するデバイスと関連する機能を行う機能モジュール394Dは、ポート388と関連付けされる。同様に、クライアントとして動作するデバイスと関連する機能を行う機能モジュール394Eは、ポート390と関連付けされる。0078動作において、ポート388および390と関連するMACアドレスを有する無線装置354を通じてパケットが受信されると、マルチプレクサー/デマルチプレクサー392は、それらのパケットを、関連するポート内で処理するために送る。ポート388へ送られたパケットは、機能モジュール394Dにより処理される。機能モジュール394Dは、グループオーナーの役割と関連するアクションを行う。データフレームを含むパケットは、そのデーターをメモリへ記憶して、データーが受信されたことをスタック322へ通知するように、処理される。このようなオペレーティングシステム320との対話では、当該技術分野で知られたスタックシグナリング技術を用いる。なお、各ポートとオペレーティングシステム320との間での通信を行うための特定の機構は、本発明の重要事項ではない。0079計算デバイス310がグループオーナーであるグループで確立されたセッションの一部として管理フレームmanagementframeが送られた場合、それらの管理フレームは、同様に、マルチプレクサー/デマルチプレクサー392によりポート388へ送られる。機能モジュール394Cは、管理フレームへ応答するように構成設定されるか、またはオペレーティングシステム320へ管理フレームを報告するように構成設定されるかであるが、これは、機能モジュール394Cが管理フレームへ応答するようにプログラムされるか否かに応じてのことである。0080同様に、計算デバイス310が、グループ内のクライアントの役割を行うために構成設定される場合、そのグループ内のデバイスとの通信と関連するパケットはMACアドレスにより識別され、それにより、マルチプレクサー/デマルチプレクサー392は、それらのパケットを、ポート390などのようなクライアントとして構成設定されたポートへ送る。ポート390は機能モジュール394Eと関連し、ピアツーピアプロトコルに従ったクライアントの機能を実施する。機能モジュール394は、当該技術分野で知られた技術を用いて、パケット内のデータフレームからのデーターをメモリへ転送し、そのデーターをオペレーティングシステム320へ通知するように構成設定される。機能モジュール394Eは、管理フレームを含むパケットに応答するか、またはそれらの管理フレームをオペレーティングシステム320へ通知する。0081図3は、通信機能の特定の階層を示す。外部デバイスとの通信と関連する特定の機能は、無線装置354内で行われる。他の機能は、ドライバー344内で行われる。更に別の機能は、オペレーティングシステム320内で行われる。特別には示していないが、更に別の機能は、アプリケーション220や、ユーザーまたは計算デバイス310の外部のソースからの入力により、行われる。そのようなアーキテクチャでは、ピアツーピアグループの一部として何れのデバイスを接続するかを決定することなどのような高レベル機能は、アーキテクチャの高レベル部分で行われる。逆に、受信したパケットに対するアクノレッジメントの生成などのような低レベル機能は、アーキテクチャの低レベル部分で行われる。例えば、ドライバー344は、そのようなアクノレッジメントを生成するように構成設定される。0082なお、異なる様式で機能を区分して、通信の様々な構成部分が様々なコンポーネントにより制御されるようにする他のアーキテクチャも可能であるが、ここで示した例では、無線装置354およびドライバー344は、コマンドや受信パケットなどのようなイベントへステートレスstatelessに応答するように構成設定される。ステート情報が通信セッションに含まれるという点に関して、ステート情報は、オペレーティングシステム320内で維持することができる。例えば、スタック322は、ポート382、384、386、388、および390の何れかを通じて行われる通信セッションに関するステート情報を、維持することができる。維持される特定のステート情報は、それぞれのポートでサポートされるプロトコル内のステートの数およびタイプにより決まる。0083図3の例では、セッションステート情報324Aがポート388と関連するものとてして示されている。明確には示していないが、セッションステート情報は、他のポートに関しても維持することができる。ポート388により実施されるプロトコルに応じて、そのセッションステート情報は、セッションのパラメーター、例えば、計算デバイス310がグループオーナーであるグループに参加しているデバイスの数などを示す。また、それらのデバイスが低電力モードへ入るまでの時間などのような他のステート情報も、セッションステート情報324の一部として記憶することができる。0084図3は、ポート388と関連するセッションステート情報324Bおよび324Cを更に示す。ステート情報324Bおよび324Cは、別のセッションを記述するものであり得る。そのようなセッションは、計算デバイス310が3つのグループに参加しており、それらのグループのグループオーナーである場合に、発生する。複数のそのようなセッションをサポートするために、送信または受信される特定のフレームを、対応するセッションと関連付ける機構が提供される。任意の適切な識別子を用いることができる。例えば、デバイスのグループとの通信をセッションと見なすことができ、セッションの一部としての関連する通信を、グループの識別子を用いてグループ化することができる。スタック322はデバイスマネージャ330または他のコンポーネントへのインターフェースを提供し、各セッションを、そのセッションにおけるエンドポイントである適切なコンポーネントと関連付けする。このようなインターフェース処理は、当該技術分野で知られた技術を用いて行われる。0085別個のセッションからの通信が適切に提示されることを可能とするステート情報を維持することに加えて、スタック322は、機能を行うための通信の交換の一部である通信をスタック322が関連付けすることを可能とする情報を、各セッションについて維持しているステート情報の一部として維持する。例えば、要求を表すフレームが送信された場合において、続いて受信されるフレームがその要求に対する応答であることを認識することにより、要求および応答の処理を楽にすることができる。交換の一部である通信を関連付ける機構を提供することは、特に、同じポートで複数のセッションがサポートされる場合などに、処理を楽なものとする。交換の一部である通信の認識を可能とするために、ダイアログトークンを使用することができる。交換を開始する通信には、そのようなダイアログトークンによりタグ付けが行われる。そのような通信に応答すると、要求からのダイアログトークンが、その応答へコピーされる。従って、要求を送信するデバイスは、応答、または同じ交換の一部である他の通信を、その要求と関連付けすることができる。従って、ステート情報324Aは、セッションの一部として通信を行っているデバイスの関与する進行中の通信と関連するダイアログトークンを、含むことができる。0086ダイアログトークンは、任意の適切な方法で生成することができる。ダイアログトークンは、例えば、オペレーティングシステム320内で生成することができる。代替例として、ダイアログを開始するパケットがポートで開始された場合、ポートまたはドライバー344内の他のコンポーネントトークンを生成する。同様に、パケットへの応答がポート内、例えば、ポート386、388、または390内で生成された場合、トークンは、そのポートにより応答へ挿入される。逆に、パケットへの応答が、オペレーティングシステム320内で生成されたコマンドに応答して開始された場合、スタック322などのようなオペレーティングシステム320内のコンポーネントが、応答へ含めるトークンを指定する。表1は、列挙したアクションフレームに関して、アクションフレームと関連するダイアログトークンが、オペレーティングシステムで生成されるか、または、そうでない場合にはドライバーで生成されるかを示す。なお、表1は、フレームに対するダイアログトークンの生成の機能を区分する単なる一例を示すものであり、そのような機能の区分は任意に適切に行えることを、理解すべきである。0087類似のセッションステート情報326A、326B、および326Cが、ポート390と関連して示されている。セッションステート情報326A、326B、および326Cは、3つのセッションのそれぞれに対して維持されるステートを表し、それぞれのセッションは、計算デバイス310がクライアントの役割を持つメンバーであるグループと、関連付けされている。セッションステート情報324A、324B、および324Cと同様に、一意のダイアログトークンがそれぞれのセッションと関連付けられ、それぞれのセッションと関連した受信パケットをスタック322が分離することを可能にする。同様に、計算デバイス310は、計算デバイス310から送信されるパケットとダイアログトークンを関連させる。ダイアログトークンは、スタック322、または計算デバイス310からパケットを受信するリモートデバイス上の同様の処理コンポーネントが、情報のマルチパケット交換の一部であるパケットを関連付けすることを可能にするために、使用される。例えば、第1パケットに応答して送信された第2パケットは、第1パケットからのトークンを含む。その結果、第1パケットの送信者が第2パケットを受信するとき、送信者は、第1パケットと第2パケットとを同じダイアログで関連付けすることができる。0088図3に示すアーキテクチャでは、それぞれの接続を考慮したステート情報は、オペレーティングシステム320内で維持される。その結果として、ポート386、388、および390は、ステート情報を維持する必要がなくなくる。幾つかの実施形態では、ポートの機能を実現する機能モジュール394C、394D、および394Eなどのような機能モジュールは、ステート情報を維持しない。それぞれの機能モジュールは、オペレーティングシステム320からのコマンドや、無線装置354を通じて受信したパケットなどのようなイベントに対して応答するように、コード化される。なお、この機能がどのように区分されるかにかかわらず、計算デバイス310は、各エンティティの機能を行うポートを確立および構成設定することにより、複数のエンティティと関連する機能を供給するように制御される。その結果として、ドライバー344および無線装置354は複数のポートをサポートするように構成設定されるので、計算デバイス310は、様々なエンティティとして同時に動作する。それらのエンティティは、インフラストラクチャモードの通信と関連するエンティティと、ピアツーピアの通信と関連するエンティティとを含むことができる。0089図4は、ピアツーピアプロトコルに従った通信を確立するように計算デバイス310を動作させるプロセスを示す。図4のプロセスは、ブロック410から開始し、入力は、ピアツーピア通信が行われることを示す。ブロック410は、アプリケーションプログラムがオペレーティングシステム320へピアツーピア通信を確立することを要求する処理を含む。この例での要求は、Wi-FiDirect標準を用いてのピアツーピア通信のためのものである。そのような要求は、例えば、デバイスマネージャ330図3によりプリンターを特定することを要求するワードプロセッサーなどのようなアプリケーションコンポーネントにより、作られる。なお、ピアツーピア通信を開始する理由にかかわらず、ブロック410での処理は、オペレーティングシステム320へコールを行うアプリケーションを含む。0090そのようなコールは、オペレーティングシステム320をトリガして、ピアツーピア通信のためにドライバー344を構成設定させる。なお、ドライバー344の構成設定を試みる前に、オペレーティングシステム320は、計算デバイス310へインストールされたドライバーをWi-FiDirect標準に従ってピアツーピア通信のために構成設定可能かを、判定する。ブロック412での処理は、インターフェース346を通じてコマンドを送る処理を含む。一例として、そのコマンドはOIDの形式であり、DOT11_VWIFI_ATTRIBUTESと呼ばれるものである。なお、コマンドの特定の形式が本発明の重要事項ではないことを、理解すべきである。0091コマンドの形式にかかわらず、ドライバー344は、Wi-FiDirectプロトコルに従った通信をサポートする能力を示すインジケーションにより、応答する。ドライバー344が複数のポートをサポートできる図3に示す例では、それらのポートの幾つかがWi-FiDirect通信のために構成設定され得るので、ブロック412で受信される応答は、ドライバー344のそのような能力を示す。従って、図4のプロセスは先へ進む。ドライバー344にWi-FiDirect通信をサポートする能力が無い例では、ブロック412での処理は、代替の通信機構を選択する処理または他の適切な応答を行う処理を含む。0092ドライバーが、要求されたプロトコルに従った通信をサポートしない上記のシナリオでは、プロセスはブロック414へ進む。ブロック414において、オペレーティングシステムは、Wi-FiDirect通信に使用されるポートをドライバーが確立することを、要求する。オペレーティングシステム320からドライバー344へ送信される他のコマンドと同様に、そのような要求は、インターフェース346を通じてコマンドの形式で送信される。この例では、コマンドはOIDあり、OID_DOT11_CREATE_MACの形であり得る。なお、コマンドの特定の形式は本発明の重要事項ではない。0093そのようなコマンドに応答して、ドライバー344は無線装置354を構成設定して、追加のMACアドレスがピアツーピア通信のために要求されたポートと関連付けされるものと認識するようにする。MACアドレスは、任意の適切な方法で得ることができる。MACアドレスは、例えば、ブロック414で送信されるコマンドと関連して、無線装置354において有線で得ることや、ドライバー344により生成することや、オペレーティングシステム320により提供することができる。0094MACアドレスが生成される様式にかかわらず、MACアドレスが確立されると、ドライバー344は、そのMACアドレスを用いて確立されたポート上の情報を用いてオペレーティングシステム320へ応答する。応答は、インターフェース346を通じて送信されるステータスメッセージの形態とすることがてきる。一例として、ステータスメッセージはOIDの形式であり、DOT11_MAC_INFOと呼ばれるものである。ステータスメッセージと関連して、ドライバー344は、インターフェースアドレスを特定する。インターフェースアドレスは、ドライバー344の生成したポートへアクセスするために必要な情報を、オペレーティングシステム320のために、特定する。このシナリオでのインターフェースアドレスは、無線装置354により使用されるMACアドレスと関連している必要はない。なぜなら、マルチプレクサー/デマルチプレクサー392図3が、ポートと関連するMACアドレスと、オペレーティングシステム320がポートへアクセスする際に使用するインターフェースアドレスとの間のマッピングを完成させるからである。0095図3と関連して説明した、ポートが特定の機能を実施する実施形態において、ポートが生成されると、ポートは、そのポートと特定の機能の組とを関連付けすることにより構成設定される。ピアツーピア通信を確立するために、最終的には、グループオーナーまたはクライアントとして構成設定されたポートが使用される。しかし、1つのデバイスがグループ内の他のデバイスとデーターを通信しているときに、その1つのデバイスのための特定の役割のポートが決定される前に、複数のアクションフレームが、計算デバイス310の近くの他のデバイスと交換されて、そのグループが形成され、そのグループ内の計算デバイス310に対する特定の役割についてネゴシエーションされる。図3に示す実施形態では、それらの制御フレームは、ポート386などのような制御ポートを通じて交換される。このポートは、機能モジュール394Cと関連付けられて制御機能を行う。従って、ブロック418で、プロセスは、オペレーティングシステム320がコマンドをドライバー344へ送信して、ブロック416で定義されたポートを制御ポートとして構成設定することを含む。そのようなコマンドは、インターフェース346を通じて送信することができる。一例として、コマンドはOIDの形式であり、DOT11_OPERATION_MODE_WFD_DEVICEと呼ばれるものである。0096制御ポートが確立されると、プロセスは図5に示すプロセスへ進む。図5は、計算デバイス310を含むデバイスのグループを確立するために、その制御ポートを通じて行われる動作を示す。図5のプロセスはブロック510で開始し、オペレーティングシステム320はコマンドをドライバー344へ送信して、デバイスまたはサービスをスキャンさせる。このコマンドは、ブロック416図4で制御ポートのために確立されたインターフェースアドレスを通じて送信することができる。0097そのようなコマンドに応答して、ブロック512において、ドライバー344は、無線装置354を制御して、アクションフレームを含む1以上のパケットを送信させ、デバイスに対して、そのパケットを受信して応答することを要求する。送信されたパケットは、ダイアログトークンと、制御ポートとして動作するポート386と関連するMACアドレスとにより、タグ付けされている。従って、無線装置354により検出された応答は、マルチプレクサー/デマルチプレクサー392を通じてポート386へ渡される。ポート386から、その応答はオペレーティングシステム320へ渡され、更に、ダイアログトークンによりタグ付けされ、その応答をスキャンに関する応答として識別できるようにする。0098オペレーティングシステム320へ渡された応答は、計算デバイス310の近くにありピアツーピアグループの一部としてワイヤレス通信に使用可能なデバイスを識別する情報を含む。ブロック514において、オペレーティングシステム320は、応答の中にある情報を使用して、応答してきたデバイスの何れかとワイヤレス接続を確立すべきか否かについてのユーザー入力を要求する。そのような要求は、任意の適切な様式で行うことができ、その様式は、計算デバイス310を接続できるデバイスについての1以上のオプションをユーザインターフェースを通じて提示することを含む。ブロック516において、ユーザーは、1または複数のデバイスを選択する入力を提供する。なお、接続を形成するためのデバイスを識別するために使用される特定の処理は、本発明の重要事項ではない。0099接続を形成する対象となるデバイスを識別する様式にかかわらず、プロセスはブロック518へ進み、オペレーティングシステムは、ドライバー344に対してコマンドを発行して、識別されたデバイスと関連するグループについてのネゴシエーションを開始させる。Wi-FiDirectプロトコルでのグループを形成する処理の一部は、グループオーナーネゴシエーションである。従って、ブロック518において、オペレーティングシステム320は、ドライバー344に命令して、グループオーナーネゴシエーションを開始させる。そのようなコマンドは、制御ポートに対して割り当てられたインターフェースアドレスを通じて送信できる。00100ブロック520において、ドライバー344は、無線装置354を制御して、アクションフレームを含むパケットを送信させる。これらはグループオーナーネゴシエーションの一部である。これらのパケットは、Wi-FiDirectプロトコルに従ってフォーマットされる。なお、他のプロトコルが使用される場合も、同様に動作が行われる。00101ブロック520において送信されたアクションフレームに応答して、計算デバイス310の外部にあり且つ近くの位置にあるデバイスから1以上のアクションフレームが受信される。それらの応答はポート386内で処理されて、この例では、制御ポートとして構成設定される。ドライバーがステート情報を保持しない実施形態では、処理は、単に応答をオペレーティングシステム320へ渡すことを含む。なお、別の実施形態では、ポート386内での処理は、代替的または追加的に、応答を判定し、無線装置354を制御して応答を送信させることを含む。00102例示の実施形態では、応答に基づいて、オペレーティングシステムは、ドライバー344に命令して、グループオーナーネゴシエーションと関連する更なるアクションフレームを送信させる。従って、ブロック520および522での処理は、反復して行うことができ、オペレーティングシステム320は、ドライバー344をトリガして、アクションフレームを含むパケットを送信させることを、理解すべきである。ドライバー344は、それらの応答をオペレーティングシステム320へ渡す。なお、ドライバー344が、以前のアクションフレームに対する応答を受信したときに、オペレーティングシステム320からのexpressエクスプレスコマンド無しに、更なるアクションフレームを識別して送信する、という別の実施形態も可能である。00103アクションフレームを含むパケットを送信し、応答を受信し、応答に基づいて更なるアクションを行う処理は、グループオーナーネゴシエーションが終了するまで継続される。個々のグループオーナーネゴシエーションの終了は、実施されるワイヤレス通信のためのプロトコルにより異なる。なお、図5に示す実施形態では、グループオーナーネゴシエーションは、計算デバイス310がグループ内の他のデバイスへグループオーナーコンファメーションアクションフレームを送信することで、終了する。そのアクションはブロック524で行われる。このようなアクションは、オペレーティングシステム320がポート386を通じてドライバー344へ、そのようなアクションフレームを送信することを命令することにより、トリガされる。00104ここで示された各ポートが特定の機能を行う実施形態では、グループを確立するため、およびグループオーナーのネゴシエーションを行うために使用されるポートは、計算デバイス310がピアツーピアグループのグループオーナーまたはクライアントとして動作しているときには、通信の処理を行わない。ここで示した実施形態では、その目的のために少なくとも1つの別のポートが使用される。従って、グループのネゴシエーションおよびそのグループ内での計算デバイス310の役割のネゴシエーションが終了すると、プロセスはブロック610図6へ進み、形成されたグループ内のデバイスとの接続をサポートするための第2のポートが確立される。00105ブロック610において、そのようなポートを確立するプロセスが開始され、オペレーティングシステム320は、ドライバー344により第2のポートを確立することを、要求する。ブロック610での処理は、ブロック414での処理と同じものとすることができる。ブロック612でのドライバーによる応答もまた、ブロック416での応答と同じものとすることができ、例えば、そのポートのためにインターフェースアドレスを提供する。00106計算デバイス310の役割がクライアントであるグループ内での通信に、第2のポートが使用される場合、処理はブロック624へと分岐する。ブロック624において、オペレーティングシステム320はドライバー344に命令して、第2のポートがクライアントと関連する機能を行うように第2のポートを構成設定させる。ブロック622でのコマンドと同様に、ブロック624でのコマンドは、インターフェース346を通じて渡される。そのようなコマンドに応答して、ドライバー344は、クライアントの機能を含む機能モジュール394Eを、ブロック612で生成された第2のポートと関連付ける。00107第2のポートを構成設定する際の特定の役割にかかわらず、構成設定が完了すると、処理はサブプロセス630へ進む。サブプロセス630内で、オペレーティングシステム320は、ポートを、特定の役割のために構成設定された無線装置に対するインターフェースとして扱う。そのようなインターフェースは、そのポートに対する指定されたインターフェースアドレスを用いるネットワークアダプターとしてアプリケーションコンポーネントへ提示される。生成されたそれぞれのポートは、個別のネットワークアダプターとして提示される。インターフェースをネットワークアダプターへとフォーマットすることは当該技術では知られており、オペレーティングシステム320は、そのような既知のフォーマット技術を用いて各ポートをネットワークアダプターとして提示することができる。なお、ブロック632でオペレーティングシステムによりポートを提示する際の特定のフォーマットは、本発明の重要事項ではないことを理解すべきである。00108ポートを提示する際のフォーマットにかかわらず、次に、アプリケーションは、ポートを使用してワイヤレスで情報を交換する。ブロック634において、アプリケーションは、当該技術分野で知られた技術を用いて、ワイヤレス通信のためにネットワークアダプターと対話する。ブロック634でのそのような交換は、アプリケーションがそれを終了させるまで、またはそのポートを通じて通信する必要がなくなるまで、継続される。ポートが存在している間は、コンポーネント上の他のアプリケーションもまた、そのポートを通じて情報を交換する。00109従って、ブロック636において、オペレーティングシステムは、ポートを通じてのアクティブな通信セッションが無いことを検出すると、ポートを終了させるコマンドを送信する。一例として、表1は、特定のアクションフレームが送信された後に制御ポートをアクティブに維持するか否かを示す。他のポートに対しても類似の動作パターンを定義することができ、そのような情報は、ポートを破壊するためにコマンドが送信されるか否かを決定するために使用できる。00110ポートが破壊される場合、コマンドは、インターフェース346を通じて送信される。それに応答して、ドライバー344は、ポートを形成したときに生成されたデーター構造を削除し、無線装置354に命令してその構成設定を変更させ、以降はそのポートと関連するMACアドレスへ無線装置354が応答しないようにする。ブロック636においてポートを破壊することにより、MACアドレスを別のポートに対して再使用できるようになる。そのような能力は、例えば、無線装置354がサポートするMACアドレスよりも多くのタイプのポートに対してドライバー344を構成設定できる実施形態において、有用である。このようにして、MACアドレスを、時間の経過とともに様々なタイプのポートで共有することができる。00111なお、ポートを破壊する代わりに、ポートを別の機能のために使用することもできる。幾つかの実施形態では、制御ポートは、何れかのピアツーピアワイヤレスセッションがアクティブであるかぎり維持される。そのシナリオでは、1つのセッションが、制御ポートと通信ポートとの2つのポートを有し、グループオーナーまたはクライアントとして通信するように構成設定される。幾つかのシナリオでは、制御ポートは、主に、ピアツーピア通信のためのグループを確立する際に使用されるので、データーが関連する通信ポートを通じて通信されるセッション中に、他の機能をサポートすることができる。特定的な例として、ワイヤレスデバイスのグループが確立された後に、制御ポートをサイドチャンネルとして使用することができる。サイドチャンネルは、ワイヤレス通信のプロトコルと関連しない制御情報を送信するために使用できる。00112図7は、サブプロセス630に代えて行うことができるサブプロセス730を示す。ここで示されるように、サブプロセス730は、サブプロセス630と同様に開始される。ブロック732において、オペレーティングシステム320は、ネットワークアダプターを通じてアプリケーションに通信ポートを提示する。この通信ポートは、ピアツーピアグループにおける特定の役割のために構成設定されている。ブロック734において、アプリケーションは、通信のためにネットワークアダプターを使用する。特に、通信は、計算デバイス310がメンバーであるグループの一部をなす外部デバイスとのデーターの交換を含む。00113ブロック736において、データーの送信と同時に、例えば、グループの確立の際に使用された制御ポートは、サイドチャンネル通信のために使用される。図3の実施形態では、そのような能力は、制御ポートの機能を実現するコード化を機能モジュール394Cに関して行い、サイドチャンネル情報を送信するコマンドに応答するように構成することにより実現できる。なお、このコマンド、および場合によっては送信するデーターは、制御ポートを通じて提供されるが、そのコマンドやデーターは、ワイヤレスグループの確立に使用されるアクションフレームとは別の方法で送信することができる。ブロック736での処理もまた、それらのコマンドを提供するために制御ポートへアクセスするアプリケーションコンポーネントに応答して行われる。サイドチャンネル通信をトリガするコマンド1または複数の特定のフォーマット、および送信される情報の特性は、本発明の重要事項ではない。しかし、図8には、制御ポートをサイドチャンネル通信に使用できる例示的環境810を示す。00114図8はワイヤレス計算デバイス820を示し、この計算デバイスは、Wi-FiDirectプロトコルなどのようなピアツーピアプロトコルに従ってワイヤレス通信のために計算デバイス310図3と同様に構成設定できる。この環境において、計算デバイス820は、テレビジョン830などのようなディスプレイデバイスを含むグループのグループオーナーの役割のために、構成設定される。このシナリオでは、テレビジョン830は、ワイヤレス接続832を介してテレビジョン830へ向けて送信されたオーディオ/ビデオコンテンツを受信して表示するように構成設定される。ワイヤレス接続832に関して、計算デバイス820はグループオーナーとして構成設定され、テレビジョン830はワイヤレスクライアントとして構成設定される。00115計算デバイス820は、計算デバイス820と関連するユーザインターフェースを通じてユーザー822が計算デバイス830で表示するオーディオ/ビデオコンテンツを選択することを可能にするアプリケーションにより構成設定される。そのようなアプリケーションは、計算デバイス820を制御して制御ポートを確立し、その制御ポートを通じて、計算デバイス820およびテレビジョン830を含むグループオーナーが形成される。その制御ポートを通じて、計算デバイス820およびテレビジョン830は、それぞれの役割についてネゴシエーションを行い、例えば、計算デバイス820がグループオーナーとして構成設定され、テレビジョン830がクライアントとして構成設定される。計算デバイス820をグループオーナーとして構成設定する際に、その役割のために更に通信ポートが確立される。00116しかし、グループのネゴシエーションに使用された制御ポートは、アクティブのステータスを維持する。このシナリオでは、そのポートは、時々、テレビジョン830の表示機能を制御するコマンドを送信するために使用される。例えば、オーディオ/ビデオコンテンツはワイヤレス接続832を介してストリームで送られるが、ユーザー822は、その情報の提示を制御する追加の情報をテレビジョン830へ送信することを望む場合がある。その情報は、例えば、テレビジョン830が情報の視覚部分を提示するときに伴う音の量を調節するコマンドを表すものである。別の例として、サイドチャンネル通信のために制御ポートを用いて送信される情報は、情報の視覚部分の提示における明るさや他の特性を調節するためのテレビジョン830へのコマンドを表す。このように、コマンドの通信をサポートするための更なるポートを確立する必要無しに、計算デバイス820はテレビジョン830へコマンドを通信する。00117図8に示した例では、制御ポートをサイドチャンネル通信に再使用することにより、計算デバイス820は、更なるワイヤレス接続を確立することを可能とされる。例えば、MACアドレスは、インフラストラクチャモードでのワイヤレス通信のためのポートを確立するために計算デバイス820内で使用可能である。特定の例として、環境810はアクセスポイント840を含み、このアクセスポイントを通じて、計算デバイス820はネットワーク842へアクセスすることができる。図3に示すアーキテクチャでは、計算デバイス820内で更なるポートが使用可能である場合、そのポートは、計算デバイス820とアクセスポイント840との間のワイヤレス通信を確立するために使用でき、それにより、計算デバイス820は、インフラストラクチャモードおよびピアツーピアモードで通信できるようにされる。計算デバイス820のサポートできるポートの数に制限があるシナリオでは、オーディオ/ビデオ制御情報をテレビジョン830へ運ぶために更なるポートが必要とされた場合において、アクセスポイント840へのワイヤレス接続のために1つのポートを使用できない場合がある。従って、制御ポートを、オーディオ/ビデオ制御情報をサイドチャンネル情報として運ぶためにも使用することにより、計算デバイス820のワイヤレス通信の能力が拡張される。00118任意の適切な計算デバイスを、ここで説明した技術を用いてワイヤレス通信のために構成設定することができる。図9は、本発明を実施できる例示的な適切な計算システム環境900を示す。計算システム環境900は、適切な計算環境の単なる一例であり、ユーザーや本発明の機能の範囲の制限を提案することを意図したものではない。計算環境900は、例示の計算環境900に示した何れかのコンポーネントやコンポーネントの組み合わせと関連する依存性や必要性を有するものと解釈されるべきではない。00119本発明は、他の様々な汎用または特定用途向けの計算システムの環境や構成設定で動作可能である。本発明を用いるのに適した良く知られている計算システム、環境、および/または構成設定の例には、パーソナルコンピュータ、サーバーコンピュータ、手持型またはラップトップ型のデバイス、マルチプロセッサーシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルの大衆消費電子製品、ネットワークPC、ミニコンピューター、メインフレームコンピュータ、上記のシステムやデバイスの何れかを含む分散型計算環境などが含まれるが、これらに限定はされない。00120計算環境は、プログラムモジュールなどのようなコンピューター実行可能命令を実行する。一般に、プログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データー構造などを含み、それらは、特定のタスクを行うか、または特定の抽象データー型を実現する。本発明はまた、通信ネットワークを通じてリンクされたリモート処理デバイスによりタスクが行われる分散型計算環境でも実施することができる。分散型計算環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルおよびリモートのコンピュータストレージ媒体に配される。00121図9を参照すると、本発明を実施するための例示的なシステムは、コンピューター910の形態の汎用計算デバイスを含む。コンピューター910のコンポーネントは、処理ユニット920、システムメモリー930、およびシステムメモリーを含む様々なシステムコンポーネントを処理ユニット910へ結合するシステムバス921含むが、これらに限定はされない。システムバス921は、幾つかのタイプのバス構造のうちの任意のものであり、バス構造は、メモリバスおよびメモリコントローラ、周辺バス、および様々なバスアーキテクチャのうちの何れかを用いるローカルバスを含む。そのようなアーキテクチャの例としては、IndustrialStandardArchitectureISAバス、MicroChannelArchitectureMCAバス、EnhancedISAEISAバス、VideoElectronicsStandardAssociationVESAローカルバス、Mezzanineバスとしても知られるPeripheralComponentInterconnectPCIバスなどがあるが、これらに限定はされない。00122コンピューター910は、典型的には、様々なコンピューター読取可能媒体を含む。コンピューター読取可能媒体は、コンピューター910によりアクセスできる任意の使用可能な媒体とすることができ、揮発性および不揮発性の媒体や、リムーバブルおよび非リムーバブルな媒体を含む。例えば、コンピューター読取可能媒体は、コンピュータストレージ媒体および通信媒体を含むが、これらに限定はされない。コンピュータストレージ媒体は、コンピューター読取可能命令、データー構造、プログラムモジュール、および他のデーターなどのような情報を記録するための任意の方法や技術により実現される揮発性および不揮発性、リムーバブルおよび非リムーバブルの媒体を含む。コンピュータストレージ媒体は、RAM、ROM、EEPROM、フラッシュメモリや他のメモリ技術、CD-ROM、デジタルバーサタイルディスクDVDや他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージや他の磁気ストレージデバイス、望まれる情報を記憶するために使用でき且つコンピューター910によりアクセスできる任意の他の媒体などを含むが、これらに限定はされない。通信媒体は、典型的には、搬送波のような変調されたデーター信号や他のトランスポート機構などの中にあるコンピューター読取可能命令やデーター構造やプログラムモジュールや他のデーターを実現するものであり、通信媒体には、任意の情報搬送媒体が含まれる。変調されたデーター信号という用語は、情報を信号内にエンコードするような様式で設定または変更されて1以上の特性を有する信号、を意味する。例えば、通信媒体は、有線ネットワークや直接有線接続などのような有線媒体と、音響、RF、赤外線、および他のワイヤレスの媒体などのようなワイヤレス媒体とを含むが、これらに限定はされない。上記の媒体のうちの任意のものの組み合わせも、コンピューター読取可能媒体の範囲に含まれる。00123システムメモリー930は、リードオンリメモリROM931やランダムアクセスメモリROM932などのような揮発性および/または不揮発性のメモリの形態のコンピュータストレージ媒体を含む。スタートアップのときなどにコンピューター910内のエレメント間での情報の転送を支援する基礎的ルーチンを含むベーシックインプット/アウトプットシステム933BIOSは、典型的には、ROM931に記憶される。RAM932は、典型的には、処理ユニット920により即座にアクセス可能な、および/または現在処理されているデーターおよび/またはプログラムモジュールを含む。例として、図9は、オペレーティングシステム934、アプリケーションプログラム935、他のプログラムモジュール936、およびプログラムデーター937を示しているが、これらに限定はされない。00124コンピューター910はまた、他のリムーバブルおよび/または非リムーバブルの揮発性および/または不揮発性の記録媒体を含むことができる。単なる例であるが、図9は、非リムーバブルで不揮発性の磁気媒体に対しての読み出しおよび書き込みを行うハードディスク940、リムーバブルで不揮発性の磁気ディスク952に対しての読み出しおよび書き込みを行う磁気ディスクドライブ951、およびCDROMや他の光学媒体などのようなリムーバブルで不揮発性の光ディスク956に対しての読み出しおよび書き込みを行う光ディスクドライブ955を示している。例示した動作環境で使用できる他のリムーバブル/非リムーバブルで揮発性/不揮発性のコンピュータストレージ媒体としては、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどがあるが、これらに限定はされない。ハードディスクドライブ941は、典型的には、インターフェース940などのような非リムーバブルメモリインターフェースを通じてシステムバス921と接続され、磁気ディスクドライブ951および光ディスクドライブ955は、典型的には、インターフェース950などのようなリムーバブルメモリインターフェースによりシステムバス921と接続される。00125上記で説明したドライブおよびそれらと関連するコンピュータストレージ媒体や図9に示されたものは、コンピューター910に関するコンピューター読取可能命令、データー構造、プログラムモジュール、および他のデーターのストレージを提供する。例えば、図9では、ハードディスクドライブ941は、オペレーティングシステム944、アプリケーションプログラム945、他のプログラムモジュール946、およびプログラムデーター947を記憶するものとして示している。なお、これらのコンポーネントは、オペレーティングシステム934、アプリケーションプログラム935、他のプログラムモジュール936、およびプログラムデーター937と同じものである場合も異なるものである場合もある。ここでは、オペレーティングシステム944、アプリケーションプログラム945、他のプログラムモジュール946、およびプログラムデーター947に対して、このように別の参照番号が付されているが、これは、少なくとも、それらが別のコピーであることを示すためである。ユーザーは、キーボード962や、マウス、トラックボール、タッチパッドなどと呼ばれるポインティングデバイス961などのような入力デバイスを通じて、コマンドおよび情報をコンピューター910へ入力する。他の入力デバイス図に示さずとしては、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナなどがある。これらおよび他の入力デバイスは、システムバスへ結合されたユーザー入力インターフェース960を通じて処理ユニット920へ接続されることが多いが、パラレルポートやゲームポートやユニバーサルシリアルバスUSBなどのような他のインターフェースやバス構造により接続することもできる。モニター991や他のタイプの表示デバイスも、ビデオインターフェース990などのようなインターフェースを介してシステムバス921へ接続される。モニターに加えて、コンピューターはまた、スピーカー997やプリンター996などのような他の周辺出力デバイスを含むこともでき、それらの周辺出力デバイスは、出力周辺機器インターフェース995を通じて接続される。00126コンピューター910は、リモートコンピューター980などのような1以上のリモートコンピューターへの論理接続logicalconnectionを用いるネットワークの環境で、動作することができる。リモートコンピューター980は、パーソナルコンピュータ、サーバー、ルーター、ネットワークPC、ピアデバイス、または他のコモンネットワークノードcommonnetworknodeであり、典型的には、コンピューター910に関して説明したエレメントのうちの多くのものまたは全てを含むが、図9では、メモリストレージデバイス981のみを示している。図9に示す論理接続は、ローカルエリアネットワークLAN971およびワイドエリアネットワークWAN973を含むが、他のネットワークを含むこともできる。このようなネットワークの環境は、オフィス、エンタープライズ-ワイドコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的なものである。00127LANのネットワーク環境で使用する場合、コンピューター910は、ネットワークインターフェースまたはアダプタ970を通じてLAN971へ接続される。WANのネットワーク環境で使用する場合、コンピューター910は、典型的には、インターネットなどのようなWAN973を介しての通信を確立するために、モデム972または他の手段を含む。内蔵または外付けであるモデム972は、ユーザー入力インターフェース960または他の適切な機構を介して、システムバス921へ接続される。ネットワークの環境では、コンピューター910と関連して示されたプログラムモジュールまたはその一部は、リモートメモリストレージデバイスに記憶される。例として、図9では、リモートアプリケーションプログラム985がメモリデバイス981に駐在することを示しているが、これに限定はされない。ここに示されたネットワーク接続が例示であり、コンピューター間で通信リンクを確立するために他の手段を使用できることは、理解されるであろう。00128従って、本発明の少なくとも1つの実施形態の幾つかの特徴を説明したが、様々な代替例、変更例、および改善例を構成することが当業者には容易であることを、理解すべきである。00129一例として、1つの計算デバイスの観点から通信を説明した。計算デバイスが外部デバイスと通信し、外部デバイスのうちの幾つかが計算デバイスであり得、計算デバイスである外部デバイスがワイヤレス通信のために同様に動作し得ることを、理解すべきである。そのような外部デバイスは、上記のアーキテクチャと同様のアーキテクチャを使用し得る。00130別の例として、図3は、複数のインフラストラクチャモードセッションおよびピアツーピアモードセッションでの全ての通信の送信および受信のためにドライバーが1つの無線装置と対話する実施形態を示す。別の実施形態では、複数の無線装置を使用することができる。複数の無線装置を使用する場合でも、1つのドライバーを用いてこれらのドライバーを制御することができる。そのようなドライバーは、1つの無線装置に対してのドライバーと同様に、通信のルーティングおよび順序決めを行う。なお、1つのドライバーとすることが本発明の必要条件ではない。00131更に別の例として、図4~6は、計算デバイスがピアツーピアグループの形成を開始するプロセスを示す。他のシナリオも可能であり、ステップの特定のシーケンスや、行われる特定のステップを、異なるものとすることもできる。例えば、計算デバイスは、グループの形成を開始するのではなく、グループへ参加する要求を受信することや、デバイス発見要求やサービス発見要求に応答することもできる。しかし、上記のポート構造は、代替的または追加的に、それらの代替的通信シーケンスをサポートできる。00132このような代替例、変更例、および改善例は、ここでの開示の一部であることが意図され、かつ本発明の精神および範囲の中にあることが意図される。従って、上記の説明および図面は、単なる例である。00133本発明の上記の実施形態は、様々な方法で実施できる。例えば、実施形態は、ハードウェア、ソフトウェア、またはそれらの組み合わせにより実施できる。ソフトウェアで実施する場合、ソフトウェアコードは、1つのコンピューターで提供されるか複数のコンピューター間で分散されて提供されるかにかかわらず、任意の適切なプロセッサーまたはプロセッサーの集合体で実行される。そのようなプロセッサーは、集積回路として実施され、集積回路コンポーネントには1以上のプロセッサーが含まれ得る。なお、プロセッサーは、任意の適切な形式の回路を用いて実施することができる。00134更に、コンピューターは、ラック取り付け型コンピューター、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータなどのような多数の形態のうちの任意の形態で実現できることを、理解すべきである。更に、適切な処理能力を有するが通常はコンピューターと見なされないデバイスへ、コンピューターを埋め込むことも可能であり、そのようなデバイスの例としては、パーソナルデジタルアシスタントPDAや、スマートフォンや、他の適切なポータブルまたは固定の電子デバイスなどがある。00135また、コンピューターは、1以上の入力および出力デバイスを有する。それらのデバイスは、特に、ユーザインターフェースを提示するために使用できる。ユーザインターフェースを提供するために使用できる出力デバイスの例としては、出力を視覚的に提示するためのプリンターやディスプレイ、および出力を可聴的に提示するためのスピーカーや他の音生成デバイスがある。ユーザインターフェースとして使用できる入力デバイスの例としては、キーボードや、マウス、タッチパッド、デジタイジングタブレットなどのようなポインティングデバイスがある。別の例として、コンピューターは、音声認識を通じてや他の可聴形態で、入力情報を受信する。00136そのようなコンピューターは、例えば、エンタープライズネットワークやインターネットなどのような、ローカルエリアネットワークやワイドエリアネットワークを含む任意の適切な形態の1以上のネットワークにより、相互接続される。そのようなネットワークは、任意の適切な技術に基づくものであり、任意の適切なプロトコルに従って動作するものであり、ワイヤレスネットワーク、有線ネットワーク、光ファイバネットワークなどを含む。00137また、ここで概説した様々な方法およびプロセスは、様々なオペレーティングシステムやプラットフォームの何れかを用いる1以上のプロセッサーで実行可能なソフトウェアとして、コード化できる。更に、そのようなソフトウェアは、多数の適切なプログラミング言語および/またはプログラム用またはスクリプト用のツールのうちの任意のものを用いて、書くことができる。また、ソフトウェアは、実行可能な機械語コードや、フレームワークや仮想マシンで実行される中間コードとして、コンパイルすることができる。00138この点に関して、本発明は、1以上のプログラムによりエンコードされたコンピューター読取可能記録媒体または複数のコンピュータ読取可能媒体として実現することができ、そのプログラムは、1以上のコンピューターまたは他のプロセッサーにより実行されたときに、上記の本発明の様々な実施形態を実施する方法を行わせるものである。コンピューター読取可能記録媒体の例としては、コンピュータメモリ、1以上のフロッピー登録商標ディスク、コンパクトディスクCD、光ディスク、デジタルビデオディスクDVD、磁気テープ、フラッシュメモリ、フィールドプログラマブルゲートアレイや他の半導体デバイスにおける回路構成、他の非一時的で実体的なコンピューター記録媒体などがある。コンピューター読取可能記録媒体1または複数は移動可能であり、コンピューター読取可能記録媒体に記憶されたプログラム1または複数は、上記の本発明の様々な機能を実施するために、1以上の別のコンピューターや他のプロセッサーへロードすることができる。ここで使用する非一時的なコンピューター読取可能記録媒体という用語は、製造品即ち、製造の物品または機械として考慮されるコンピューター読取可能媒体のみを含む。代替的または追加的に、本発明は、伝搬信号などのようなコンピューター読取可能記録媒体以外のコンピューター読取可能媒体として実現することができる。00139ここでは、プログラムやソフトウェアという用語は、一般に、上記の本発明の様々な機能を実施するためにコンピューターや他のプロセッサーをプログラムするために使用できる任意のタイプのコンピュータコードやコンピューター実行可能命令の組を示すものとして、使用している。更に、本発明の1つの特徴によると、実行されたときに本発明の方法を行わせる1以上のコンピュータプログラムは、必ずしも1つのコンピューターまたはプロセッサーに存在しなくてもよく、本発明の様々な機能を実施するために、モジュールの様式で複数の別のコンピューターまたはプロセッサーへ分散させることもできる、ということを理解すべきである。00140コンピューター実行可能命令は様々な形態とすることができ、例えば、1以上のコンピューターまたは他のデバイスにより実行されるプログラムモジュールの形態とすることができる。一般に、プログラムモジュールは、特定のタスクを行うためや特定の抽象データー型を実施するためのルーチン、プログラム、オブジェクト、コンポーネント、データー構造などを含む。典型的に、プログラムモジュールの機能は、様々な実施形態において望まれるように、組み合わせることや分散させることができる。00141また、データー構造は、任意の適切な形態でコンピューター読取可能媒体へ記憶することができる。例示を容易にするために、データー構造は、そのデーター構造における位置を通じて関連させられるフィールドを有するものとして、示すことができる。そのような関連は、フィールドのストレージに、コンピューター読取可能媒体における位置を割り当て、フィールド間の関係を運ぶようにすることにより、達成される。しかし、任意の適切な機構を使用して、データー構造のフィールド内の情報の関係を確立することもでき、関係を確立することに関しては、データエレメント間の関係を確立するポインタ、タグ、他の機構などを使用することも含む。00142本発明の様々な機能は、単独でも、組み合わせでも、上記の実施形態で特定的に説明していない様々な構成でも、使用することができ、従って、本発明の応用は、上記で説明し図面に示したコンポーネントの詳細や構成に制限されるものではない。例えば、1つの実施形態で説明された特徴は、他の実施形態で説明された特徴と、任意の様式で組み合わせることができる。00143また、本発明は方法として実現でき、その例は提供している。その方法の一部として行われる動作は、任意の適切な順に行うことができる。従って、実施形態は、例示した順と異なる順で動作を行うように構成することもできる。また、例示した実施形態は動作が順に行われるものとして示しているが、異なる順で動作を行うということには、幾つかの動作を同時に行うことも含まれる。00144第1、第2、第3などのような順を表す用語を特許請求の範囲における構成要素を修飾する際に使用している場合、その使用は、或る構成要素の他の構成要素に対しての優先順位、優先度、順位や、方法の動作が行われる時間的順序を意味するものではなく、単に、構成要素を区別するため、即ち、或る名前の或る構成要素を、それと同じ名前の別の構成要素と区別するためのラベルとして使用しているただし、順を表す用語として使用する場合は除く。00145また、ここで用いられた文体や用語は説明を目的としたものであり、限定と見なすべきではない。含む、備える、有する、内包する、伴うおよびこれらの用語が変化した形の用語は、それらの前に記載した項目やその項目の等価物や追加の項目を含むことを意味する。