Windows.Devices.WiFiDirect.Services 名前空間

独自の Wi-Fi Direct Services を実装するためのサポートを提供します。

Wi-Fi Direct は、2 つのデバイスがアクセス ポイントを介して既存のネットワークに参加することなく、Wi-Fi を使用して相互に直接接続できるようにするテクノロジです。 Wi-Fiダイレクト サービスは、1 つのデバイス ( サービス広告主) が、Wi-Fi直接接続を介して別のデバイス ( Service Seeker) に機能を提供する方法です。 シークャーは 、セッションを確立することによって、アドバタイズされたサービスを利用します。 特定のデバイスは、複数のサービスをアドバタイズし、複数のサービスをシークすることもできます。 Seeker ロールと広告主ロールは、特定のセッションでのデバイスの対話方法に関して定義されます。

Wi-Fi Direct Services 仕様ではいくつかの標準サービスが定義されていますが、この API では Enable サービスのみがサポートされています。 送信再生印刷、または表示の機能はサポートされていません。

クラス

WiFiDirectService

Wi-Fi Direct サービスを表します。 このクラスは、Wi-Fi Direct Service を使用してサービス プロバイダーとのWi-Fiダイレクト サービス セッションを確立しようとするデバイス上のコードによって使用されます。

WiFiDirectServiceAdvertiser

サービス広告主を表します。 このクラスは、ダイレクト サービスをアドバタイズするデバイス上のコードWi-Fi使用して、サービスをアドバタイズします。

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected イベントが発生したときに返されます。

WiFiDirectServiceProvisioningInfo

Wi-Fi ダイレクト サービスに関するプロビジョニング情報が含まれています。

WiFiDirectServiceRemotePortAddedEventArgs

WiFiDirectServiceSession.RemotePortAdded イベントが発生したときに返されます。 イベント ハンドラーでは、この情報を使用して、新しいポートへの新しいソケット接続を確立する必要があります。

WiFiDirectServiceSession

Wi-Fi Direct Services (WFDS) セッションを表します。

WiFiDirectServiceSessionDeferredEventArgs

WiFiDirectService.SessionDeferred イベントが発生したときに返されます。

WiFiDirectServiceSessionRequest

Wi-Fi Direct Service セッション要求について説明します。

WiFiDirectServiceSessionRequestedEventArgs

WiFiDirectServiceAdvertiser.SessionRequested イベントが発生したときに返されます。

列挙型

WiFiDirectServiceAdvertisementStatus

WiFiDirectServiceAdvertiser.AdvertisementStatus に使用される値。

WiFiDirectServiceConfigurationMethod

セッションの確立時のサービス構成の実行方法を示す値。 通常、入力が不要であるか、セッション内の 1 つのデバイスに PIN が表示され、もう 1 つのデバイスで PIN を入力する必要があります。

WiFiDirectServiceError

WiFiDirectServiceAdvertiser.ServiceError プロパティに使用される値。

WiFiDirectServiceIPProtocol

WiFiDirectServiceSession.RemotePortAdded イベントが発生したときに新しいポートの IP プロトコルを指定する定数を定義します。

WiFiDirectServiceSessionErrorStatus

WiFiDirectServiceSession.ErrorStatus プロパティで使用される値。

WiFiDirectServiceSessionStatus

Wi-Fiダイレクト サービス セッションの状態を表すために使用される値。

WiFiDirectServiceStatus

サービスの状態を表すために使用される値。

注釈

グループ所有者の設定 (GO)

ピア ツー ピア (P2P) グループのどのメンバーがグループ所有者 (GO) であるかを正確に制御できる場合があります。 コードでは 、WiFiDirectAdvertiser.PreferGroupOwnerMode プロパティを使用して、特定の広告主が GO を使用することを指定する必要があります。 ただし、以前に 2 つのデバイスが Wi-Fi Direct 経由でペアリングされている場合は、そのペアリングから保存されたプロファイルのWi-Fiダイレクト ロールが広告主の指定した設定よりも優先されます。 P2P ペアリング内の特定のデバイスが GO であることを保証するには、 まず、Windows.Devices.Enumeration 名前空間によって提供されるメソッドを使用して、既存のペアリング データを削除する必要があります。

ペアリング プロファイルでは 2 つの MAC アドレスがペアになっているので、2 つのデバイスのペアリング解除は、これら 2 つのデバイス間で Wi-Fi Direct を使用するすべてのアプリに適用されることに注意してください。 アプリでは、ペアリング プロファイルが存在する、または過去にデバイスとペアリングされている場合でも、別のアプリによって変更されていないことを想定しないでください。 プロファイル情報を格納するのではなく、現在のプロファイル情報を取得し、後でまだ当てはまると仮定する必要があります。 別のアプリが、その間にペアリング プロファイルを変更した可能性があります。

次のコードでは、ローカル デバイスと別のデバイスの間の Wi-Fi Direct ペアリング プロファイルを検索し、2 つのデバイスのペアリングを解除します。 このコードで 2 つのデバイスのペアリングが正常に解除されると、その後のペアリングは、ペアリング時に アクティブな WiFiDirectAdvertiser.PreferGroupOwnerMode 値に従います。

using Windows.Devices.Enumeration;

private async void Unpair_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
    if (DiscoveredServices.Items.Count > 0)
    {
        DiscoveredDeviceWrapper service = 
            (DiscoveredDeviceWrapper)DiscoveredServices.Items[DiscoveredServices.SelectedIndex];

        String[] aepId = service.DeviceInfo.Id.Split('#');
        String deviceSelector = "System.Devices.DeviceInstanceId:=\"SWD\\WiFiDirect\\" + aepId[1] + "\"";

        // Check if device is paired
        DeviceInformationCollection pairedDeviceCollection = 
            await DeviceInformation.FindAllAsync(deviceSelector, null, DeviceInformationKind.DeviceInterface);

        if (pairedDeviceCollection.Count > 0)
        {
            try
            {
                DeviceInformation devInfo = pairedDeviceCollection[0];
                await devInfo.Pairing.UnpairAsync();
                MainPage.Current.NotifyUser("UnpairAsync succeeded", NotifyType.StatusMessage);
            }

            catch (Exception ex)
            {
                MainPage.Current.NotifyUser("UnpairAsync failed: " + ex.Message, NotifyType.ErrorMessage);
            }
        }
    }
}

こちらもご覧ください