Ejemplo n.º 1
0
        /// <summary>
        /// Internal method to initially create and then access the cached version of the file entry list
        /// <param name="startUsn">USN of first entry to consider</param>
        /// </summary>
        private IEnumerable <Record> GetRecords(long startUsn)
        {
            const Win32USN.USNReason InclusionFlags = Win32USN.USNReason.USN_REASON_ANY
                                                      & ~(Win32USN.USNReason.USN_REASON_INDEXABLE_CHANGE | Win32USN.USNReason.USN_REASON_COMPRESSION_CHANGE |
                                                          Win32USN.USNReason.USN_REASON_ENCRYPTION_CHANGE | Win32USN.USNReason.USN_REASON_EA_CHANGE |
                                                          Win32USN.USNReason.USN_REASON_REPARSE_POINT_CHANGE | Win32USN.USNReason.USN_REASON_CLOSE);

            if (m_entryList == null || m_startUsn != startUsn)
            {
                m_startUsn  = startUsn;
                m_entryList = ResolveFullPaths(GetRawRecords(startUsn, rec => (rec.UsnRecord.Reason & InclusionFlags) != 0));
            }

            return(m_entryList);
        }
Ejemplo n.º 2
0
        private static ChangeReason MapChangeReason(Win32USN.USNReason reason)
        {
            if (reason.HasFlag(Win32USN.USNReason.USN_REASON_FILE_CREATE))
            {
                return(ChangeReason.Created);
            }

            if (reason.HasFlag(Win32USN.USNReason.USN_REASON_FILE_DELETE))
            {
                return(ChangeReason.Deleted);
            }

            if (reason.HasFlag(Win32USN.USNReason.USN_REASON_RENAME_OLD_NAME))
            {
                return(ChangeReason.RenamedFrom);
            }

            if (reason.HasFlag(Win32USN.USNReason.USN_REASON_RENAME_NEW_NAME))
            {
                return(ChangeReason.RenamedTo);
            }

            return(ChangeReason.Modified);
        }