Condividi tramite


NetworkOperatorTetheringSessionAccessPointConfiguration Classe

Definizione

Contiene tutti i campi di configurazione per sessione usati per configurare l'hotspot di tethering Wi-Fi, oltre ai metodi helper pertinenti.

NetworkOperatorTetheringSessionAccessPointConfiguration contiene gli stessi campi e metodi helper della controparte persistente NetworkOperatorTetheringAccessPointConfiguration , con diverse aggiunte. Tuttavia, tutte le proprietà configurabili di NetworkOperatorTetheringSessionAccessPointConfiguration vengono considerate come per sessione, incluse tutte le proprietà condivise.

NetworkOperatorTetheringSessionAccessPointConfiguration viene usato principalmente in combinazione con StartTetheringAsync per specificare la configurazione del tethering per sessione. In questo modo non verrà cancellata o modificata la configurazione persistente esistente. La chiamata a StartTetheringAsync senza parametri usa sempre la configurazione persistente preconfigurato tramite 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
Ereditarietà
Object Platform::Object IInspectable NetworkOperatorTetheringSessionAccessPointConfiguration
Attributi

Requisiti Windows

Famiglia di dispositivi
Windows 11 Insider Preview (è stato introdotto in 10.0.26100.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v19.0)
Funzionalità dell'app
wiFiControl

Esempio

L'API di tethering nello spazio dei nomi Windows.Networking.NetworkOperators offre un set completo di funzionalità che consentono di configurare e controllare il tethering a livello di codice, ovvero la condivisione della connessione Internet di un dispositivo con altri dispositivi. L'esempio di codice seguente illustra l'uso di configurazioni di tethering per sessione.

Con le configurazioni di tethering per sessione, è possibile eseguire temporaneamente l'override della configurazione hotspot di tethering permanente senza modificarla definitivamente. Ciò è particolarmente utile quando è necessaria un'impostazione temporanea. Ad esempio, quando si connette un HMD a un PC usando hotspot per dispositivi mobili, ma quando si desidera rendere le cose il più facile possibile connettendo il dispositivo tramite una rete temporanea Wi-Fi, senza rivelare i dettagli di configurazione all'utente e senza modificare la configurazione corrente dell'hotspot mobile dell'utente.

Inoltre, per ottenere una bassa latenza e una connessione di instabilità bassa al PC, si potrebbe voler usare una connessione a 6 GHz. Se il PC dell'utente è connesso a Internet tramite una connessione a 5 GHz Wi-Fi, l'hotspot mobile non può essere avviato sulla banda a 6 GHz. Esiste quindi un parametro per sessione , PerformancePriority, che indica al driver come assegnare priorità alle prestazioni tra l'hotspot di tethering e la connessione alla stazione. La costante Default indica al conducente di assegnare la priorità alla connessione della stazione su tutto il resto. D'altra parte , TetheringOverStation indica al driver di classificare in ordine di priorità le prestazioni dell'hotspot di tethering, consentendo così al driver di effettuare il downgrade della connessione della stazione a 2,4 GHz, se necessario. Questo è tutto per offrire all'utente la maggior parte di un'esperienza senza problemi, senza richiedere loro di modificare personalmente la configurazione dell'hotspot e la connessione stazione.

L'esempio di codice seguente illustra:

  • Verifica del supporto DELL'API. È importante che l'app verifichi se il sistema operativo in cui è in esecuzione supporta le configurazioni di tethering per sessione. A tale scopo, usare il metodo ApiInformation.IsApiContractPresent .
  • Ottenere il gestore del tethering. Il metodo GetTetheringManagerForCurrentConnection dell'esempio di codice identifica il profilo di connessione Internet in uso e recupera un gestore di tethering corrispondente a tale profilo. Il gestore di tethering viene usato successivamente per recuperare la configurazione del punto di accesso primario e avviare la sessione di tethering effettiva.
  • Configurazione della configurazione della sessione. È possibile derivare una configurazione di sessione di tethering dalla configurazione primaria esistente o impostarne una da zero. È quindi possibile impostare o modificare vari parametri, ad esempio SSID, passphrase, band, tipo di autenticazione e priorità delle prestazioni.
  • Avvio della sessione di tethering. La configurazione della sessione può essere passata al metodo StartTetheringAsync per avviare la sessione di tethering. Questo metodo fornisce anche un feedback approfondito tramite l'enumerazione TetheringOperationStatus , offrendo una comprensione dettagliata del risultato dell'operazione.
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}.");
      }
    }
  }
}

