Compartilhar via


NetworkOperatorTetheringSessionAccessPointConfiguration Classe

Definição

Contém todos os campos de configuração por sessão usados para configurar o hotspot de Wi-Fi de tethering, além de métodos auxiliares relevantes.

NetworkOperatorTetheringSessionAccessPointConfiguration contém os mesmos campos e métodos auxiliares que seu equivalente persistente NetworkOperatorTetheringAccessPointConfiguration , com várias adições. Mas todas as propriedades configuráveis de NetworkOperatorTetheringSessionAccessPointConfiguration são tratadas como por sessão, incluindo todas as propriedades compartilhadas.

NetworkOperatorTetheringSessionAccessPointConfiguration é usado principalmente em combinação com StartTetheringAsync para especificar a configuração de tethering por sessão. Isso não limpará nem alterará a configuração persistente existente. Chamar StartTetheringAsync sem parâmetros sempre usa a configuração persistente pré-configurada por meio de 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
Herança
Object Platform::Object IInspectable NetworkOperatorTetheringSessionAccessPointConfiguration
Atributos

Requisitos do Windows

Família de dispositivos
Windows 11, version 24H2 (introduzida na 10.0.26100.0)
API contract
Windows.Foundation.UniversalApiContract (introduzida na v19.0)
Funcionalidades do aplicativo
wiFiControl

Exemplos

A API de vinculação no namespace Windows.Networking.NetworkOperators fornece um conjunto abrangente de funcionalidades que permitem configurar e controlar programaticamente o vínculo (ou seja, compartilhar a conexão de Internet de um dispositivo com outros dispositivos). O exemplo de código abaixo demonstra o uso de configurações de tethering por sessão.

Com as configurações de tethering por sessão, você pode substituir temporariamente a configuração de hotspot de tethering persistente sem alterá-la permanentemente. Isso é particularmente útil quando uma configuração temporária é necessária. Por exemplo, ao conectar um HMD a um computador usando o hotspot móvel, mas quando você quiser tornar as coisas o mais perfeitas possível conectando o dispositivo por meio de uma rede Wi-Fi temporária, sem revelar os detalhes de configuração para o usuário e sem alterar a configuração atual do hotspot móvel do usuário.

Além disso, para obter uma conexão de baixa latência e baixa tremulação com o computador, talvez você queira usar uma conexão de 6 GHz. Se o computador do usuário estiver conectado à Internet por meio de uma conexão de Wi-Fi de 5 GHz, o hotspot móvel não poderá ser iniciado na banda de 6 GHz. Portanto, há um parâmetro por sessão, PerformancePriority, que informa ao driver como priorizar o desempenho entre o hotspot de ligação e a conexão da estação. A constante Padrão instrui o driver a priorizar a conexão da estação em relação a todo o resto. Por outro lado, o TetheringOverStation instrui o driver a priorizar o desempenho do hotspot de ligação, permitindo que o driver faça downgrade da conexão da estação para 2,4 GHz, se necessário. Isso tudo é para oferecer ao usuário o máximo de uma experiência perfeita possível, sem exigir que ele altere pessoalmente a configuração do hotspot e a conexão de estação.

O exemplo de código abaixo demonstra:

  • Verificação de suporte à API. É importante que seu aplicativo teste se o sistema operacional em que ele está sendo executado dá suporte a configurações de tethering por sessão. Para fazer isso, use o método ApiInformation.IsApiContractPresent .
  • Obtendo o gerenciador de tethering. O método GetTetheringManagerForCurrentConnection definido localmente do exemplo de código identifica o perfil de conexão com a Internet em uso e recupera um gerenciador de vinculação que corresponde a esse perfil. O gerenciador de tethering é usado posteriormente para recuperar a configuração do ponto de acesso primário e iniciar a sessão de tethering real.
  • Configurando a configuração da sessão. Você pode derivar uma configuração de sessão de tethering da configuração primária existente ou definir uma do zero. Em seguida, você pode definir ou modificar vários parâmetros, como SSID, frase secreta, banda, tipo de autenticação e prioridade de desempenho.
  • Iniciando a sessão de tethering. A configuração da sessão pode ser passada para o método StartTetheringAsync para iniciar a sessão de tethering. Esse método também fornece comentários extensivos por meio da enumeração TetheringOperationStatus , oferecendo uma compreensão matizada do resultado da operação.
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}.");
      }
    }
  }
}

