Compartir a través de


NetworkOperatorTetheringSessionAccessPointConfiguration Clase

Definición

Contiene todos los campos de configuración por sesión que se usan para configurar el punto de conexión de Wi-Fi, además de los métodos auxiliares pertinentes.

NetworkOperatorTetheringSessionAccessPointConfiguration contiene los mismos campos y métodos auxiliares que su homólogo persistente NetworkOperatorTetheringAccessPointConfiguration , con varias adiciones. Pero todas las propiedades configurables de NetworkOperatorTetheringSessionAccessPointConfiguration se tratan como por sesión, incluidas todas las propiedades compartidas.

NetworkOperatorTetheringSessionAccessPointConfiguration se usa principalmente en combinación con StartTetheringAsync para especificar la configuración de tethering por sesión. Si lo hace, no borrará ni modificará la configuración persistente existente. La llamada a StartTetheringAsync sin parámetros siempre usa la configuración persistente preconfigurada a través 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
Herencia
Object Platform::Object IInspectable NetworkOperatorTetheringSessionAccessPointConfiguration
Atributos

Requisitos de Windows

Familia de dispositivos
Windows 11 Insider Preview (se introdujo en la versión 10.0.26100.0)
API contract
Windows.Foundation.UniversalApiContract (se introdujo en la versión v19.0)
Características de aplicaciones
wiFiControl

Ejemplos

La API de tethering del espacio de nombres Windows.Networking.NetworkOperators proporciona un conjunto completo de funcionalidades que permiten configurar y controlar mediante programación el tethering (es decir, compartir la conexión a Internet de un dispositivo con otros dispositivos). En el ejemplo de código siguiente se muestra el uso de configuraciones de tethering por sesión.

Con las configuraciones de tethering por sesión, puede invalidar temporalmente la configuración del punto de conexión persistente sin modificarla permanentemente. Esto resulta especialmente útil cuando se requiere una configuración temporal. Por ejemplo, al conectar un HMD a un equipo mediante el uso de una zona activa móvil, pero cuando quieras hacer que las cosas sean lo más fluidas posible mediante la conexión del dispositivo a través de una red temporal de Wi-Fi, sin revelar los detalles de configuración al usuario y sin modificar la configuración actual del punto de acceso móvil del usuario.

Además, para lograr una conexión de baja latencia y baja vibración al equipo, es posible que quiera usar una conexión de 6 GHz. Si el equipo del usuario está conectado a Internet a través de una conexión de Wi-Fi de 5 GHz, la zona activa móvil no se puede iniciar en la banda de 6 GHz. Por lo tanto, hay un parámetro por sesión, PerformancePriority, que indica al controlador cómo priorizar el rendimiento entre el punto de conexión de tethering y la conexión de la estación. La constante Default indica al controlador que dé prioridad a la conexión de la estación sobre todo lo demás. Por otro lado, TetheringOverStation indica al conductor que priorice el rendimiento del punto de conexión de tethering, lo que permite al controlador cambiar la conexión de la estación a 2,4 GHz si es necesario. Esto es todo para ofrecer al usuario la mayor experiencia posible, sin necesidad de cambiar personalmente la configuración del punto de acceso y la conexión de estación.

El ejemplo de código siguiente muestra:

  • Comprobación de compatibilidad de API. Es importante que la aplicación pruebe si el sistema operativo en el que se ejecuta admite configuraciones de tethering por sesión. Para ello, use el método ApiInformation.IsApiContractPresent .
  • Obtención del administrador de tethering. El método GetTetheringManagerForCurrentConnection definido localmente del ejemplo de código identifica el perfil de conexión a Internet en uso y recupera un administrador de tethering que corresponde a ese perfil. El administrador de tethering se usa más adelante para recuperar la configuración del punto de acceso principal e iniciar la sesión de tethering real.
  • Configuración de la configuración de la sesión. Puede derivar una configuración de sesión de tethering de la configuración principal existente o configurar una desde cero. Después, puede establecer o modificar varios parámetros, como el SSID, la frase de contraseña, la banda, el tipo de autenticación y la prioridad de rendimiento.
  • Iniciando la sesión de tethering. La configuración de sesión se puede pasar al método StartTetheringAsync para iniciar la sesión de tethering. Este método también proporciona comentarios exhaustivos a través de la enumeración TetheringOperationStatus , lo que ofrece una comprensión matiz del resultado de la operación.
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}.");
      }
    }
  }
}

