Bagikan melalui


NetworkOperatorTetheringSessionAccessPointConfiguration Kelas

Definisi

Berisi semua bidang konfigurasi per sesi yang digunakan untuk mengonfigurasi hotspot Wi-Fi tethering, ditambah metode pembantu yang relevan.

NetworkOperatorTetheringSessionAccessPointConfiguration berisi bidang dan metode pembantu yang sama dengan rekan persisten NetworkOperatorTetheringAccessPointConfiguration , dengan beberapa penambahan. Tetapi semua properti yang dapat dikonfigurasi dari NetworkOperatorTetheringSessionAccessPointConfiguration diperlakukan per sesi, termasuk semua properti bersama.

NetworkOperatorTetheringSessionAccessPointConfiguration digunakan terutama dalam kombinasi dengan StartTetheringAsync untuk menentukan konfigurasi tethering per sesi. Melakukannya tidak akan menghapus atau mengubah konfigurasi persisten yang ada. Memanggil StartTetheringAsync tanpa parameter selalu menggunakan konfigurasi persisten yang telah dikonfigurasi sebelumnya melalui 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
Warisan
Object Platform::Object IInspectable NetworkOperatorTetheringSessionAccessPointConfiguration
Atribut

Persyaratan Windows

Rangkaian perangkat
Windows 11, version 24H2 (diperkenalkan dalam 10.0.26100.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v19.0)
Kemampuan aplikasi
wiFiControl

Contoh

API tethering di namespace Layanan Windows.Networking.NetworkOperators menyediakan serangkaian fungsionalitas komprehensif yang memungkinkan Anda mengonfigurasi dan mengontrol tethering secara terprogram (yaitu berbagi koneksi internet perangkat dengan perangkat lain). Contoh kode di bawah ini menunjukkan penggunaan konfigurasi tethering per sesi.

Dengan konfigurasi tethering per sesi, Anda dapat mengganti konfigurasi hotspot tethering persisten untuk sementara tanpa mengubahnya secara permanen. Itu sangat berguna ketika pengaturan sementara diperlukan. Misalnya, saat menyambungkan HMD ke PC dengan menggunakan hotspot seluler, tetapi ketika Anda ingin membuat hal-hal semulus mungkin dengan menghubungkan perangkat melalui jaringan Wi-Fi sementara, tanpa mengungkapkan detail konfigurasi kepada pengguna, dan tanpa mengubah konfigurasi hotspot seluler pengguna saat ini.

Selain itu, untuk mencapai latensi rendah dan koneksi jitter rendah ke PC, Anda mungkin ingin menggunakan koneksi 6 GHz. Jika PC pengguna terhubung ke internet melalui koneksi 5 GHz Wi-Fi, maka hotspot seluler tidak dapat dimulai pada band 6 GHz. Jadi ada parameter per sesi, PerformancePriority, yang memberi tahu pengemudi cara memprioritaskan performa antara hotspot tethering dan koneksi stasiun. Konstanta Default memberi tahu pengemudi untuk memprioritaskan koneksi stasiun daripada yang lainnya. Di sisi lain, TetheringOverStation memberi tahu pengemudi untuk memprioritaskan performa hotspot tethering, sehingga memungkinkan pengemudi untuk menurunkan koneksi stasiun ke 2,4 GHz jika diperlukan. Ini semua untuk menawarkan pengguna sebanyak mungkin pengalaman yang mulus, tanpa mengharuskan mereka untuk secara pribadi mengubah konfigurasi hotspot dan koneksi stasiun.

Sampel kode di bawah ini menampilkan:

  • Verifikasi dukungan API. Penting bahwa aplikasi Anda menguji apakah sistem operasi yang kebetulan dijalankan mendukung konfigurasi tethering per sesi. Untuk melakukannya, gunakan metode ApiInformation.IsApiContractPresent .
  • Mendapatkan manajer tethering. Metode GetTetheringManagerForCurrentConnection sampel kode mengidentifikasi profil koneksi internet yang digunakan, dan mengambil manajer tethering yang sesuai dengan profil tersebut. Manajer tethering kemudian digunakan untuk mengambil konfigurasi titik akses utama, dan memulai sesi tethering yang sebenarnya.
  • Menyiapkan konfigurasi sesi. Anda dapat memperoleh konfigurasi sesi tethering dari konfigurasi utama yang ada, atau mengaturnya dari awal. Anda kemudian dapat mengatur atau memodifikasi berbagai parameter, seperti SSID, frase sandi, pita, jenis autentikasi, dan prioritas performa.
  • Memulai sesi tethering. Konfigurasi sesi dapat diteruskan ke metode StartTetheringAsync untuk memulai sesi tethering. Metode ini juga memberikan umpan balik yang luas melalui enum TetheringOperationStatus , menawarkan pemahaman bernuansa tentang hasil operasi.
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}.");
      }
    }
  }
}

