Freigeben über


Windows.Devices.WiFiDirect.Services Namespace

Bietet Unterstützung für die Implementierung ihrer eigenen Wi-Fi Direct Services.

Wi-Fi Direct ist eine Technologie, die es zwei Geräten ermöglicht, sich über WLAN direkt miteinander zu verbinden, ohne ein vorhandenes Netzwerk über einen Zugriffspunkt verknüpfen zu müssen. Wi-Fi Direct Services sind die Art und Weise, wie ein Gerät (ein Service Advertiser) funktionen für ein anderes Gerät (einen Service Seeker) über eine Wi-Fi Direct-Verbindung bietet. Ein Sucher nutzt einen angekündigten Dienst, indem er eine Sitzung erstellt. Ein bestimmtes Gerät kann mehrere Dienste ankündigen und auch mehrere Dienste suchen. Die Rollen Seeker und Advertiser sind in Bezug auf die Interaktion der Geräte in einer bestimmten Sitzung definiert.

Während die Wi-Fi Direct Services-Spezifikation mehrere Standarddienste definiert, unterstützt diese API nur den Dienst aktivieren . Die Funktionen "Senden", "Wiedergabe", "Drucken" oder "Anzeigen" werden nicht unterstützt.

Klassen

WiFiDirectService

Stellt einen Wi-Fi Direct-Dienst dar. Diese Klasse wird von Code auf einem Gerät verwendet, das eine Wi-Fi Direct Service verwenden möchte, um eine Wi-Fi Direct Service-Sitzung mit dem Dienstanbieter einzurichten.

WiFiDirectServiceAdvertiser

Stellt einen Dienstinserenten dar. Diese Klasse wird von Code auf einem Gerät verwendet, das Wi-Fi Direct Services ankündigen, um den Dienst anzukündigen.

WiFiDirectServiceAutoAcceptSessionConnectedEventArgs

Wird zurückgegeben, wenn ein WiFiDirectServiceAdvertiser.AutoAcceptSessionConnected-Ereignis ausgelöst wird.

WiFiDirectServiceProvisioningInfo

Enthält Bereitstellungsinformationen zu einem Wi-Fi Direct Service.

WiFiDirectServiceRemotePortAddedEventArgs

Wird zurückgegeben, wenn ein WiFiDirectServiceSession.RemotePortAdded-Ereignis ausgelöst wird. Ihr Ereignishandler sollte diese Informationen verwenden, um neue Socketverbindungen mit dem neuen Port herzustellen.

WiFiDirectServiceSession

Stellt eine Wi-Fi Direct Services -Sitzung (WFDS) dar.

WiFiDirectServiceSessionDeferredEventArgs

Wird zurückgegeben, wenn ein WiFiDirectService.SessionDeferred-Ereignis ausgelöst wird.

WiFiDirectServiceSessionRequest

Beschreibt eine Wi-Fi Direct Service-Sitzungsanforderung.

WiFiDirectServiceSessionRequestedEventArgs

Wird zurückgegeben, wenn ein WiFiDirectServiceAdvertiser.SessionRequested-Ereignis ausgelöst wird.

Enumerationen

WiFiDirectServiceAdvertisementStatus

Werte, die für WiFiDirectServiceAdvertiser.AdvertisementStatus verwendet werden.

WiFiDirectServiceConfigurationMethod

Werte, die beschreiben, wie die Dienstkonfiguration ausgeführt wird, wenn eine Sitzung eingerichtet wird. In der Regel ist entweder keine Eingabe erforderlich, oder ein Gerät in der Sitzung zeigt eine PIN an, und für das andere Gerät muss die PIN eingegeben werden.

WiFiDirectServiceError

Werte, die für die WiFiDirectServiceAdvertiser.ServiceError-Eigenschaft verwendet werden.

WiFiDirectServiceIPProtocol

Definiert Konstanten, die das IP-Protokoll des neuen Ports angeben, wenn ein WiFiDirectServiceSession.RemotePortAdded-Ereignis ausgelöst wird.

WiFiDirectServiceSessionErrorStatus

Werte, die in der WiFiDirectServiceSession.ErrorStatus-Eigenschaft verwendet werden.

WiFiDirectServiceSessionStatus

Werte, die verwendet werden, um die status einer Wi-Fi Direct Service Session zu beschreiben.

WiFiDirectServiceStatus

Werte, die verwendet werden, um den Dienst status zu beschreiben.

Hinweise

Festlegen des Gruppenbesitzers (GO)

Möglicherweise möchten Sie in der Lage sein, genau zu steuern, welches der Mitglieder einer Peer-to-Peer-Gruppe (P2P) der Gruppenbesitzer (GO) ist. Ihr Code sollte die WiFiDirectAdvertiser.PreferGroupOwnerMode-Eigenschaft verwenden, um anzugeben, dass ein bestimmter Werbetreibender go sein möchte. Wenn jedoch zwei Geräte zuvor über Wi-Fi Direct gekoppelt wurden, überschreiben die Wi-Fi direkten Rollen im gespeicherten Profil aus dieser Kopplung die angegebene Einstellung des Inserenten. Um sicherzustellen, dass ein bestimmtes Gerät in einer P2P-Kopplung go ist, müssen Sie zunächst alle vorhandenen Kopplungsdaten mithilfe von Methoden löschen, die vom Windows.Devices.Enumeration-Namespace bereitgestellt werden.

Beachten Sie, dass ein Kopplungsprofil zwei MAC-Adressen koppelt, sodass das Entkoppeln von zwei Geräten für alle Apps gilt, die Wi-Fi Direct zwischen diesen beiden Geräten verwenden. Ihre App sollte niemals davon ausgehen, dass ein Kopplungsprofil vorhanden ist oder dass es nicht von einer anderen App geändert wurde, auch wenn sie in der Vergangenheit mit einem Gerät gekoppelt wurde. Sie sollten aktuelle Profilinformationen aus dem aktuellen Profil abrufen, anstatt Profilinformationen zu speichern und davon auszugehen, dass sie zu einem späteren Zeitpunkt noch richtig sind. Möglicherweise hat eine andere App das Kopplungsprofil in der Zwischenzeit geändert.

Der folgende Code sucht ein Wi-Fi Direktes Kopplungsprofil zwischen dem lokalen Gerät und einem anderen Gerät und entkoppelt die beiden Geräte. Nachdem dieser Code die beiden Geräte erfolgreich entkoppelt hat, folgt die nachfolgende Kopplung dem Wert wiFiDirectAdvertiser.PreferGroupOwnerMode , der zum Zeitpunkt der Kopplung aktiv ist.

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);
            }
        }
    }
}

Weitere Informationen