public FastDirectoryMember this[string name] { get { FastDirectoryMember ret = null; members.TryGetValue(name, out ret); return(ret); } }
public FastDirectory(string directoryName) { System.Threading.Thread.Sleep(0); // Allow interruption members = new Dictionary <string, FastDirectoryMember>(32, StringComparer.OrdinalIgnoreCase); WIN32_FIND_DATA info = new WIN32_FIND_DATA(); if (directoryName.Length == 0 || (directoryName.Length == 2 && directoryName[1] == ':')) { directoryName += "."; } IntPtr handle = FindFirstFileW(directoryName + @"\*", ref info); if (handle != (IntPtr)(-1)) { for (; ;) { if (ShouldAdd(ref info)) { var member = new FastDirectoryMember(ref info); members.Add(member.Name, member); } if (FindNextFileW(handle, ref info) == 0) { int hr = Marshal.GetLastWin32Error(); if (hr != 18) // NO MORE FILES { throw new System.ComponentModel.Win32Exception(hr); } break; } } FindClose(handle); } else { int hr = Marshal.GetLastWin32Error(); if (hr != 3) // FILE NOT FOUND { throw new System.ComponentModel.Win32Exception(hr); } } }