Keterangan

Tethering adalah fitur yang memungkinkan perangkat Windows berfungsi sebagai hotspot seluler: menyediakan koneksi internet ke perangkat lain melalui Wi-Fi atau Bluetooth. Empat bidang persisten dapat dikonfigurasi pada hotspot tethering Wi-Fi: SSID jaringan, kata sandi jaringan, pita frekuensi nirkabel jaringan (misalnya, 2,4 GHz, 5 GHz, 6 GHz), dan algoritma autentikasi jaringan (misalnya, WPA2, WPA3). Setelah diatur, semua bidang tersebut bertahan di antara sesi tethering; yang berarti bahwa nilai disimpan dalam penyimpanan non-volatil.

Tetapi Anda juga dapat memulai sesi tethering menggunakan konfigurasi per sesi sepenuhnya. Konfigurasi tethering per sesi tidak bertahan di antara sesi tethering, dan tidak mengubah konfigurasi persisten saat ini. Bidang per sesi adalah prioritas performa.

Jadi tujuan dari NetworkOperatorTetheringSessionAccessPointConfiguration adalah untuk menentukan konfigurasi tethering per sesi saat memulai sesi tethering melalui StartTetheringAsync. Anggota tambahan dari kelas khusus per sesi ini biasanya adalah nilai yang saat ini tidak dapat dikonfigurasi oleh pengguna melalui Pengaturan Windows.

Konstruktor

NetworkOperatorTetheringSessionAccessPointConfiguration()

Membuat instans NetworkOperatorTetheringSessionAccessPointConfiguration.

Properti

AuthenticationKind

Mendapatkan atau mengatur jenis autentikasi yang akan digunakan untuk koneksi tethering Wi-Fi. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind.

Band

Mendapatkan atau mengatur pita frekuensi yang akan digunakan untuk koneksi Wi-Fi tethering. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.Band.

Passphrase

Mendapatkan atau mengatur frasa sandi jaringan yang akan digunakan untuk koneksi Wi-Fi tethering. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.Passphrase.

PerformancePriority

Mendapatkan atau menetapkan nilai prioritas performa yang akan digunakan untuk koneksi tethering Wi-Fi ketika koneksi internet utama juga melalui Wi-Fi. Jika koneksi stasiun berada pada pita frekuensi yang mengganggu pita frekuensi tethering yang diminta, maka chipset Wi-Fi akan mencoba mengubah pita frekuensi koneksi ke yang lain yang tidak akan mengganggu.

Banyak chipset Wi-Fi memiliki batasan di mana jika koneksi utama lebih dari pita 5 GHz, maka hotspot tethering tidak dapat dikonfigurasi untuk menggunakan band 6 GHz. Memprioritaskan koneksi tethering (TetheringOverStation) akan memberi tahu chipset Wi-Fi untuk mencoba mengubah koneksi utama ke band 2,4 GHz, sehingga tidak akan ada lagi gangguan dengan pita 6 GHz yang diminta untuk hotspot tethering.

Jika pergeseran pita frekuensi tidak dimungkinkan atau diizinkan dengan menentukan nilai prioritas performa yang berbeda, maka memanggil StartTetheringAsync akan gagal dengan status hasil yang sesuai (BandInterference).

Ssid

Mendapatkan atau mengatur SSID jaringan yang akan digunakan untuk koneksi tethering Wi-Fi. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.Ssid.

Metode

IsAuthenticationKindSupported(TetheringWiFiAuthenticationKind)

Mendapatkan nilai yang menunjukkan apakah adaptor Wi-Fi memungkinkan konfigurasi hotspot tethering dengan jenis autentikasi tertentu. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupported.

IsAuthenticationKindSupportedAsync(TetheringWiFiAuthenticationKind)

Secara asinkron mendapatkan nilai yang menunjukkan apakah adaptor Wi-Fi memungkinkan konfigurasi hotspot tethering dengan jenis autentikasi tertentu. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.IsAuthenticationKindSupportedAsync.

IsBandSupported(TetheringWiFiBand)

Mendapatkan nilai yang menunjukkan apakah adaptor Wi-Fi memungkinkan konfigurasi hotspot tethering dengan pita frekuensi tertentu. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.IsBandSupported.

IsBandSupportedAsync(TetheringWiFiBand)

Secara asinkron mendapatkan nilai yang menunjukkan apakah adaptor Wi-Fi memungkinkan konfigurasi hotspot tethering dengan pita frekuensi tertentu. Mirip dengan NetworkOperatorTetheringAccessPointConfiguration.IsBandSupportedAsync.

Berlaku untuk