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

Windows.Networking.NetworkOperators 名前空間のテザリング API には、テザリングをプログラムで構成および制御できる包括的な機能セットが用意されています (つまり、デバイスのインターネット接続を他のデバイスと共有する)。 次のコード例は、セッションごとのテザリング構成の使用を示しています。

セッションごとのテザリング構成を使用すると、永続的なテザリング ホットスポット構成を永続的に変更することなく、一時的にオーバーライドできます。 これは、一時的な設定が必要な場合に特に便利です。 たとえば、モバイル ホットスポットを使用して HMD を PC に接続するが、デバイスを一時的な Wi-Fi ネットワーク経由で接続し、構成の詳細をユーザーに表示せず、ユーザーの現在のモバイル ホットスポット構成を変更せずに、可能な限りシームレスにしたい場合などです。

さらに、PC への低遅延と低ジッター接続を実現するには、6 GHz 接続を使用する必要があります。 ユーザーの PC が 5 GHz Wi-Fi 接続経由でインターネットに接続されている場合、モバイル ホットスポットは 6 GHz 帯域で開始できません。 そのため、テザリング ホットスポットとステーション接続の間でパフォーマンスを優先する方法をドライバーに指示するセッションごとのパラメーター PerformancePriority があります。 Default 定数は、他のすべてに対してステーション接続に優先順位を付けるようドライバーに指示します。 一方、 テザリングOverStationはテザリング ホットスポットのパフォーマンスを優先するようにドライバーに指示するため、必要に応じてドライバーはステーション接続を2.4 GHzにダウングレードできます。 これは、ホットスポットの構成とステーションの接続を個人的に変更する必要なしに、可能な限りシームレスなエクスペリエンスをユーザーに提供するものです。

次のコード サンプルでは、次の例を示します。

  • API サポートの検証。 アプリで実行されているオペレーティング システムがセッションごとのテザリング構成をサポートしているかどうかをテストすることが重要です。 そのためには、 ApiInformation.IsApiContractPresent メソッドを 使用します。
  • テザリング マネージャーの取得。 コード サンプルのローカルで定義された 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}.");
      }
    }
  }
}

注釈

テザリングは、Windows デバイスがモバイル ホットスポットとして機能できるようにする機能です。Wi-Fi または Bluetooth 経由で他のデバイスにインターネット接続を提供します。 Wi-Fi テザリング ホットスポットには、ネットワーク SSID、ネットワーク パスワード、ネットワーク ワイヤレス周波数帯域 (2.4 GHz、5 GHz、6 GHz など)、ネットワーク認証アルゴリズム (WPA2、WPA3 など) の 4 つの永続的なフィールドを構成できます。 設定すると、これらのフィールドはすべてテザリング セッション間で保持されます。は、値が非揮発性ストレージに格納されることを意味します。

ただし、セッションごとの構成を使用してテザリング セッションを開始することもできます。 セッションごとのテザリング構成はテザリング セッション間で保持されず、現在の永続的な構成は変更されません。 セッションごとのフィールドは パフォーマンスの優先順位です

そのため、 NetworkOperatorTetheringSessionAccessPointConfiguration の目的は、 StartTetheringAsync を使用してテザリング セッションを開始するときに、セッションごとのテザリング構成を指定することです。 このセッションごとのクラスの追加メンバーは、通常、Windows 設定を使用してユーザーが現在構成できない値です。

コンストラクター

NetworkOperatorTetheringSessionAccessPointConfiguration()

NetworkOperatorTetheringSessionAccessPointConfiguration のインスタンスを作成します。

プロパティ

AuthenticationKind

Wi-Fi テザリング接続に使用する認証の種類を取得または設定します。 NetworkOperatorTetheringAccessPointConfiguration.AuthenticationKind と似ています。

Band

Wi-Fi テザリング接続に使用する周波数帯を取得または設定します。 NetworkOperatorTetheringAccessPointConfiguration.Band に似ています。

Passphrase

Wi-Fi テザリング接続に使用するネットワーク パスフレーズを取得または設定します。 NetworkOperatorTetheringAccessPointConfiguration.パスフレーズと同様です。

PerformancePriority

メインインターネット接続も Wi-Fi 経由である場合に、Wi-Fi テザリング接続に使用するパフォーマンス優先度の値を取得または設定します。 ステーション接続が要求されたテザリング周波数帯域に干渉する周波数帯域にある場合、Wi-Fi チップセットは接続の周波数帯域を干渉しない別の周波数帯域に変更しようとします。

多くの Wi-Fi チップセットでは、メイン接続が 5 GHz 帯域を超える場合、テザリング ホットスポットを 6 GHz 帯域を使用するように構成できないという制限があります。 テザリング接続 (TetheringOverStation) の優先順位を付けると、Wi-Fi チップセットは、メイン接続を 2.4 GHz 帯に変更して、テザリング ホットスポットに対して要求された 6 GHz バンドとの干渉がなくなります。

別のパフォーマンス優先度値を指定して周波数帯域シフトが不可能または許可されていない場合、 StartTetheringAsync を呼び出すと、適切な結果状態 (BandInterference) で失敗します。

Ssid

Wi-Fi テザリング接続に使用するネットワーク SSID を取得または設定します。 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 と同様です。

適用対象