Windows.Devices.WiFiDirect.Services Namespace
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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);
}
}
}
}