/// <summary> /// Return an array of string pointers to the individual fields. /// A zero is returned upon encountering end of sequence or error. /// This can be analyzed in using mapi\_error(). /// </summary> /// <param name="hdl"></param> /// <returns></returns> public static string[] MapiFetchFieldArray(MapiHdl hdl) { var pptr = CMapiLib.mapi_fetch_field_array(hdl.Ptr); var ptr = Marshal.ReadIntPtr(pptr); var exploded = new List <string>(); do { exploded.Add(Marshal.PtrToStringAnsi(ptr)); pptr = new IntPtr((int)pptr + IntPtr.Size); ptr = Marshal.ReadIntPtr(pptr); } while (ptr != IntPtr.Zero); return(exploded.ToArray()); }