This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
@@ -0,0 +1,246 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace System.Net.NetworkInformation
{
// Token: 0x020001A6 RID: 422
internal class Win32NetworkInterface2 : NetworkInterface
{
// Token: 0x06000E12 RID: 3602 RVA: 0x00027B44 File Offset: 0x00025D44
private Win32NetworkInterface2(Win32_IP_ADAPTER_ADDRESSES addr)
{
this.addr = addr;
this.mib4 = default(Win32_MIB_IFROW);
this.mib4.Index = addr.Alignment.IfIndex;
if (Win32NetworkInterface2.GetIfEntry(ref this.mib4) != 0)
{
this.mib4.Index = -1;
}
this.mib6 = default(Win32_MIB_IFROW);
this.mib6.Index = addr.Ipv6IfIndex;
if (Win32NetworkInterface2.GetIfEntry(ref this.mib6) != 0)
{
this.mib6.Index = -1;
}
this.ip4stats = new Win32IPv4InterfaceStatistics(this.mib4);
this.ip_if_props = new Win32IPInterfaceProperties2(addr, this.mib4, this.mib6);
}
// Token: 0x06000E13 RID: 3603
[DllImport("iphlpapi.dll", SetLastError = true)]
private static extern int GetAdaptersInfo(byte[] info, ref int size);
// Token: 0x06000E14 RID: 3604
[DllImport("iphlpapi.dll", SetLastError = true)]
private static extern int GetAdaptersAddresses(uint family, uint flags, IntPtr reserved, byte[] info, ref int size);
// Token: 0x06000E15 RID: 3605
[DllImport("iphlpapi.dll", SetLastError = true)]
private static extern int GetIfEntry(ref Win32_MIB_IFROW row);
// Token: 0x06000E16 RID: 3606 RVA: 0x00027C04 File Offset: 0x00025E04
public static NetworkInterface[] ImplGetAllNetworkInterfaces()
{
Win32_IP_ADAPTER_ADDRESSES[] adaptersAddresses = Win32NetworkInterface2.GetAdaptersAddresses();
NetworkInterface[] array = new NetworkInterface[adaptersAddresses.Length];
for (int i = 0; i < array.Length; i++)
{
array[i] = new Win32NetworkInterface2(adaptersAddresses[i]);
}
return array;
}
// Token: 0x06000E17 RID: 3607 RVA: 0x00027C40 File Offset: 0x00025E40
public static Win32_IP_ADAPTER_INFO GetAdapterInfoByIndex(int index)
{
foreach (Win32_IP_ADAPTER_INFO win32_IP_ADAPTER_INFO in Win32NetworkInterface2.GetAdaptersInfo())
{
if ((ulong)win32_IP_ADAPTER_INFO.Index == (ulong)((long)index))
{
return win32_IP_ADAPTER_INFO;
}
}
return null;
}
// Token: 0x06000E18 RID: 3608 RVA: 0x00027C7C File Offset: 0x00025E7C
private unsafe static Win32_IP_ADAPTER_INFO[] GetAdaptersInfo()
{
byte[] array = null;
int num = 0;
Win32NetworkInterface2.GetAdaptersInfo(array, ref num);
array = new byte[num];
int adaptersInfo = Win32NetworkInterface2.GetAdaptersInfo(array, ref num);
if (adaptersInfo != 0)
{
throw new NetworkInformationException(adaptersInfo);
}
List<Win32_IP_ADAPTER_INFO> list = new List<Win32_IP_ADAPTER_INFO>();
fixed (byte* ptr = (ref array != null && array.Length != 0 ? ref array[0] : ref *null))
{
IntPtr intPtr = (IntPtr)((void*)ptr);
while (intPtr != IntPtr.Zero)
{
Win32_IP_ADAPTER_INFO win32_IP_ADAPTER_INFO = new Win32_IP_ADAPTER_INFO();
Marshal.PtrToStructure(intPtr, win32_IP_ADAPTER_INFO);
list.Add(win32_IP_ADAPTER_INFO);
intPtr = win32_IP_ADAPTER_INFO.Next;
}
}
return list.ToArray();
}
// Token: 0x06000E19 RID: 3609 RVA: 0x00027D24 File Offset: 0x00025F24
private unsafe static Win32_IP_ADAPTER_ADDRESSES[] GetAdaptersAddresses()
{
byte[] array = null;
int num = 0;
Win32NetworkInterface2.GetAdaptersAddresses(0U, 0U, IntPtr.Zero, array, ref num);
array = new byte[num];
int adaptersAddresses = Win32NetworkInterface2.GetAdaptersAddresses(0U, 0U, IntPtr.Zero, array, ref num);
if (adaptersAddresses != 0)
{
throw new NetworkInformationException(adaptersAddresses);
}
List<Win32_IP_ADAPTER_ADDRESSES> list = new List<Win32_IP_ADAPTER_ADDRESSES>();
fixed (byte* ptr = (ref array != null && array.Length != 0 ? ref array[0] : ref *null))
{
IntPtr intPtr = (IntPtr)((void*)ptr);
while (intPtr != IntPtr.Zero)
{
Win32_IP_ADAPTER_ADDRESSES win32_IP_ADAPTER_ADDRESSES = new Win32_IP_ADAPTER_ADDRESSES();
Marshal.PtrToStructure(intPtr, win32_IP_ADAPTER_ADDRESSES);
list.Add(win32_IP_ADAPTER_ADDRESSES);
intPtr = win32_IP_ADAPTER_ADDRESSES.Next;
}
}
return list.ToArray();
}
// Token: 0x06000E1A RID: 3610 RVA: 0x00027DD8 File Offset: 0x00025FD8
public override IPInterfaceProperties GetIPProperties()
{
return this.ip_if_props;
}
// Token: 0x06000E1B RID: 3611 RVA: 0x00027DE0 File Offset: 0x00025FE0
public override IPv4InterfaceStatistics GetIPv4Statistics()
{
return this.ip4stats;
}
// Token: 0x06000E1C RID: 3612 RVA: 0x00027DE8 File Offset: 0x00025FE8
public override PhysicalAddress GetPhysicalAddress()
{
byte[] array = new byte[this.addr.PhysicalAddressLength];
Array.Copy(this.addr.PhysicalAddress, 0, array, 0, array.Length);
return new PhysicalAddress(array);
}
// Token: 0x06000E1D RID: 3613 RVA: 0x00027E24 File Offset: 0x00026024
public override bool Supports(NetworkInterfaceComponent networkInterfaceComponent)
{
if (networkInterfaceComponent != NetworkInterfaceComponent.IPv4)
{
return networkInterfaceComponent == NetworkInterfaceComponent.IPv6 && this.mib6.Index >= 0;
}
return this.mib4.Index >= 0;
}
// Token: 0x17000497 RID: 1175
// (get) Token: 0x06000E1E RID: 3614 RVA: 0x00027E6C File Offset: 0x0002606C
public override string Description
{
get
{
return this.addr.Description;
}
}
// Token: 0x17000498 RID: 1176
// (get) Token: 0x06000E1F RID: 3615 RVA: 0x00027E7C File Offset: 0x0002607C
public override string Id
{
get
{
return this.addr.AdapterName;
}
}
// Token: 0x17000499 RID: 1177
// (get) Token: 0x06000E20 RID: 3616 RVA: 0x00027E8C File Offset: 0x0002608C
public override bool IsReceiveOnly
{
get
{
return this.addr.IsReceiveOnly;
}
}
// Token: 0x1700049A RID: 1178
// (get) Token: 0x06000E21 RID: 3617 RVA: 0x00027E9C File Offset: 0x0002609C
public override string Name
{
get
{
return this.addr.FriendlyName;
}
}
// Token: 0x1700049B RID: 1179
// (get) Token: 0x06000E22 RID: 3618 RVA: 0x00027EAC File Offset: 0x000260AC
public override NetworkInterfaceType NetworkInterfaceType
{
get
{
return this.addr.IfType;
}
}
// Token: 0x1700049C RID: 1180
// (get) Token: 0x06000E23 RID: 3619 RVA: 0x00027EBC File Offset: 0x000260BC
public override OperationalStatus OperationalStatus
{
get
{
return this.addr.OperStatus;
}
}
// Token: 0x1700049D RID: 1181
// (get) Token: 0x06000E24 RID: 3620 RVA: 0x00027ECC File Offset: 0x000260CC
public override long Speed
{
get
{
return (long)((ulong)((this.mib6.Index < 0) ? this.mib4.Speed : this.mib6.Speed));
}
}
// Token: 0x1700049E RID: 1182
// (get) Token: 0x06000E25 RID: 3621 RVA: 0x00027EFC File Offset: 0x000260FC
public override bool SupportsMulticast
{
get
{
return !this.addr.NoMulticast;
}
}
// Token: 0x04000CA5 RID: 3237
private Win32_IP_ADAPTER_ADDRESSES addr;
// Token: 0x04000CA6 RID: 3238
private Win32_MIB_IFROW mib4;
// Token: 0x04000CA7 RID: 3239
private Win32_MIB_IFROW mib6;
// Token: 0x04000CA8 RID: 3240
private Win32IPv4InterfaceStatistics ip4stats;
// Token: 0x04000CA9 RID: 3241
private IPInterfaceProperties ip_if_props;
}
}