Share via


NetworkOperatorTetheringSessionAccessPointConfiguration Classe

Définition

Contient tous les champs de configuration par session utilisés pour configurer le point d’accès Wi-Fi connexion, ainsi que les méthodes d’assistance pertinentes.

NetworkOperatorTetheringSessionAccessPointConfiguration contient les mêmes champs et méthodes d’assistance que son équivalent persistant NetworkOperatorTetheringAccessPointConfiguration , avec plusieurs ajouts. Mais toutes les propriétés configurables de NetworkOperatorTetheringSessionAccessPointConfiguration sont traitées comme par session, y compris toutes les propriétés partagées.

NetworkOperatorTetheringSessionAccessPointConfiguration est principalement utilisé en association avec StartTetheringAsync pour spécifier la configuration de liaison par session. Cela n’efface pas ou ne modifie pas la configuration persistante existante. L’appel de StartTetheringAsync sans paramètre utilise toujours la configuration persistante préconfigurée via ConfigureAccessPointAsync.

public ref class NetworkOperatorTetheringSessionAccessPointConfiguration sealed
/// [Windows.Foundation.Metadata.Activatable(1114112, "Windows.Foundation.UniversalApiContract")]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 1114112)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class NetworkOperatorTetheringSessionAccessPointConfiguration final
[Windows.Foundation.Metadata.Activatable(1114112, "Windows.Foundation.UniversalApiContract")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 1114112)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class NetworkOperatorTetheringSessionAccessPointConfiguration
function NetworkOperatorTetheringSessionAccessPointConfiguration()
Public NotInheritable Class NetworkOperatorTetheringSessionAccessPointConfiguration
Héritage
Object Platform::Object IInspectable NetworkOperatorTetheringSessionAccessPointConfiguration
Attributs

Configuration requise pour Windows

Famille d’appareils
Windows 11 Insider Preview (introduit dans 10.0.26100.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v19.0)
Fonctionnalités de l’application
wiFiControl

Exemples

L’API de liaison dans l’espace de noms Windows.Networking.NetworkOperators fournit un ensemble complet de fonctionnalités qui vous permettent de configurer et de contrôler l’attachement par programmation (c’est-à-dire de partager la connexion Internet d’un appareil avec d’autres appareils). L’exemple de code ci-dessous illustre l’utilisation de configurations de connexion par session.

Avec les configurations de connexion par session, vous pouvez remplacer temporairement la configuration du point d’accès de connexion persistant sans la modifier définitivement. Cela est particulièrement utile lorsqu’un paramètre temporaire est nécessaire. Par exemple, lorsque vous connectez un HMD à un PC à l’aide d’un point d’accès mobile, mais lorsque vous souhaitez rendre les choses aussi transparentes que possible en connectant l’appareil via un réseau temporaire Wi-Fi, sans révéler les détails de configuration à l’utilisateur et sans modifier la configuration actuelle du point d’accès mobile de l’utilisateur.

En outre, pour obtenir une faible latence et une connexion à faible gigue au PC, vous pouvez utiliser une connexion de 6 GHz. Si le PC de l’utilisateur est connecté à Internet via une connexion Wi-Fi 5 GHz, le point d’accès mobile ne peut pas être démarré sur la bande 6 GHz. Il existe donc un paramètre par session, PerformancePriority, qui indique au pilote comment hiérarchiser les performances entre le point d’accès de connexion et la connexion à la station. La constante Par défaut indique au pilote de hiérarchiser la connexion de la station par rapport à tout le reste. En revanche, TetheringOverStation indique au pilote de hiérarchiser les performances du point d’accès, ce qui lui permet de passer à une connexion de station à 2,4 GHz si nécessaire. Tout cela pour offrir à l’utilisateur une expérience aussi fluide que possible, sans lui demander de modifier personnellement la configuration du point d’accès et la connexion à la station.

L’exemple de code ci-dessous présente :

  • Vérification de la prise en charge de l’API. Il est important que votre application teste si le système d’exploitation sur lequel elle s’exécute prend en charge les configurations de connexion par session. Pour ce faire, utilisez la méthode ApiInformation.IsApiContractPresent .
  • Obtention du gestionnaire de connexion. La méthode GetTetheringManagerForCurrentConnection de l’exemple de code identifie le profil de connexion Internet utilisé et récupère un gestionnaire de liaison qui correspond à ce profil. Le gestionnaire de connexion est ensuite utilisé pour récupérer la configuration du point d’accès principal et démarrer la session de connexion réelle.
  • Configuration de la session. Vous pouvez dériver une configuration de session de connexion à partir de la configuration principale existante ou en configurer une à partir de zéro. Vous pouvez ensuite définir ou modifier différents paramètres, tels que le SSID, la phrase secrète, la bande, le type d’authentification et la priorité des performances.
  • Démarrage de la session de connexion. La configuration de session peut être passée à la méthode StartTetheringAsync pour lancer la session de connexion. Cette méthode fournit également des commentaires détaillés via l’énumération TetheringOperationStatus , offrant une compréhension nuancée du résultat de l’opération.
