public void ModifyObject(string basedn, LdapMod[] attrs) { IntPtr basednPtr = IntPtr.Zero; basednPtr = Marshal.StringToHGlobalAnsi(basedn); IntPtr[] umattrs = new IntPtr[attrs.Length + 1]; for (int i = 0; i < attrs.Length; i++) { umattrs[i] = attrs[i].convertToUnmanaged(); } umattrs[attrs.Length] = IntPtr.Zero; /* NULL Termination */ var returnError = LdapClientLibrary.ldap_modify_ext_s(this._connection, basednPtr, umattrs, null, null); for (int i = 0; i < attrs.Length; i++) { attrs[i].Free(); Marshal.FreeHGlobal(umattrs[i]); } Marshal.FreeHGlobal(basednPtr); ErrorCheckerHelper.Validate((int)returnError); }