public static IList<XineramaScreenInfo> XineramaQueryScreens(IntPtr dpy) { int number; IntPtr screen_ptr = XineramaQueryScreens(dpy, out number); List<XineramaScreenInfo> screens = new List<XineramaScreenInfo>(number); unsafe { XineramaScreenInfo* ptr = (XineramaScreenInfo*)screen_ptr; while (--number >= 0) { screens.Add(*ptr); ptr++; } } return screens; } }