+ Win32IPAddressCollection c = new Win32IPAddressCollection ();
+ Win32_IP_ADAPTER_DNS_SERVER_ADDRESS a;
+ for (IntPtr p = ptr; p != IntPtr.Zero; p = a.Next) {
+ a = (Win32_IP_ADAPTER_DNS_SERVER_ADDRESS) Marshal.PtrToStructure (p, typeof (Win32_IP_ADAPTER_DNS_SERVER_ADDRESS));
+// FIXME: It somehow fails here. Looks like there is something wrong.
+//if (a.Address.Sockaddr == IntPtr.Zero) throw new Exception ("pointer " + p + " a.length " + a.Address.SockaddrLength);
+ c.Add (a.Address.GetIPAddress ());
+ }
+ c.is_readonly = true;
+ return c;