Поделиться через


NetworkOperatorTetheringSessionAccessPointConfiguration Класс

Определение

Содержит все поля конфигурации для сеанса, используемые для настройки Wi-Fi хот-спота привязки, а также соответствующие вспомогательные методы.

NetworkOperatorTetheringSessionAccessPointConfiguration содержит те же поля и вспомогательные методы, что и его постоянный аналог NetworkOperatorTetheringAccessPointConfiguration с несколькими дополнениями. Но все настраиваемые свойства из NetworkOperatorTetheringSessionAccessPointConfiguration обрабатываются как по сеансу, включая все общие свойства.

NetworkOperatorTetheringSessionAccessPointConfiguration используется в основном в сочетании с StartTetheringAsync для указания конфигурации подключения по сеансу. Это не приведет к очистке или изменению существующей постоянной конфигурации. Вызов StartTetheringAsync без параметров всегда использует постоянную конфигурацию, предварительно настроенную с помощью 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
Наследование
Object Platform::Object IInspectable NetworkOperatorTetheringSessionAccessPointConfiguration
Атрибуты

Требования к Windows

Семейство устройств
Windows 11, version 24H2 (появилось в 10.0.26100.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v19.0)
Возможности приложения
wiFiControl

Примеры

API привязки в пространстве имен Windows.Networking.NetworkOperators предоставляет полный набор функциональных возможностей, которые позволяют программно настраивать и контролировать привязку (т. е. совместное использование подключения к Интернету устройства с другими устройствами). В приведенном ниже примере кода показано использование конфигураций привязки для каждого сеанса.

С помощью конфигураций подключения по сеансу можно временно переопределить конфигурацию постоянного хот-спота, не изменяя ее окончательно. Это особенно полезно, если требуется временный параметр. Например, при подключении HMD к компьютеру с помощью мобильного хот-спота, но если вы хотите сделать все как можно более простыми, подключив устройство через временную Wi-Fi сеть, не раскрывая сведения о конфигурации для пользователя и не изменяя текущую конфигурацию мобильного хот-спота.

Кроме того, для обеспечения низкой задержки и низкой дрожания подключения к компьютеру может потребоваться подключение с частотой 6 ГГц. Если компьютер пользователя подключен к Интернету через Wi-Fi 5 ГГц, мобильный хот-спот не может быть запущен в диапазоне 6 ГГц. Таким образом, существует параметр PerformancePriority для каждого сеанса, который сообщает драйверу, как определить приоритет производительности между хот-спотом связи и подключением к станции. Константа По умолчанию указывает водителю, что подключение к станции следует приоритизировать по сравнению со всем остальным. С другой стороны, TetheringOverStation указывает драйверу, что следует приоритизировать производительность хот-спота тросов, что позволяет драйверу понизить уровень подключения станции до 2,4 ГГц при необходимости. Это все, чтобы предложить пользователю как можно более простое взаимодействие, не требуя от них лично изменять конфигурацию хот-спота и подключение к станции.

Приведенный ниже пример кода демонстрирует следующее:

  • Проверка поддержки API. Важно, чтобы приложение проверялось, поддерживает ли операционная система, на котором оно работает, конфигурации подключения для каждого сеанса. Для этого используйте метод ApiInformation.IsApiContractPresent .
  • Получение диспетчера tethering. Локально определенный метод GetTetheringManagerForCurrentConnection в примере кода идентифицирует используемый профиль подключения к Интернету и извлекает диспетчер присоединения, соответствующий данному профилю. Диспетчер троса позже используется для получения конфигурации основной точки доступа и запуска фактического сеанса привязки.
  • Настройка конфигурации сеанса. Вы можете создать конфигурацию сеанса привязки из существующей основной конфигурации или настроить ее с нуля. Затем можно задать или изменить различные параметры, такие как SSID, парольная фраза, диапазон, тип проверки подлинности и приоритет производительности.
  • Запуск сеанса привязки. Конфигурацию сеанса можно передать в метод StartTetheringAsync для запуска сеанса привязки. Этот метод также обеспечивает обширную обратную связь через перечисление TetheringOperationStatus , предлагая тонкое понимание результата операции.
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}.");
      }
    }
  }
}

Комментарии