Comentários

O tethering é um recurso que permite que um dispositivo Windows funcione como um hotspot móvel: fornecer conexões de Internet para outros dispositivos por Wi-Fi ou Bluetooth. Quatro campos persistentes podem ser configurados na Wi-Fi hotspot de conexão: o SSID de rede, a senha de rede, a banda de frequência sem fio de rede (por exemplo, 2,4 GHz, 5 GHz, 6 GHz) e o algoritmo de autenticação de rede (por exemplo, WPA2, WPA3). Uma vez definidos, todos esses campos persistem entre sessões de amarração; o que significa que os valores são armazenados em armazenamento não volátil.

Mas você também pode iniciar uma sessão de tethering usando uma configuração inteiramente por sessão. Uma configuração de tethering por sessão não persiste entre sessões de tethering e não altera a configuração persistente atual. Um campo por sessão é a prioridade de desempenho.

Portanto, a finalidade de NetworkOperatorTetheringSessionAccessPointConfiguration é especificar a configuração de tethering por sessão ao iniciar a sessão de tethering por meio de StartTetheringAsync. Os membros adicionais dessa classe somente por sessão normalmente são valores que não são configuráveis atualmente pelos usuários por meio das Configurações do Windows.

Construtores

NetworkOperatorTetheringSessionAccessPointConfiguration()

Cria uma instância do NetworkOperatorTetheringSessionAccessPointConfiguration.

Propriedades

AuthenticationKind

Obtém ou define o tipo de autenticação a ser usado para o Wi-Fi conexão de vinculação. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind.

Band

Obtém ou define a faixa de frequência a ser usada para o Wi-Fi conexão de vinculação. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.Band.

Passphrase

Obtém ou define a frase secreta de rede a ser usada para o Wi-Fi conexão de vinculação. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.Passphrase.

PerformancePriority

Obtém ou define o valor de prioridade de desempenho a ser usado para o Wi-Fi conexão de vinculação quando o main conexão com a Internet também é por Wi-Fi. Se a conexão da estação estiver em uma faixa de frequência que interfira na faixa de frequência de vinculação solicitada, o Wi-Fi chipset tentará alterar a faixa de frequência da conexão para outra que não interfira.

Muitos chipsets Wi-Fi têm uma limitação em que, se a conexão main estiver em uma banda de 5 GHz, o hotspot de amarração não poderá ser configurado para usar uma banda de 6 GHz. Priorizar a conexão de tethering (TetheringOverStation) instruirá o Wi-Fi chipset a tentar alterar a conexão de main para uma banda de 2,4 GHz, para que não haja mais interferência com a banda de 6 GHz solicitada para o hotspot de amarração.

Se a mudança de faixa de frequência não for possível ou permitida especificando um valor de prioridade de desempenho diferente, chamar StartTetheringAsync falhará com um resultado apropriado status (BandInterference).

Ssid

Obtém ou define o SSID de rede a ser usado para o Wi-Fi conexão de vinculação. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.Ssid.

Métodos

IsAuthenticationKindSupported(TetheringWiFiAuthenticationKind)

Obtém um valor que indica se o adaptador de Wi-Fi permite configurar o hotspot de tethering com um tipo de autenticação específico. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupported.

IsAuthenticationKindSupportedAsync(TetheringWiFiAuthenticationKind)

Obtém de forma assíncrona um valor que indica se o adaptador Wi-Fi permite configurar o hotspot de amarração com um tipo de autenticação específico. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupportedAsync.

IsBandSupported(TetheringWiFiBand)

Obtém um valor que indica se o adaptador Wi-Fi permite configurar o hotspot de amarração com uma faixa de frequência específica. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.IsBandSupported.

IsBandSupportedAsync(TetheringWiFiBand)

Obtém de forma assíncrona um valor que indica se o adaptador Wi-Fi permite configurar o hotspot de amarração com uma faixa de frequência específica. Semelhante a NetworkOperatorTetheringAccessPointConfiguration.IsBandSupportedAsync.

Aplica-se a