scripts
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user