Tethering — это функция, которая позволяет устройству с Windows работать в качестве мобильного хот-спота, обеспечивая подключение к Интернету к другим устройствам через Wi-Fi или Bluetooth. На Wi-Fi хот-споте можно настроить четыре постоянных поля: SSID сети, сетевой пароль, диапазон частот беспроводной сети (например, 2,4 ГГц, 5 ГГц, 6 ГГц) и алгоритм проверки подлинности сети (например, WPA2, WPA3). После установки все эти поля сохраняются между сеансами привязки; это означает, что значения хранятся в энергонезависимом хранилище.

Но вы также можете запустить сеанс привязки, используя конфигурацию полностью для каждого сеанса. Конфигурация привязки для каждого сеанса не сохраняется между сеансами вязания и не изменяет текущую постоянную конфигурацию. Поле для сеанса является приоритетом производительности.

Таким образом, цель NetworkOperatorTetheringSessionAccessPointConfiguration — указать конфигурацию привязки для каждого сеанса при запуске сеанса привязки через StartTetheringAsync. Дополнительные члены этого класса только для сеанса обычно являются значениями, которые в настоящее время не настраиваются пользователями с помощью параметров Windows.

Конструкторы

NetworkOperatorTetheringSessionAccessPointConfiguration()

Создает экземпляр NetworkOperatorTetheringSessionAccessPointConfiguration.

Свойства

AuthenticationKind

Возвращает или задает тип проверки подлинности, используемый для подключения Wi-Fi. Аналогично NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind.

Band

Возвращает или задает полосу частоты, используемую для подключения Wi-Fi. Аналогично NetworkOperatorTetheringAccessPointConfiguration.Band.

Passphrase

Возвращает или задает сетевую парольную фразу, используемую для подключения Wi-Fi. Аналогично NetworkOperatorTetheringAccessPointConfiguration.Passphrase.

PerformancePriority

Возвращает или задает значение приоритета производительности, которое будет использоваться для подключения Wi-Fi, если main подключение к Интернету также установлено через Wi-Fi. Если подключение станции находится на частотном диапазоне, который влияет на запрошенный диапазон частот, то Wi-Fi чипсет попытается изменить частотный диапазон соединения на другой, который не будет вмешиваться.

Многие Wi-Fi наборы микросхем имеют ограничение, согласно которому, если main соединение превышает диапазон 5 ГГц, то привязывая хот-спот не может быть настроена для использования диапазона 6 ГГц. При расстановке приоритетов для подключения (TetheringOverStation) набор микросхем Wi-Fi попытается изменить main соединение на диапазон 2,4 ГГц, чтобы больше не было помех для запрошенного диапазона 6 ГГц для привязки хот-спота.

Если сдвиг полосы частот невозможен или не разрешен путем указания другого значения приоритета производительности, вызов StartTetheringAsync завершится ошибкой с соответствующим состоянием результата (BandInterference).

Ssid

Возвращает или задает идентификатор SSID сети, используемый для подключения Wi-Fi. Аналогично NetworkOperatorTetheringAccessPointConfiguration.Ssid.

Методы

IsAuthenticationKindSupported(TetheringWiFiAuthenticationKind)

Возвращает значение, указывающее, допускает ли адаптер Wi-Fi настройку хот-спота привязки с определенным типом проверки подлинности. Аналогично NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupported.

IsAuthenticationKindSupportedAsync(TetheringWiFiAuthenticationKind)

Асинхронно получает значение, указывающее, позволяет ли адаптер Wi-Fi настроить привязку хот-спота с определенным типом проверки подлинности. Аналогично NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupportedAsync.

IsBandSupported(TetheringWiFiBand)

Возвращает значение, указывающее, допускает ли адаптер Wi-Fi настройку хот-спота с привязкой к определенному диапазону частот. Аналогично NetworkOperatorTetheringAccessPointConfiguration.IsBandSupported.

IsBandSupportedAsync(TetheringWiFiBand)

Асинхронно получает значение, указывающее, позволяет ли адаптер Wi-Fi настроить привязку хот-спота с определенным диапазоном частот. Аналогично NetworkOperatorTetheringAccessPointConfiguration.IsBandSupportedAsync.

Применяется к