Esempio n. 1
0
        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());
        }
Esempio n. 2
0
            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());
        }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
 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);
 }
Esempio n. 7
0
		public Win32IPInterfaceProperties2 (Win32_IP_ADAPTER_ADDRESSES addr, Win32_MIB_IFROW mib4, Win32_MIB_IFROW mib6)
		{
			this.addr = addr;
			this.mib4 = mib4;
			this.mib6 = mib6;
		}
Esempio n. 8
0
		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);
		}
Esempio n. 9
0
		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 ();
		}
Esempio n. 10
0
 public Win32IPInterfaceProperties2(Win32_IP_ADAPTER_ADDRESSES addr, Win32_MIB_IFROW mib4, Win32_MIB_IFROW mib6)
 {
     this.addr = addr;
     this.mib4 = mib4;
     this.mib6 = mib6;
 }