internal override void Delete(Principal p) { GlobalDebug.WriteLineIf(GlobalDebug.Info, "SAMStoreCtx", "Delete"); Debug.Assert(p.fakePrincipal == false); // Principal.Delete() shouldn't be calling us on an unpersisted Principal. Debug.Assert(p.unpersisted == false); Debug.Assert(p.UnderlyingObject != null); Debug.Assert(p.UnderlyingObject is DirectoryEntry); try { SDSUtils.DeleteDirectoryEntry((DirectoryEntry)p.UnderlyingObject); } catch (System.Runtime.InteropServices.COMException e) { throw ExceptionHelper.GetExceptionFromCOMException(e); } }