using System;
using System.Threading.Tasks;
using Windows.Foundation.Metadata;
using Windows.Networking.NetworkOperators;
using Windows.Networking.Connectivity;

namespace TetheringApiDemoApp
{
  static class TetheringApiDemoClass
  {
    // Sample desired per-session access point configuration values.
    private const string DesiredSsid = "DemoSsid";

    private const string DesiredPassphrase = "DemoPassphrase";

    private const TetheringWiFiBand DesiredBand =
      TetheringWiFiBand.SixGigahertz;

    private const TetheringWiFiAuthenticationKind DesiredAuthenticationKind =
      TetheringWiFiAuthenticationKind.Wpa3;

    private const TetheringWiFiPerformancePriority DesiredPerformancePriority =
      TetheringWiFiPerformancePriority.TetheringOverStation;

    public static void VerifyPerSessionTetheringApiSupport()
    {
      if (!ApiInformation.IsApiContractPresent("Windows.Foundation.UniversalApiContract", 17))
      {
        throw new InvalidOperationException(
          "This OS doesn't support per-session tethering configurations.");
      }
    }

    public static NetworkOperatorTetheringManager GetTetheringManagerForCurrentConnection()
    {
      // Get the connection profile associated with the internet connection currently used by the local machine.
      ConnectionProfile currentConnectionProfile = NetworkInformation.GetInternetConnectionProfile();

      if (currentConnectionProfile == null)
      {
        throw new InvalidOperationException("Machine isn't connected to the internet.");
      }

      TetheringCapability tetheringCapability =
        NetworkOperatorTetheringManager.GetTetheringCapabilityFromConnectionProfile(currentConnectionProfile);

      if (tetheringCapability != TetheringCapability.Enabled)
      {
        throw new InvalidOperationException(
          $"Tethering is disabled on this machine. Reason code: {tetheringCapability}.");
      }

      return NetworkOperatorTetheringManager.CreateFromConnectionProfile(currentConnectionProfile);
    }

    public static async Task<NetworkOperatorTetheringSessionAccessPointConfiguration>
      SetUpSessionConfigurationAsync(NetworkOperatorTetheringManager tetheringManager)
    {
      NetworkOperatorTetheringSessionAccessPointConfiguration sessionConfiguration =
         new NetworkOperatorTetheringSessionAccessPointConfiguration();

      sessionConfiguration.Ssid = DesiredSsid;
      sessionConfiguration.Passphrase = DesiredPassphrase;

      if (await sessionConfiguration.IsBandSupportedAsync(DesiredBand))
      {
        sessionConfiguration.Band = DesiredBand;
      }
      else
      {
        throw new InvalidOperationException("Desired band isn't supported.");
      }

      if (await sessionConfiguration.IsAuthenticationKindSupportedAsync(DesiredAuthenticationKind))
      {
        sessionConfiguration.AuthenticationKind = DesiredAuthenticationKind;
      }
      else
      {
        throw new InvalidOperationException("Desired authentication kind isn't supported.");
      }

      sessionConfiguration.PerformancePriority = DesiredPerformancePriority;

      return sessionConfiguration;
    }

    public static async Task StartTetheringSessionAsync(
      NetworkOperatorTetheringManager tetheringManager,
      NetworkOperatorTetheringSessionAccessPointConfiguration sessionConfiguration)
    {
      TetheringOperationStatus operationResult =
        await tetheringManager.StartTetheringAsync(sessionConfiguration);

      if (operationResult.Status == TetheringOperationStatus.Success)
      {
        Console.WriteLine("Tethering started successfully.");
      }
      else if (operationResult.Status == TetheringOperationStatus.AlreadyOn)
      {
        // Custom error message for AlreadyOn status.
        Console.WriteLine("Tethering is already on.");
      }
      else if (operationResult.Status == TetheringOperationStatus.RadioRestriction)
      {
        // Custom error message for RadioRestriction status.
        Console.WriteLine(
          "Can't start tethering at 6 GHz due to radio restrictions (2x2 + dual radio).");
      }
      else if (operationResult.Status == TetheringOperationStatus.BandInterference)
      {
        // Custom error message for BandInterference status.
        Console.WriteLine(
          "Can't start tethering at 6 GHz because a 5 GHz connection interferes.");
      }
      else
      {
        // Generic error message for all other statuses.
        Console.WriteLine(
          $"Failed to start tethering: {operationResult.AdditionalErrorMessage}.");
      }
    }

