private IntPtr GetAttachments(out int fileCount) { fileCount = 0; if (_attachments == null) { return(IntPtr.Zero); } if ((_attachments.Count <= 0) || (_attachments.Count > MAX_ATTACHMENTS)) { return(IntPtr.Zero); } int size = Marshal.SizeOf(typeof(MapiFileDesc)); IntPtr intPtr = Marshal.AllocHGlobal(_attachments.Count * size); MapiFileDesc mapiFileDesc = new MapiFileDesc(); mapiFileDesc.Position = -1; int ptr = (int)intPtr; foreach (String strAttachment in _attachments) { mapiFileDesc.Name = Path.GetFileName(strAttachment); mapiFileDesc.Path = strAttachment; Marshal.StructureToPtr(mapiFileDesc, (IntPtr)ptr, false); ptr += size; } fileCount = _attachments.Count; return(intPtr); }
private IntPtr GetAttachments(out int fileCount) { fileCount = 0; if (_attachments == null) return IntPtr.Zero; if ((_attachments.Count <= 0) || (_attachments.Count > MAX_ATTACHMENTS)) return IntPtr.Zero; int size = Marshal.SizeOf(typeof(MapiFileDesc)); IntPtr intPtr = Marshal.AllocHGlobal(_attachments.Count * size); MapiFileDesc mapiFileDesc = new MapiFileDesc(); mapiFileDesc.Position = -1; int ptr = (int)intPtr; foreach (String strAttachment in _attachments) { mapiFileDesc.Name = Path.GetFileName(strAttachment); mapiFileDesc.Path = strAttachment; Marshal.StructureToPtr(mapiFileDesc, (IntPtr)ptr, false); ptr += size; } fileCount = _attachments.Count; return intPtr; }