public DirectoryEntry GetDirectoryEntry(string samAccountName, bool reload = false) { if (DirectoryEntries.ContainsKey(samAccountName) && DirectoryEntries[samAccountName] != null && !reload) { return(DirectoryEntries[samAccountName]); } GetDistinguishedName(samAccountName, out DirectoryEntry result, reload); return(result); }
private void ReadDirectoryEntry(BinaryReader reader, int DID, DirectoryEntry parent) { if (DID != -1 && !DirectoryEntries.ContainsKey(DID)) { reader.BaseStream.Position = DID * 128; DirectoryEntry entry = ReadDirectoryEntry(reader); entry.Document = this; entry.ID = DID; DirectoryEntries[DID] = entry; parent.AddChild(entry); ReadDirectoryEntry(reader, entry.LeftChildDID, parent); ReadDirectoryEntry(reader, entry.RightChildDID, parent); ReadDirectoryEntry(reader, entry.MembersTreeNodeDID, entry); } }