    public static async Task Main()
    {
      try
      {
        VerifyPerSessionTetheringApiSupport();

        NetworkOperatorTetheringManager tetheringManager = GetTetheringManagerForCurrentConnection();

        NetworkOperatorTetheringSessionAccessPointConfiguration sessionConfiguration =
          await SetUpSessionConfigurationAsync(tetheringManager);

        await StartTetheringSessionAsync(tetheringManager, sessionConfiguration);
      }
      catch (InvalidOperationException ex)
      {
        Console.WriteLine($"Failed to initialize tethering configuration: {ex.Message}.");
      }
      catch (Exception ex)
      {
        Console.WriteLine($"Unexpected error: {ex.Message}.");
      }
    }
  }
}

Remarques

La connexion est une fonctionnalité qui permet à un appareil Windows de fonctionner en tant que point d’accès mobile : fournir des connexions Internet à d’autres appareils via Wi-Fi ou Bluetooth. Quatre champs persistants peuvent être configurés sur le point d’accès Wi-Fi connexion : le SSID réseau, le mot de passe réseau, la bande de fréquence sans fil réseau (par exemple, 2,4 GHz, 5 GHz, 6 GHz) et l’algorithme d’authentification réseau (par exemple, WPA2, WPA3). Une fois définis, tous ces champs sont conservés entre les sessions de connexion ; ce qui signifie que les valeurs sont stockées dans un stockage non volatile.

Mais vous pouvez également démarrer une session de connexion à l’aide d’une configuration entièrement par session. Une configuration de liaison par session ne persiste pas entre les sessions de connexion et ne modifie pas la configuration persistante actuelle. Un champ par session est prioritaire pour les performances.

Par conséquent, l’objectif de NetworkOperatorTetheringSessionAccessPointConfiguration est de spécifier la configuration de liaison par session lors du démarrage de la session de liaison via StartTetheringAsync. Les membres supplémentaires de cette classe par session uniquement sont généralement des valeurs qui ne sont actuellement pas configurables par les utilisateurs via les paramètres Windows.

Constructeurs

NetworkOperatorTetheringSessionAccessPointConfiguration()

Crée une instance de NetworkOperatorTetheringSessionAccessPointConfiguration.

Propriétés

AuthenticationKind

Obtient ou définit le type d’authentification à utiliser pour la connexion de liaison Wi-Fi. Similaire à NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind.

Band

Obtient ou définit la bande de fréquence à utiliser pour la connexion de liaison Wi-Fi. Similaire à NetworkOperatorTetheringAccessPointConfiguration.Band.

Passphrase

Obtient ou définit la phrase secrète réseau à utiliser pour la Wi-Fi connexion de liaison. Similaire à NetworkOperatorTetheringAccessPointConfiguration.Passphrase.

PerformancePriority

Obtient ou définit la valeur de priorité de performances à utiliser pour la connexion Wi-Fi lorsque la connexion Internet main est également via Wi-Fi. Si la connexion de la station se trouve sur une bande de fréquences qui interfère avec la bande de fréquence de liaison demandée, l'Wi-Fi jeu de puces tente de changer la bande de fréquence de la connexion en une autre qui n’interfère pas.

De nombreux chipsets Wi-Fi ont une limitation : si la connexion main est sur une bande de 5 GHz, le point d’accès ne peut pas être configuré pour utiliser une bande de 6 GHz. La hiérarchisation de la connexion (TetheringOverStation) indique à l'Wi-Fi jeu de puces de tenter de modifier la connexion main sur une bande de 2,4 GHz, afin qu’il n’y ait plus d’interférence avec la bande de 6 GHz demandée pour le point d’attache.

Si le décalage de bande de fréquence n’est pas possible ou autorisé en spécifiant une valeur de priorité de performances différente, l’appel de StartTetheringAsync échoue avec un résultat approprié status (BandInterference).

Ssid

Obtient ou définit le SSID réseau à utiliser pour la connexion Wi-Fi. Similaire à NetworkOperatorTetheringAccessPointConfiguration.Ssid.

Méthodes

IsAuthenticationKindSupported(TetheringWiFiAuthenticationKind)

Obtient une valeur indiquant si l’adaptateur Wi-Fi permet de configurer le point d’accès avec un type d’authentification spécifique. Similaire à NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupported.

IsAuthenticationKindSupportedAsync(TetheringWiFiAuthenticationKind)

Obtient de façon asynchrone une valeur indiquant si l’adaptateur Wi-Fi permet de configurer le point d’accès de connexion avec un type d’authentification spécifique. Similaire à NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupportedAsync.

IsBandSupported(TetheringWiFiBand)

Obtient une valeur indiquant si l’adaptateur Wi-Fi permet de configurer le point d’accès avec une bande de fréquence spécifique. Similaire à NetworkOperatorTetheringAccessPointConfiguration.IsBandSupported.

IsBandSupportedAsync(TetheringWiFiBand)

Obtient de façon asynchrone une valeur indiquant si l’adaptateur Wi-Fi permet de configurer le point d’accès avec une bande de fréquence spécifique. Similaire à NetworkOperatorTetheringAccessPointConfiguration.IsBandSupportedAsync.

S’applique à