UsnEntry.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using System;
  2. using Y.FileQueryEngine.Win32.Constants;
  3. using Y.FileQueryEngine.Win32.Structures;
  4. namespace Y.FileQueryEngine.UsnOperation
  5. {
  6. /// <summary>
  7. /// TODO: Update summary.
  8. /// </summary>
  9. public class UsnEntry
  10. {
  11. public uint RecordLength { get; private set; }
  12. public ulong FileReferenceNumber { get; private set; }
  13. /// <summary>
  14. /// Gets the parent file reference number.
  15. /// When its values is 1407374883553285(0x5000000000005L), it means this file/folder is under drive root
  16. /// </summary>
  17. /// <value>
  18. /// The parent file reference number.
  19. /// </value>
  20. public ulong ParentFileReferenceNumber { get; private set; }
  21. public long Usn { get; private set; }
  22. public uint Reason { get; private set; }
  23. public uint FileAttributes { get; private set; }
  24. public int FileNameLength { get; private set; }
  25. public int FileNameOffset { get; private set; }
  26. public string FileName { get; private set; }
  27. public bool IsFolder
  28. {
  29. get
  30. {
  31. return (this.FileAttributes & Win32ApiConstant.FILE_ATTRIBUTE_DIRECTORY) != 0;
  32. }
  33. }
  34. public UsnEntry(USN_RECORD_V2 usnRecord)
  35. {
  36. this.RecordLength = usnRecord.RecordLength;
  37. this.FileReferenceNumber = usnRecord.FileReferenceNumber;
  38. this.ParentFileReferenceNumber = usnRecord.ParentFileReferenceNumber;
  39. this.Usn = usnRecord.Usn;
  40. this.Reason = usnRecord.Reason;
  41. this.FileAttributes = usnRecord.FileAttributes;
  42. this.FileNameLength = usnRecord.FileNameLength;
  43. this.FileNameOffset = usnRecord.FileNameOffset;
  44. this.FileName = usnRecord.FileName;
  45. }
  46. }
  47. }