private void ReadDirectoryEntry(DirectoryEntry rootEntry, UInt32 entryID) { UInt32 leftSiblingEntryID, rightSiblingEntryID, childEntryID; DirectoryEntry entry = GetDirectoryEntry(entryID, rootEntry, out leftSiblingEntryID, out rightSiblingEntryID, out childEntryID); if (entry == null || entry.EntryType == DirectoryEntryType.Invalid) { return; } rootEntry.AddChild(entry); if (leftSiblingEntryID < UInt32.MaxValue)//有左兄弟节点 { this.ReadDirectoryEntry(rootEntry, leftSiblingEntryID); } if (rightSiblingEntryID < UInt32.MaxValue)//有右兄弟节点 { this.ReadDirectoryEntry(rootEntry, rightSiblingEntryID); } if (childEntryID < UInt32.MaxValue)//有孩子节点 { this.ReadDirectoryEntry(entry, childEntryID); } }