unsafe static Win32_IP_ADAPTER_INFO [] GetAdaptersInfo ()
{
byte [] bytes = null;
int len = 0;
GetAdaptersInfo (bytes, ref len);
bytes = new byte [len];
int ret = GetAdaptersInfo (bytes, ref len);
if (ret != 0)
throw new NetworkInformationException (ret);
List<Win32_IP_ADAPTER_INFO> l = new List<Win32_IP_ADAPTER_INFO> ();
fixed (byte* ptr = bytes) {
Win32_IP_ADAPTER_INFO info;
for (IntPtr p = (IntPtr) ptr; p != IntPtr.Zero; p = info.Next) {
info = new Win32_IP_ADAPTER_INFO ();
Marshal.PtrToStructure (p, info);
l.Add (info);
}
}
return l.ToArray ();
}