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 ();
}