Commenti

Il tethering è una funzionalità che consente a un dispositivo Windows di funzionare come hotspot mobile: fornire connessioni Internet ad altri dispositivi tramite Wi-Fi o Bluetooth. È possibile configurare quattro campi persistenti nell'hotspot di tethering Wi-Fi: la rete SSID, la password di rete, la banda di frequenza wireless di rete (ad esempio, 2,4 GHz, 5 GHz, 6 GHz) e l'algoritmo di autenticazione di rete (ad esempio, WPA2, WPA3). Una volta impostata, tutti questi campi vengono mantenuti tra le sessioni di tethering; vale a dire che i valori vengono archiviati in un archivio non volatile.

È anche possibile avviare una sessione di tethering usando una configurazione interamente per sessione. Una configurazione di tethering per sessione non viene mantenuta tra le sessioni di tethering e non modifica la configurazione persistente corrente. Un campo per sessione è la priorità delle prestazioni.

Lo scopo di NetworkOperatorTetheringSessionAccessPointConfiguration è quindi quello di specificare la configurazione del tethering per sessione all'avvio della sessione di tethering tramite StartTetheringAsync. I membri aggiuntivi di questa classe solo per sessione sono in genere valori non configurabili dagli utenti tramite Impostazioni di Windows.

Costruttori

NetworkOperatorTetheringSessionAccessPointConfiguration()

Crea un'istanza di NetworkOperatorTetheringSessionAccessPointConfiguration.

Proprietà

AuthenticationKind

Ottiene o imposta il tipo di autenticazione da utilizzare per la connessione Wi-Fi tethering. Simile a NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind.

Band

Ottiene o imposta la banda di frequenza da utilizzare per la connessione Wi-Fi tethering. Simile a NetworkOperatorTetheringAccessPointConfiguration.Band.

Passphrase

Ottiene o imposta la passphrase di rete da utilizzare per la connessione di tethering Wi-Fi. Simile a NetworkOperatorTetheringAccessPointConfiguration.Passphrase.

PerformancePriority

Ottiene o imposta il valore della priorità delle prestazioni da utilizzare per la connessione di tethering Wi-Fi quando la connessione Internet principale viene usata anche tramite Wi-Fi. Se la connessione alla stazione si trova su una banda di frequenza che interferisce con la banda di frequenza di tethering richiesta, il chipset Wi-Fi tenterà di modificare la banda di frequenza della connessione a un'altra che non interferisce.

Molti Wi-Fi chipset hanno una limitazione in cui se la connessione principale è superiore a una banda da 5 GHz, l'hotspot di tethering non può essere configurato per l'uso di una banda a 6 GHz. La definizione delle priorità della connessione tethering (TetheringOverStation) indicherà al chipset Wi-Fi di tentare di modificare la connessione principale su una banda da 2,4 GHz, in modo che non vi sarà più interferenza con la banda di 6 GHz richiesta per l'hotspot di tethering.

Se lo spostamento della banda di frequenza non è possibile o consentito specificando un valore di priorità di prestazioni diverso, la chiamata a StartTetheringAsync avrà esito negativo con lo stato del risultato appropriato (BandInterference).

Ssid

Ottiene o imposta l'SSID di rete da utilizzare per la connessione di tethering Wi-Fi. Simile a NetworkOperatorTetheringAccessPointConfiguration.Ssid.

Metodi

IsAuthenticationKindSupported(TetheringWiFiAuthenticationKind)

Ottiene un valore che indica se l'adattatore Wi-Fi consente di configurare l'hotspot di tethering con un tipo di autenticazione specifico. Simile a NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupported.

IsAuthenticationKindSupportedAsync(TetheringWiFiAuthenticationKind)

Ottiene in modo asincrono un valore che indica se l'adattatore Wi-Fi consente di configurare l'hotspot di tethering con un tipo di autenticazione specifico. Simile a NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupportedAsync.

IsBandSupported(TetheringWiFiBand)

Ottiene un valore che indica se l'adattatore Wi-Fi consente di configurare l'hotspot di tethering con una banda di frequenza specifica. Simile a NetworkOperatorTetheringAccessPointConfiguration.IsBandSupported.

IsBandSupportedAsync(TetheringWiFiBand)

Ottiene in modo asincrono un valore che indica se l'adattatore Wi-Fi consente di configurare l'hotspot di tethering con una banda di frequenza specifica. Simile a NetworkOperatorTetheringAccessPointConfiguration.IsBandSupportedAsync.

Si applica a