ワイヤレス ホステッド ネットワークは、Windows 7 および Windows 8 でサポートされる新しい WLAN 機能です。 また、ワイヤレス LAN サービスがインストールされている Windows Server 2012 および Windows Server 2008 R2 でもサポートされます。 この機能は、次の 2 つの主要な機能を実装します。
- 複数の仮想ワイヤレス アダプターへの物理ワイヤレス アダプターの仮想化は、仮想 Wi-Fi とも呼ばれます。
- ソフトウェア ベースのワイヤレス アクセス ポイント (AP) は、指定された仮想ワイヤレス アダプターを使用する SoftAP と呼ばれることもあります。
インターネット接続共有 (ICS) は、SharedAccess サービスを通じて提供される Windows の機能です。 厳密に言えば、SharedAccess は、共有ネットワーク アクセスが必ずしもインターネットへのアクセスを提供しないコンピューターを介したネットワーク共有を可能にします。 このセクションでは ICS と SharedAccess という用語を同じ意味で使用します。これは、インターネット接続共有はワイヤレスホスト型ネットワークの主要なシナリオであり、ICS という用語はユーザー コミュニティによりよく知られているので、同じ意味で使用します。
ワイヤレス ホステッド ネットワークは ICS に密接に関連付けられており、ワイヤレスパーソナルエリアネットワーク(PAN)とインターネット共有シナリオの両方を可能にします。 このセクションでは、パブリック ワイヤレス ホステッド ネットワークと ICS API を使用してワイヤレス Hosted Network と ICS を統合する方法に関する一般的な推奨事項をアプリケーション開発者に提供します。
インターネット接続の共有
ICS サービスは、次の 2 つのモードのいずれかで動作します。
スタンドアロン モード
ICS サービスが呼び出されたときに動作するのは、DHCPv4 サーバー関数だけです。 これは ICS の特別な操作モードであり、ワイヤレスホステッド ネットワーク経由でのみ使用できます。 ユーザーまたはアプリケーションは、パブリック ICS API または netsh コマンドを使用してスタンドアロン ICS を直接起動および停止することはできません。 ワイヤレス ホステッド ネットワークの起動には、通常、スタンドアロン モードで ICS を起動して、DHCPv4 サーバー機能を使用して、接続されているデバイスにプライベート IPv4 アドレスを提供する必要があります。 接続されたデバイスのネットワーク通信は、接続されているデバイスと、ワイヤレスホスト型ネットワークをホストしているローカル コンピューターとの間、および接続されたデバイス自体の間でネットワーク パケットを送受信することに限定されます。 これにより、ワイヤレスホスト型ネットワークのワイヤレスパーソナルエリアネットワークシナリオが効果的に有効になります。
フル モード
ICS のすべての機能は、IPv4 と IPv6 の両方のネットワーク アドレス変換や DHCP サーバー機能など、サービスが呼び出されたときに動作します。 これは ICS の通常の動作モードです。 ユーザーまたはアプリケーションは、パブリック API または netshell コマンドを使用して完全な ICS モードを開始および停止できます。 たとえば、管理者特権でのコマンド プロンプトから、net stop sharedaccess を使用してこのサービスを停止できます。 ワイヤレス ホステッド ネットワークと完全な ICS の組み合わせにより、接続されたデバイスのネットワーク通信はワイヤレス PAN に限定されません。 接続されているすべてのデバイスは、ワイヤレスホスト型ネットワークを実行しているコンピューターから共有ネットワーク接続を介してネットワーク (インターネットなど) にアクセスできます。 これにより、ワイヤレスホステッド ネットワークのネットワーク共有シナリオが効果的に有効になります。
このセクションでは、完全な ICS という用語を使用して、すべての ICS 機能が ICS サービスで呼び出され、ワイヤレスホステッド ネットワークを使用してすべての ICS 機能へのアクセスを提供する場合を意味します。
2つのICS動作モードは相互に排他的であり、完全なICSが優先されます。 ICS サービスはスタンドアロン モードからフル モードに移行できますが、フル モードからスタンドアロン モードに移行することはできません。 ICS スタンドアロン モードは、Windows 7 および Windows Server 2008 R2 で導入され、ワイヤレス LAN サービスがワイヤレスホストネットワーク機能と組み合わせてインストールされました。 以前のバージョンの Windows では使用できません。
完全な ICS 操作には、システム内の 2 つの異なるネットワーク アダプターが含まれます。
- パブリック インターフェイス。 これは、インターネットにアクセスできるネットワーク インターフェイスです。 ICS を実行しているローカル コンピューターが、SoftAP 経由で接続しているクライアントおよびデバイスとインターネットを共有するために使用するのは、このインターフェイスです。
- プライベート インターフェイス。 これは、ICS を実行しているローカル コンピューターへの接続に他のデバイスが使用するネットワーク インターフェイスです。 DHCPv4 サーバーは、他のリモート コンピューターにプライベート ローカル IP アドレスを提供するために、このプライベート インターフェイスで実行されています。
パブリック インターフェイスがインターネットにアクセスできない場合、プライベート インターフェイス上の DHCP サーバーは、接続されているデバイスにローカル IP アドレスを引き続き提供します。 スタンドアロン ICS には、SoftAP が実行されているプライベート インターフェイスのみが含まれます。パブリック インターフェイスは含まれません。
ローカル コンピューターで実行されている完全な ICS のインスタンスは、いつでも 1 つまでです。 完全な ICS が既にローカル コンピューターで実行されている場合、別の完全な ICS を起動すると、次の機能動作が実行されます。
- 新しいフル ICS のパブリック インターフェイスとプライベート インターフェイスが既存のフル ICS と同じである場合、2 つ目の完全 ICS の起動は no-opと同じです。
- 新しいパブリック インターフェイスが古いパブリック インターフェイスとは異なるが、新しいプライベート インターフェイスが古いプライベート インターフェイスと同じである場合、2 つ目の完全な ICS を起動しても、同じプライベート インターフェイス上の接続されているデバイスにほとんど影響を与えはありません。 インターネットにアクセスする機能は、新しいパブリック インターフェイスによって変更される可能性があります。
- 新しいプライベート インターフェイスが古いプライベート インターフェイスと異なる場合、ICS 関数は古いプライベート インターフェイスで動作を停止し、新しいプライベート インターフェイスへの適用を開始します。 古いプライベート インターフェイスを使用してローカル コンピューターに接続しているリモート デバイスは、ローカル コンピューターへの IP 接続を失います。
完全な ICS が既に実行されている場合、2 つ目の ICS 統合で別の新しいプライベート インターフェイスが使用されている限り、2 つ目の完全な ICS を呼び出すと、古いプライベート インターフェイスを使用してリモート接続されたデバイスが中断されます。
ICS サービスを管理して使用して、ICS とワイヤレス Hosted Network の統合をサポートするには、ソフトウェア アプリケーションが最初に INetSharingManager インターフェイスを取得する 必要があります。 INetSharingManager インターフェイスは、ICS API 内の他のすべての COM インターフェイスへの直接または間接的なアクセスを提供します。 INetSharingManager インターフェイスの get_SharingInstalled メソッドは、ローカル コンピューターが接続共有をサポートしているかどうかを報告します。 INetSharingManager インターフェイスの get_EnumEveryConnection メソッドは、connections フォルダー内のすべての接続の列挙インターフェイスを取得します。 get_INetSharingConfigurationForINetConnection メソッドは、指定した接続の INetSharingConfiguration インターフェイスを取得します。 INetSharingConfiguration インターフェイスのメソッドを使用して、ICS 設定のクエリと変更を行うことができます。
INetSharingManager インターフェイスで get_EnumEveryConnection メソッドを呼び出して接続フォルダー内のすべての接続を列挙する前に、ワイヤレス Hosted Network を起動する必要があります。
ICS の詳細、および ICS 設定の照会と変更に使用できるパブリック インターフェイスと方法については、「 インターネット接続の共有とインターネット接続ファイアウォールについて」のドキュメントを参照してください。
ホステッド ネットワークと ICS の統合
完全な ICS が実行されていない場合、ワイヤレス ホステッド ネットワークを開始すると、内部的にスタンドアロン モードで ICS サービスが開始され、DHCPv4 サーバー機能のみが使用され、ワイヤレス Hosted Network インターフェイス上の接続されたデバイスの IP アドレスが割り当てられます。 スタンドアロン DHCPv4 サーバーのサブネット アドレス範囲は 192.168.173.0/24 です。 これは、完全な ICS で使用される 192.168.137.0/24 のサブネット範囲とは異なります。
完全な ICS を使用してワイヤレス ホステッド ネットワークを開始するには、次のロジックを使用します。
- 完全な ICS がまだ実行されていない場合は、ワイヤレス ホステッド ネットワークを開始すると、スタンドアロン DHCPv4 サーバーを使用して ICS サービスも開始されます。
- 完全な ICS が既に実行されていて、プライベート インターフェイスがワイヤレス Hosted Network インターフェイスである場合は、ワイヤレスホステッド ネットワークを起動するだけです。
- 完全な ICS が既に実行されているが、プライベート インターフェイスがワイヤレス Hosted Network インターフェイスではない場合、ワイヤレス Hosted Network は、ワイヤレス Hosted Network インターフェイスの DHCPv4 サーバー機能なしで開始されます。
上記のロジックの影響は、次の事実を強調しています。
- ICS はフル モードからスタンドアロン モードに移行しません。
- スタンドアロン モードは、ICS がフル モードで実行されていない場合にのみ、ワイヤレス Hosted Network によって呼び出すことができます。
- ICS がスタンドアロン モードで実行されている場合、ユーザーまたはアプリケーションが完全モードで ICS を起動すると、ICS はフル モードに割り込まれます。
- 完全な ICS のプライベート インターフェイスが SoftAP 用のインターフェイスと同じでない場合、ICS のスタンドアロン モードからフル モードに移行すると、ワイヤレス PAN の接続されたデバイスが中断されます。
フル モードまたはスタンドアロン モードでローカル コンピューター上の ICS サービスを開始または停止するには時間がかかります。 アプリケーションでは、 NotifyServiceStatusChange 関数を使用して ICS サービスの状態を確認し、ICS 統合で使用するワイヤレス Hosted Network を開始または停止する前に、ICS サービスが開始/停止保留中の状態でないことを確認する必要があります。
ワイヤレス ホステッド ネットワークの開始と停止
Windows には、複数の同時アプリケーションが同時にワイヤレスホスト型ネットワークを管理できるプラットフォームが用意されています。 具体的には、各アプリケーションは、他のアプリケーションに関する事前の知識がなくても、独自にワイヤレスホスト型ネットワークを起動および停止できます。
ホスト型ネットワークを開始および停止する 2 つの関数セットがあります。
複数のアプリケーションで、ワイヤレスホステッド ネットワークの使用が必要になる場合があります。 WlanHostedNetworkStartUsing および WlanHostedNetworkStopUsing 関数は、他の同時実行アプリケーションと互換性のある方法で、ワイヤレスホスト型ネットワークを開始および停止します。 WlanHostedNetworkStartUsing 関数と WlanHostedNetworkStopUsing 関数を使用すると、アプリケーションはワイヤレスホステッド ネットワークへの参照を持つことができます。 このメカニズムは、少なくとも 1 つの他のアプリケーションがワイヤレス ホステッド ネットワークへの現在の参照を持っている場合に、ワイヤレス ホステッド ネットワークを実行し続けます。 すべてのユーザーがこれらの関数を呼び出すことができます。 WlanHostedNetworkStartUsing への正常な呼び出しは、WlanHostedNetworkStopUsing 関数の呼び出しと一致する必要があります。 呼び出し元のアプリケーションが呼び出しハンドルを閉じた場合 (WlanHostedNetworkStartUsing に渡されたのと同じ hClientHandle パラメーターを使用して WlanCloseHandle を呼び出すことによって) またはプロセスが終了した場合、WlanHostedNetworkStartUsing 関数によって発生する Hosted Network 状態の変更は自動的に元に戻されます。
WlanHostedNetworkForceStart 関数と WlanHostedNetworkForceStop 関数は、ワイヤレスホステッド ネットワークの開始と停止を強制します。 これらの関数は、ユーザーが適切な昇格された特権を持っている場合にのみ呼び出すことができます。 WlanHostedNetworkForceStart への正常な呼び出しは、アプリケーションの設計によっては、最終的に WlanHostedNetworkForceStop 関数の呼び出しによって照合される可能性があります。 これらの関数は、要求をアプリケーションの呼び出しハンドルに関連付けることなく、ワイヤレスホスト型ネットワークの状態を遷移します。 呼び出し元アプリケーションが呼び出しハンドルを閉じた場合 (WlanHostedNetworkStartUsing に渡されたのと同じ hClientHandle パラメーターを使用して WlanCloseHandle を呼び出すことにより) またはプロセスが終了した場合、WlanHostedNetworkForceStart 関数によって発生する Hosted Network 状態の変更は自動的に元に戻されません。 WlanHostedNetworkForceStart 関数を呼び出したアプリケーションが、ワイヤレス Hosted Network を停止する関数の 1 つを呼び出さずに閉じる場合、Hosted Network は実行したままです。 アプリケーションは、管理者特権のシステム ユーザーがワイヤレスホスト型ネットワークの実行に伴う電力要件の増加を長期間受け入れるようにした後、 WlanHostedNetworkForceStart 関数を呼び出す場合があります。
ワイヤレス ホステッド ネットワークを開始および停止するために呼び出す関数に関する一般的な推奨事項は次のとおりです。
- アプリケーション内で WlanHostedNetworkStartUsing 関数と WlanHostedNetworkStopUsing 関数を 使用して、ワイヤレスホスト型ネットワークを開始および停止します。
- WlanHostedNetworkForceStart 関数を使用して、アプリケーションで絶対に必要な場合を除き、ワイヤレス Hosted Network を起動しないでください。 WlanHostedNetworkForceStart 関数には、昇格された特権も必要です。
- WlanHostedNetworkForceStop 関数のみを復旧方法として使用します。 WlanHostedNetworkForceStop 関数を使用すると、ワイヤレスホステッド ネットワークが直ちに停止します。 ワイヤレス Hosted Network 通知をリッスンする他のアプリケーションでは、復旧アクションを実行する必要がある場合があります。 詳細については、ワイヤレス ホステッド ネットワークの復旧シーケンスに関する以下の説明を参照してください。
ワイヤレス ホステッド ネットワークの開始シーケンス
完全な ICS を使用してワイヤレス ホステッド ネットワークを起動するアプリケーションの場合は、ワイヤレスホステッド ネットワークを起動してから、完全な ICS を開始することをお勧めします。 ワイヤレス ホステッド ネットワークが既に実行されている場合、アプリケーションは WlanHostedNetworkForceStop 関数を使用して、完全な ICS が必要であるが、ホストされたネットワークが開始される前に有効になっていない場合にのみ、ワイヤレスホスト型ネットワークを停止する必要があります。 これにより、他のアプリケーションは完全な ICS の開始によって引き起こされる潜在的な中断から復旧できます。 詳細については、ワイヤレス ホステッド ネットワークの復旧シーケンスに関する以下の説明を参照してください。 結合された操作は全体として成功するか失敗するかのいずれかです。
注
IEnumNetSharingEveryConnection インターフェイスを使用して対応するアダプターを列挙する前に、ワイヤレスホスト型ネットワークを起動する必要があります。
次の順序付けされた手順は、完全な ICS を備えたワイヤレス ホステッド ネットワークを使用するアプリケーションで推奨される開始シーケンスです。
- WlanHostedNetworkInitSettings 関数を呼び出して、ワイヤレス Hosted Network が構成され、使用する準備ができていることを確認します。
- WlanHostedNetworkQueryStatus 関数と WlanHostedNetworkQueryProperty 関数を呼び出して、ワイヤレスホスト型ネットワークが許可され、使用可能かどうかを判断します。 ワイヤレス ホステッド ネットワークが許可されておらず、使用できない場合は、エラーを返します。
- 完全な ICS に使用される ICS サービスが許可されているかどうかをテストします。 ICS サービスを開始できない場合は、エラーを返します。
- WlanHostedNetworkForceStop 関数を呼び出して、ワイヤレスホステッド ネットワークを強制的に停止します。
- WlanHostedNetworkStartUsing 関数を呼び出して、ワイヤレスホスト型ネットワークを開始します。
- ワイヤレス Hosted Network の起動に失敗した場合は、エラーを返します。
- 完全な ICS が既に実行されていて、現在のパブリック インターフェイスまたはプライベート インターフェイスが使用する新しいインターフェイスと異なる場合は、現在のパブリック インターフェイスとプライベート インターフェイスをキャッシュします。 アプリケーションは、エラーを返すか、ICS 統合が既に実行されている場合にユーザーにプロンプトを表示することもできます。
- パブリック インターフェイスとプライベート インターフェイスの新しい設定で完全な ICS を起動します。
- 完全な ICS がこれらの設定で開始できない場合は、以前に完全な ICS が実行されていた場合は、キャッシュされたパブリック インターフェイスとプライベート インターフェイスで完全な ICS サービスを開始してみてください。 WlanHostedNetworkForceStop 関数を呼び出してワイヤレスホスト型ネットワークを停止し、エラーを返します。
- ワイヤレスホステッド ネットワークと完全なICSが成功したことを表します。
ワイヤレス ホステッド ネットワークの停止シーケンス
完全な ICS でワイヤレス ホステッド ネットワークを使用する場合、その作業を完了したアプリケーションは、完全な ICS に使用されるワイヤレスホスト型ネットワークと ICS サービスを停止できます。 この場合は、 WlanHostedNetworkStopUsing 関数を呼び出すのではなく、ホストされたネットワークを停止するために WlanHostedNetworkForceStop 関数を 呼び出することをお勧めします。 WlanHostedNetworkForceStop 関数は、ワイヤレスホステッド ネットワークを停止し、他のアプリケーションが回復できるようにも機能します。 詳細については、ワイヤレス ホステッド ネットワークの復旧シーケンスに関する以下の説明を参照してください。
次の順序付けされた手順は、ワイヤレスホステッド ネットワークと完全な ICS を使用するアプリケーションで推奨される停止シーケンスです。
- 完全な ICS を停止します。
- WlanHostedNetworkForceStop 関数を呼び出して、ワイヤレスホステッド ネットワークを停止します。
完全な ICS を使用していないワイヤレス ホステッド ネットワークを使用するアプリケーションは、 WlanHostedNetworkStopUsing または WlanHostedNetworkForceStop 関数を呼び出してワイヤレス Hosted Network を停止するだけで済みます。 ワイヤレス Hosted Network を開始するために WlanHostedNetworkStartUsing 関数が呼び出された場合、アプリケーションは WlanHostedNetworkStopUsing 関数を呼び出してワイヤレス ホステッド ネットワークを停止する必要があります。 ワイヤレス Hosted Network が既に起動されている場合、またはアプリケーションが WlanHostedNetworkForceStart 関数を呼び出してワイヤレス Hosted Network を強制的に起動する場合、アプリケーションは WlanHostedNetworkForceStop 関数を呼び出してワイヤレスホストネットワークを停止するか、シナリオに応じて何も (ワイヤレスホステッド ネットワークを開始したままにする) ことができます。
ワイヤレス ホステッド ネットワークの回復シーケンス
ワイヤレスホスト型ネットワークを使用するアプリケーションは、他のアプリケーションのアクションの影響を受ける可能性があります。 ICS サービスと ICS を管理するためのインターフェイスは、アプリケーションが ICS 変更通知に登録する方法を提供しません。 別のアプリケーションが INetSharingConfiguration インターフェイスで EnableSharing メソッドまたは DisableSharing メソッド を 呼び出して接続の共有を有効または無効にした場合、メッセージは他のアプリケーションではなくローカル コンピューターのユーザー インターフェイス (画面) に送信されます。 そのため、アプリケーションは、ICS またはワイヤレス Hosted Network の変更が発生したときに回復アクションを実行するために、ワイヤレス Hosted Network 通知に依存する必要があります。
ワイヤレス ホステッド ネットワークを使用するアプリケーションは、 WlanRegisterNotification を呼び出してワイヤレス Hosted Network 通知に登録する必要があります。 ワイヤレス ホステッド ネットワークのみの通知が必要な場合、アプリケーションは WlanRegisterNotification に渡される dwNotifSource パラメーターでWLAN_NOTIFICATION_SOURCE_HNWKを渡す必要があります。 他のワイヤレス通知も必要な場合は、 WLAN_NOTIFICATION_SOURCE_HNWK 必要な他の種類のワイヤレス通知の通知ソース定数と組み合わせて、 dwNotifSource パラメーターでこの値を渡す必要があります。
回復シーケンスは、完全な ICS があるアプリケーションとないアプリケーションで同じです。アプリケーションが ICS サービスを再び開始したくないと仮定します。 Hosted Network が停止したことを示すワイヤレス Hosted Network 通知を受信したら、次の操作を行います。
- アプリケーションが WlanHostedNetworkForceStart を呼び出してワイヤレス Hosted Network を起動する場合は、WlanHostedNetworkForceStart を呼び出して Hosted Network を再起動します。 それ以外の場合は、 WlanHostedNetworkStartUsing を 呼び出して、ワイヤレスホステッド ネットワークを再起動します。
接続されているデバイスの回復シーケンス
ワイヤレスホステッドネットワークに接続されているリモートデバイスまたはコンピュータは、ICSおよびワイヤレスホステッドネットワークに影響を与える他のアプリケーションの動作の影響を受ける可能性があります。 幸いなことに、ほとんどのデバイスには、信号またはローミングの一時的な損失に対処するために、デバイス アプリケーションに再試行ロジックが組み込まれています。
ワイヤレス ホストネットワークに接続されているデバイスまたはコンピューターが接続を失ってしまった場合の回復シーケンスは次の通りです。
- ワイヤレス デバイス ドライバーは、デバイス上のネットワーク スタックの上位レイヤーへのメディア切断を示します。
- デバイス アプリケーションは、ワイヤレスホステッド ネットワークの可用性の定期的なチェックを開始します。
- デバイス アプリケーションがワイヤレス Hosted Network を再び検出すると、デバイスはワイヤレス接続を開始します。
- ワイヤレス Hosted Network との接続が成功すると、デバイス アプリケーションはそれに応じて IP 設定を更新します。
関連トピック
-
WlanHostedNetworkForceStartの
-
WlanHostedNetworkInitSettingsの
-
WlanHostedNetworkQueryPropertyの
-
WlanHostedNetworkQueryStatusの
-
WlanHostedNetworkSetPropertyの