Comentarios

Tethering es una característica que permite que un dispositivo Windows funcione como un punto de acceso móvil: proporcionar conexiones a Internet a otros dispositivos a través de Wi-Fi o Bluetooth. Se pueden configurar cuatro campos persistentes en el punto de conexión de Wi-Fi: el SSID de red, la contraseña de red, la banda de frecuencia inalámbrica de red (por ejemplo, 2,4 GHz, 5 GHz, 6 GHz) y el algoritmo de autenticación de red (por ejemplo, WPA2, WPA3). Una vez establecido, todos esos campos persisten entre sesiones de tethering; lo que significa que los valores se almacenan en almacenamiento no volátil.

Pero también puede iniciar una sesión de tethering mediante una configuración completa por sesión. Una configuración de tethering por sesión no persiste entre sesiones de tethering y no modifica la configuración persistente actual. Un campo por sesión es la prioridad de rendimiento.

Por lo tanto, el propósito de NetworkOperatorTetheringSessionAccessPointConfiguration es especificar la configuración de tethering por sesión al iniciar la sesión de tethering a través de StartTetheringAsync. Los miembros adicionales de esta clase solo por sesión suelen ser valores que los usuarios no pueden configurar actualmente a través de la configuración de Windows.

Constructores

NetworkOperatorTetheringSessionAccessPointConfiguration()

Crea una instancia de NetworkOperatorTetheringSessionAccessPointConfiguration.

Propiedades

AuthenticationKind

Obtiene o establece el tipo de autenticación que se usará para la conexión de tethering de Wi-Fi. Similar a NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind.

Band

Obtiene o establece la banda de frecuencia que se usará para la conexión de tethering de Wi-Fi. Similar a NetworkOperatorTetheringAccessPointConfiguration.Band.

Passphrase

Obtiene o establece la frase de contraseña de red que se va a usar para la conexión de tethering de Wi-Fi. Similar a NetworkOperatorTetheringAccessPointConfiguration.Passphrase.

PerformancePriority

Obtiene o establece el valor de prioridad de rendimiento que se usará para la conexión de tethering Wi-Fi cuando la conexión a Internet principal también se encuentra a través de Wi-Fi. Si la conexión de la estación está en una banda de frecuencia que interfiere con la banda de frecuencia de tethering solicitada, el conjunto de chips Wi-Fi intentará cambiar la banda de frecuencia de la conexión a otra que no interferirá.

Muchos conjuntos de chips Wi-Fi tienen una limitación en la que si la conexión principal está a través de una banda de 5 GHz, el punto de conexión de tethering no se puede configurar para usar una banda de 6 GHz. La priorización de la conexión de tethering (TetheringOverStation) indicará al conjunto de chips Wi-Fi que intente cambiar la conexión principal a una banda de 2,4 GHz, para que ya no haya interferencias con la banda de 6 GHz solicitada para el punto de conexión de tethering.

Si el desplazamiento de banda de frecuencia no es posible o se permite especificando un valor de prioridad de rendimiento diferente, se producirá un error al llamar a StartTetheringAsync con un estado de resultado adecuado (BandInterference).

Ssid

Obtiene o establece el SSID de red que se usará para la conexión de tethering de Wi-Fi. Similar a NetworkOperatorTetheringAccessPointConfiguration.Ssid.

Métodos

IsAuthenticationKindSupported(TetheringWiFiAuthenticationKind)

Obtiene un valor que indica si el adaptador de Wi-Fi permite configurar el punto de acceso de tethering con un tipo de autenticación específico. Similar a NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupported.

IsAuthenticationKindSupportedAsync(TetheringWiFiAuthenticationKind)

Obtiene de forma asincrónica un valor que indica si el adaptador de Wi-Fi permite configurar el punto de conexión de tethering con un tipo de autenticación específico. Similar a NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupportedAsync.

IsBandSupported(TetheringWiFiBand)

Obtiene un valor que indica si el adaptador de Wi-Fi permite configurar el punto de conexión de tethering con una banda de frecuencia específica. Similar a NetworkOperatorTetheringAccessPointConfiguration.IsBandSupported.

IsBandSupportedAsync(TetheringWiFiBand)

Obtiene de forma asincrónica un valor que indica si el adaptador de Wi-Fi permite configurar el punto de conexión de tethering con una banda de frecuencia específica. Similar a NetworkOperatorTetheringAccessPointConfiguration.IsBandSupportedAsync.

Se aplica a