private unsafe static Win32_IP_ADAPTER_ADDRESSES[] GetAdaptersAddresses() { //IL_0055: Incompatible stack types: I vs Ref byte[] info = null; int size = 0; GetAdaptersAddresses(0u, 0u, IntPtr.Zero, info, ref size); info = new byte[size]; int adaptersAddresses = GetAdaptersAddresses(0u, 0u, IntPtr.Zero, info, ref size); if (adaptersAddresses != 0) { throw new NetworkInformationException(adaptersAddresses); } List <Win32_IP_ADAPTER_ADDRESSES> list = new List <Win32_IP_ADAPTER_ADDRESSES>(); fixed(byte *value = &((info != null && info.Length != 0) ? ref info[0] : ref *(byte *)null)) { IntPtr intPtr = (IntPtr)(void *)value; 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()); }
unsafe static Win32_IP_ADAPTER_ADDRESSES [] GetAdaptersAddresses() { byte [] bytes = null; int len = 0; GetAdaptersAddresses(0, 0, IntPtr.Zero, bytes, ref len); bytes = new byte [len]; int ret = GetAdaptersAddresses(0, 0, IntPtr.Zero, bytes, ref len); if (ret != 0) { throw new NetworkInformationException(ret); } List <Win32_IP_ADAPTER_ADDRESSES> l = new List <Win32_IP_ADAPTER_ADDRESSES> (); fixed(byte *ptr = bytes) { Win32_IP_ADAPTER_ADDRESSES info; for (IntPtr p = (IntPtr)ptr; p != IntPtr.Zero; p = info.Next) { info = new Win32_IP_ADAPTER_ADDRESSES(); Marshal.PtrToStructure(p, info); l.Add(info); } } return(l.ToArray()); }
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 *value = ref (array != null && array.Length != 0)?ref array[0] : ref *null) { IntPtr intPtr = (IntPtr)((void *)value); 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()); }
public Win32IPv4InterfaceProperties(Win32_IP_ADAPTER_ADDRESSES addr, Win32_MIB_IFROW mib) { this.addr = addr; this.mib = mib; // get per-adapter info. int size = 0; GetPerAdapterInfo(mib.Index, null, ref size); painfo = new Win32_IP_PER_ADAPTER_INFO(); int ret = GetPerAdapterInfo(mib.Index, painfo, ref size); if (ret != 0) { throw new NetworkInformationException(ret); } }
internal Win32NetworkInterface2(Win32_IP_ADAPTER_ADDRESSES addr) { this.addr = addr; mib4 = default(Win32_MIB_IFROW); mib4.Index = addr.Alignment.IfIndex; if (GetIfEntry(ref mib4) != 0) { mib4.Index = -1; // unavailable; } mib6 = default(Win32_MIB_IFROW); mib6.Index = addr.Ipv6IfIndex; if (GetIfEntry(ref mib6) != 0) { mib6.Index = -1; // unavailable; } ip4stats = new Win32IPv4InterfaceStatistics(mib4); ip_if_props = new Win32IPInterfaceProperties2(addr, mib4, mib6); }
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); }
public Win32IPInterfaceProperties2 (Win32_IP_ADAPTER_ADDRESSES addr, Win32_MIB_IFROW mib4, Win32_MIB_IFROW mib6) { this.addr = addr; this.mib4 = mib4; this.mib6 = mib6; }
Win32NetworkInterface2 (Win32_IP_ADAPTER_ADDRESSES addr) { this.addr = addr; mib4 = default (Win32_MIB_IFROW); mib4.Index = addr.Alignment.IfIndex; if (GetIfEntry (ref mib4) != 0) mib4.Index = -1; // unavailable; mib6 = default (Win32_MIB_IFROW); mib6.Index = addr.Ipv6IfIndex; if (GetIfEntry (ref mib6) != 0) mib6.Index = -1; // unavailable; ip4stats = new Win32IPv4InterfaceStatistics (mib4); ip_if_props = new Win32IPInterfaceProperties2 (addr, mib4, mib6); }
unsafe static Win32_IP_ADAPTER_ADDRESSES [] GetAdaptersAddresses () { byte [] bytes = null; int len = 0; GetAdaptersAddresses (0, 0, IntPtr.Zero, bytes, ref len); bytes = new byte [len]; int ret = GetAdaptersAddresses (0, 0, IntPtr.Zero, bytes, ref len); if (ret != 0) throw new NetworkInformationException (ret); List<Win32_IP_ADAPTER_ADDRESSES> l = new List<Win32_IP_ADAPTER_ADDRESSES> (); fixed (byte* ptr = bytes) { Win32_IP_ADAPTER_ADDRESSES info; for (IntPtr p = (IntPtr) ptr; p != IntPtr.Zero; p = info.Next) { info = new Win32_IP_ADAPTER_ADDRESSES (); Marshal.PtrToStructure (p, info); l.Add (info); } } return l.ToArray (); }
public Win32IPInterfaceProperties2(Win32_IP_ADAPTER_ADDRESSES addr, Win32_MIB_IFROW mib4, Win32_MIB_IFROW mib6) { this.addr = addr; this.mib4 = mib4; this.mib6 = mib6; }