To get information about currently connected wireless interfaces, use the following methods depending on your requirements:
NativeWifi.GetCurrentConnection(interfaceId): Returns general connection details like SSID, PHY type, authentication, cipher, signal quality, and Rx/Tx rates.NativeWifi.GetRealtimeConnectionQuality(interfaceId): Requires Windows 11 24H2. Provides real-time metrics like link quality, MLO (Multi-Link Operation) status, and detailed link information (RSSI, Frequency, Bandwidth).NativeWifi.GetRssi(interfaceId): A fallback to get the RSSI if GetRealtimeConnectionQuality is not supported.
Note: All these methods return a tuple containing an ActionResult. If the interface is not connected, the result will be ActionResult.NotConnected.
public static void ShowConnectedNetworkInformation()
{
foreach (var interfaceId in NativeWifi.EnumerateInterfaces()
.Where(x => x.State is InterfaceState.Connected)
.Select(x => x.Id))
{
// Get general connection info
var (result, cc) = NativeWifi.GetCurrentConnection(interfaceId);
if (result is ActionResult.Success)
{
Trace.WriteLine($"SSID: {cc.Ssid}");
Trace.WriteLine($"Signal quality: {cc.SignalQuality}");
}
// Get real-time quality (Windows 11 24H2+)
(result, var rcq) = NativeWifi.GetRealtimeConnectionQuality(interfaceId);
if (result is ActionResult.Success)
{
Trace.WriteLine($"Link quality: {rcq.LinkQuality}");
if (rcq.Links.Count > 0)
{
Trace.WriteLine($"RSSI: {rcq.Links[0].Rssi}");
}
}
else if (result is ActionResult.NotSupported)
{
// Fallback to RSSI
(result, int rssi) = NativeWifi.GetRssi(interfaceId);
if (result is ActionResult.Success)
{
Trace.WriteLine($"RSSI: {rssi}");
}
}
}
}