public override NT_STATUS DeleteDirectory(UserContext UserContext, string path) { if (path == "") { return(NT_STATUS.ACCESS_DENIED); // Root directory can not be deleted } if (!phone.Exists(root + path) || !phone.IsDirectory(path)) { return(NT_STATUS.OBJECT_PATH_NOT_FOUND); // Dir not found } // FIXME: We have no way of checking for directory or file attributes //if ((new DirectoryInfo(root + Path).Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly) // return NT_STATUS.ACCESS_DENIED; try { phone.DeleteDirectory(root + path, false); } catch (UnauthorizedAccessException ex) { Trace.WriteLine("Warning->Error error occured when deleting directory '" + path + "' : " + ex.Message); return(NT_STATUS.ACCESS_DENIED); // We know it exists, so it must just be denied } catch (IOException ex) { Trace.WriteLine("Warning->Error occured when deleting directory '" + path + "' : " + ex.Message); return(NT_STATUS.DIRECTORY_NOT_EMPTY); // Nachdem wir oben schon festgestellt haben dass das Listing da ist, // und nicht read-only ist, kann es nur noch nicht leer ist. } return(NT_STATUS.OK); }