Browse Source

Merge branch 'master' of https://github.com/yuzhengyang/Fork

yuzhengyang 8 years ago
parent
commit
81fcf3f161
100 changed files with 0 additions and 1663 deletions
  1. 0 36
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Properties/AssemblyInfo.cs
  2. 0 75
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/QueryEngine/FileAndDirectoryEntry.cs
  3. 0 165
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/QueryEngine/FileQueryEngine.cs
  4. 0 41
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/QueryEngine/FrnFilePath.cs
  5. 0 30
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnControlCode.cs
  6. 0 50
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnEntry.cs
  7. 0 14
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnErrorCode.cs
  8. 0 60
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnJournalData.cs
  9. 0 325
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnOperator.cs
  10. 0 30
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnReasonCode.cs
  11. 0 29
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Constants/Win32ApiConstant.cs
  12. 0 26
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/BY_HANDLE_FILE_INFORMATION.cs
  13. 0 15
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/CREATE_USN_JOURNAL_DATA.cs
  14. 0 17
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/MFT_ENUM_DATA.cs
  15. 0 17
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/POINT.cs
  16. 0 20
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/READ_USN_JOURNAL_DATA.cs
  17. 0 21
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/USN_JOURNAL_DATA.cs
  18. 0 48
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/USN_RECORD_V2.cs
  19. 0 556
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Win32Api.cs
  20. 0 76
      Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Y.FileQueryEngine.csproj
  21. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/App.config
  22. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/FodyWeavers.xml
  23. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Form1.Designer.cs
  24. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Form1.cs
  25. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Form1.resx
  26. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Models/VersionModel.cs
  27. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Program.cs
  28. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Properties/AssemblyInfo.cs
  29. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Resources.Designer.cs
  30. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Resources.resx
  31. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Settings.Designer.cs
  32. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Settings.settings
  33. 0 6
      Fork.Net/Version.Builder/Version.Builder.csproj
  34. 0 0
      Fork.Net/Fork.Net.Tools/Version.Builder/packages.config
  35. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/App.config
  36. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Commons/R.cs
  37. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/FodyWeavers.xml
  38. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Form1.Designer.cs
  39. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Form1.cs
  40. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Form1.resx
  41. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Models/VersionModel.cs
  42. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Program.cs
  43. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Properties/AssemblyInfo.cs
  44. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Properties/Resources.Designer.cs
  45. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Properties/Resources.resx
  46. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Properties/Settings.Designer.cs
  47. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/Properties/Settings.settings
  48. 0 6
      Fork.Net/Version.Update/Version.Update.csproj
  49. 0 0
      Fork.Net/Fork.Net.Tools/Version.Update/packages.config
  50. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/App.config
  51. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/DAO/DbTable.cs
  52. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/DAO/IDbContext.cs
  53. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/DAO/Muse.cs
  54. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/DAO/SuperDb.cs
  55. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/Migrations/MigraConf.cs
  56. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/Properties/AssemblyInfo.cs
  57. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/Y.DB.csproj
  58. 0 0
      Fork.Net/Fork.Net.Tools/Y.DB/packages.config
  59. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/Properties/AssemblyInfo.cs
  60. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/Y.Skin.csproj
  61. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoButton/ImageButton.Designer.cs
  62. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoButton/ImageButton.cs
  63. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoButton/ImageButton.resx
  64. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoControl/UserControlPlus.Designer.cs
  65. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoControl/UserControlPlus.cs
  66. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoControl/UserControlPlus.resx
  67. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleForm.Designer.cs
  68. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleForm.cs
  69. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleForm.resx
  70. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleHorizontalForm.Designer.cs
  71. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleHorizontalForm.cs
  72. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.Designer.cs
  73. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.cs
  74. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.resx
  75. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleVerticalForm.Designer.cs
  76. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleVerticalForm.cs
  77. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularForm.Designer.cs
  78. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularForm.cs
  79. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularForm.resx
  80. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularFormSkin.Designer.cs
  81. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularFormSkin.cs
  82. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularFormSkin.resx
  83. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/NoTitle/NoTitleForm.Designer.cs
  84. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/NoTitle/NoTitleForm.cs
  85. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/NoTitle/NoTitleForm.resx
  86. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowForm.Designer.cs
  87. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowForm.cs
  88. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowForm.resx
  89. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowFormSkin.Designer.cs
  90. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowFormSkin.cs
  91. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowFormSkin.resx
  92. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Toast/ToastForm.Designer.cs
  93. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Toast/ToastForm.cs
  94. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Toast/ToastForm.resx
  95. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedArticlePanel.Designer.cs
  96. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedArticlePanel.cs
  97. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedPanel.Designer.cs
  98. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedPanel.cs
  99. 0 0
      Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedPanel.resx
  100. 0 0
      Fork.Net/Y.Skin/YoPanel/FlexiblePanel.Designer.cs

+ 0 - 36
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Properties/AssemblyInfo.cs

@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// 有关程序集的一般信息由以下
-// 控制。更改这些特性值可修改
-// 与程序集关联的信息。
-[assembly: AssemblyTitle("Y.FileQueryEngine")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("Y.FileQueryEngine")]
-[assembly: AssemblyCopyright("Copyright ©  2017")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-//将 ComVisible 设置为 false 将使此程序集中的类型
-//对 COM 组件不可见。  如果需要从 COM 访问此程序集中的类型,
-//请将此类型的 ComVisible 特性设置为 true。
-[assembly: ComVisible(false)]
-
-// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
-[assembly: Guid("497f570c-8398-458d-970c-dfa3dd9fe746")]
-
-// 程序集的版本信息由下列四个值组成: 
-//
-//      主版本
-//      次版本
-//      生成号
-//      修订号
-//
-//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
-// 方法是按如下所示使用“*”: :
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]

+ 0 - 75
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/QueryEngine/FileAndDirectoryEntry.cs

@@ -1,75 +0,0 @@
-using System;
-using Y.FileQueryEngine.UsnOperation;
-
-namespace Y.FileQueryEngine.QueryEngine
-{
-    public class FileAndDirectoryEntry
-    {
-        protected UInt64 fileReferenceNumber;
-
-        protected UInt64 parentFileReferenceNumber;
-
-        protected string fileName;
-
-        protected bool isFolder;
-
-        protected string path;
-
-        public UInt64 FileReferenceNumber
-        {
-            get
-            {
-                return this.fileReferenceNumber;
-            }
-        }
-
-        public UInt64 ParentFileReferenceNumber
-        {
-            get
-            {
-                return this.parentFileReferenceNumber;
-            }
-        }
-
-        public string FileName
-        {
-            get
-            {
-                return this.fileName;
-            }
-        }
-
-        public string Path
-        {
-            get
-            {
-                return this.path;
-            }
-        }
-
-        public string FullFileName
-        {
-            get
-            {
-                return string.Concat(this.path, "\\", this.fileName);
-            }
-        }
-
-        public bool IsFolder
-        {
-            get
-            {
-                return this.isFolder;
-            }
-        }
-
-        public FileAndDirectoryEntry(UsnEntry usnEntry, string path)
-        {
-            this.fileReferenceNumber = usnEntry.FileReferenceNumber;
-            this.parentFileReferenceNumber = usnEntry.ParentFileReferenceNumber;
-            this.fileName = usnEntry.FileName;
-            this.isFolder = usnEntry.IsFolder;
-            this.path = path;
-        }
-    }
-}

+ 0 - 165
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/QueryEngine/FileQueryEngine.cs

@@ -1,165 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.IO;
-using Y.FileQueryEngine.UsnOperation;
-
-namespace Y.FileQueryEngine.QueryEngine
-{
-    public class FileQueryEngine
-    {
-        /// <summary>
-        /// When its values is 1407374883553285(0x5000000000005L), it means this file/folder is under drive root
-        /// </summary>
-        public const UInt64 ROOT_FILE_REFERENCE_NUMBER = 0x5000000000005L;
-
-        protected static readonly string excludeFolders = string.Join("|",
-            new string[]
-            {
-                "$RECYCLE.BIN",
-                "System Volume Information",
-                "$AttrDef",
-                "$BadClus",
-                "$BitMap",
-                "$Boot",
-                "$LogFile",
-                "$Mft",
-                "$MftMirr",
-                "$Secure",
-                "$TxfLog",
-                "$UpCase",
-                "$Volume",
-                "$Extend"
-            }).ToUpper();
-        /// <summary>
-        /// 获取所有NTFS文件系统的固定磁盘
-        /// </summary>
-        /// <returns></returns>
-        public static IEnumerable<DriveInfo> GetFixedNtfsDrives()
-        {
-            return DriveInfo.GetDrives()
-                .Where(d => d.DriveType == DriveType.Fixed && d.DriveFormat.ToUpper() == "NTFS");
-        }
-        /// <summary>
-        /// 获取所有NTFS文件系统的磁盘
-        /// </summary>
-        /// <returns></returns>
-        public static IEnumerable<DriveInfo> GetReadyNtfsDrives()
-        {
-            return DriveInfo.GetDrives()
-                .Where(d => d.IsReady && d.DriveFormat.ToUpper() == "NTFS");
-        }
-        /// <summary>
-        /// 查询磁盘的所有文件
-        /// </summary>
-        /// <param name="drive"></param>
-        /// <returns></returns>
-        public static List<UsnEntry> GetAllFiles(DriveInfo drive)
-        {
-            var usnOperator = new UsnOperator(drive);
-            return usnOperator.GetEntries().Where(e => !excludeFolders.Contains(e.FileName.ToUpper())).ToList();
-        }
-        public static bool FileIsExist(string drive, long usn)
-        {
-            var d = DriveInfo.GetDrives().FirstOrDefault(x => x.Name == drive);
-            if (d != null)
-            {
-                var usnOperator = new UsnOperator(d);
-                return usnOperator.UsnIsExist(usn);
-            }
-            return false;
-        }
-        /// <summary>
-        /// 查询磁盘的所有文件
-        /// </summary>
-        /// <param name="drive"></param>
-        /// <returns></returns>
-        public static List<FileAndDirectoryEntry> GetAllFileEntrys(DriveInfo drive)
-        {
-            List<FileAndDirectoryEntry> result = new List<FileAndDirectoryEntry>();
-            var usnOperator = new UsnOperator(drive);
-            var usnEntries = usnOperator.GetEntries().Where(e => !excludeFolders.Contains(e.FileName.ToUpper()));
-            var folders = usnEntries.Where(e => e.IsFolder).ToArray();
-            List<FrnFilePath> paths = GetFolderPath(folders, drive);
-            var range = usnEntries.Join(
-                paths,
-                usn => usn.ParentFileReferenceNumber,
-                path => path.FileReferenceNumber,
-                (usn, path) => new FileAndDirectoryEntry(usn, path.Path));
-            result.AddRange(range);
-            return result;
-        }
-
-        private static List<FrnFilePath> GetFolderPath(UsnEntry[] folders, DriveInfo drive)
-        {
-            Dictionary<UInt64, FrnFilePath> pathDic = new Dictionary<ulong, FrnFilePath>();
-            pathDic.Add(ROOT_FILE_REFERENCE_NUMBER,
-                new FrnFilePath(ROOT_FILE_REFERENCE_NUMBER, null, string.Empty, drive.Name.TrimEnd('\\')));
-
-            foreach (var folder in folders)
-            {
-                pathDic.Add(folder.FileReferenceNumber,
-                    new FrnFilePath(folder.FileReferenceNumber, folder.ParentFileReferenceNumber, folder.FileName));
-            }
-
-            Stack<UInt64> treeWalkStack = new Stack<ulong>();
-
-            foreach (var key in pathDic.Keys)
-            {
-                treeWalkStack.Clear();
-
-                FrnFilePath currentValue = pathDic[key];
-
-                if (string.IsNullOrWhiteSpace(currentValue.Path)
-                    && currentValue.ParentFileReferenceNumber.HasValue
-                    && pathDic.ContainsKey(currentValue.ParentFileReferenceNumber.Value))
-                {
-                    FrnFilePath parentValue = pathDic[currentValue.ParentFileReferenceNumber.Value];
-
-                    while (string.IsNullOrWhiteSpace(parentValue.Path)
-                        && parentValue.ParentFileReferenceNumber.HasValue
-                        && pathDic.ContainsKey(parentValue.ParentFileReferenceNumber.Value))
-                    {
-                        currentValue = parentValue;
-
-                        if (currentValue.ParentFileReferenceNumber.HasValue
-                            && pathDic.ContainsKey(currentValue.ParentFileReferenceNumber.Value))
-                        {
-                            treeWalkStack.Push(key);
-                            parentValue = pathDic[currentValue.ParentFileReferenceNumber.Value];
-                        }
-                        else
-                        {
-                            parentValue = null;
-                            break;
-                        }
-                    }
-
-                    if (parentValue != null)
-                    {
-                        currentValue.Path = BuildPath(currentValue, parentValue);
-
-                        while (treeWalkStack.Count() > 0)
-                        {
-                            UInt64 walkedKey = treeWalkStack.Pop();
-
-                            FrnFilePath walkedNode = pathDic[walkedKey];
-                            FrnFilePath parentNode = pathDic[walkedNode.ParentFileReferenceNumber.Value];
-
-                            walkedNode.Path = BuildPath(walkedNode, parentNode);
-                        }
-                    }
-                }
-            }
-
-            var result = pathDic.Values.Where(p => !string.IsNullOrWhiteSpace(p.Path) && p.Path.StartsWith(drive.Name)).ToList();
-
-            return result;
-        }
-
-        private static string BuildPath(FrnFilePath currentNode, FrnFilePath parentNode)
-        {
-            return string.Concat(new string[] { parentNode.Path, "\\", currentNode.FileName });
-        }
-    }
-}

+ 0 - 41
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/QueryEngine/FrnFilePath.cs

@@ -1,41 +0,0 @@
-using System;
-
-namespace Y.FileQueryEngine.QueryEngine
-{
-    internal class FrnFilePath
-    {
-        private UInt64 fileReferenceNumber;
-
-        private UInt64? parentFileReferenceNumber;
-
-        private string fileName;
-
-        private string path;
-
-        public UInt64 FileReferenceNumber { get { return this.fileReferenceNumber; } }
-
-        public UInt64? ParentFileReferenceNumber { get { return this.parentFileReferenceNumber; } }
-
-        public string FileName { get { return this.fileName; } }
-
-        public string Path
-        { 
-            get
-            {
-                return this.path; 
-            }
-            set
-            {
-                this.path = value;
-            }
-        }
-
-        public FrnFilePath(UInt64 fileReferenceNumber, UInt64? parentFileReferenceNumber, string fileName, string path = null)
-        {
-            this.fileReferenceNumber = fileReferenceNumber;
-            this.parentFileReferenceNumber = parentFileReferenceNumber;
-            this.fileName = fileName;
-            this.path = path;
-        }
-    }
-}

+ 0 - 30
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnControlCode.cs

@@ -1,30 +0,0 @@
-using System;
-
-namespace Y.FileQueryEngine.UsnOperation
-{
-    internal static class UsnControlCode
-    {
-        private const UInt32 FILE_DEVICE_FILE_SYSTEM = 0x00000009;
-        private const UInt32 METHOD_NEITHER          = 3;
-        private const UInt32 METHOD_BUFFERED         = 0;
-        private const UInt32 FILE_ANY_ACCESS         = 0;
-        private const UInt32 FILE_SPECIAL_ACCESS     = 0;
-        private const UInt32 FILE_READ_ACCESS        = 1;
-        private const UInt32 FILE_WRITE_ACCESS       = 2;
-
-        // FSCTL_QUERY_USN_JOURNAL = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 61, METHOD_BUFFERED, FILE_ANY_ACCESS)
-        public const UInt32 FSCTL_QUERY_USN_JOURNAL = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (61 << 2) | METHOD_BUFFERED;
-
-        // FSCTL_ENUM_USN_DATA = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 44,  METHOD_NEITHER, FILE_ANY_ACCESS)
-        public const UInt32 FSCTL_ENUM_USN_DATA = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (44 << 2) | METHOD_NEITHER;
-
-        // FSCTL_CREATE_USN_JOURNAL = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 57,  METHOD_NEITHER, FILE_ANY_ACCESS)
-        public const UInt32 FSCTL_CREATE_USN_JOURNAL = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (57 << 2) | METHOD_NEITHER;
-
-        // FSCTL_READ_USN_JOURNAL = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 46,  METHOD_NEITHER, FILE_ANY_ACCESS)
-        public const UInt32 FSCTL_READ_USN_JOURNAL = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (46 << 2) | METHOD_NEITHER;
-
-        // FSCTL_DELETE_USN_JOURNAL = CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 62, METHOD_BUFFERED, FILE_ANY_ACCESS)
-        public const UInt32 FSCTL_DELETE_USN_JOURNAL = (FILE_DEVICE_FILE_SYSTEM << 16) | (FILE_ANY_ACCESS << 14) | (62 << 2) | METHOD_BUFFERED;
-    }
-}

+ 0 - 50
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnEntry.cs

@@ -1,50 +0,0 @@
-using System;
-using Y.FileQueryEngine.Win32.Constants;
-using Y.FileQueryEngine.Win32.Structures;
-
-namespace Y.FileQueryEngine.UsnOperation
-{
-    /// <summary>
-    /// TODO: Update summary.
-    /// </summary>
-    public class UsnEntry
-    {
-        public uint RecordLength { get; private set; }
-        public ulong FileReferenceNumber { get; private set; }
-
-        /// <summary>
-        /// Gets the parent file reference number.
-        /// When its values is 1407374883553285(0x5000000000005L), it means this file/folder is under drive root
-        /// </summary>
-        /// <value>
-        /// The parent file reference number.
-        /// </value>
-        public ulong ParentFileReferenceNumber { get; private set; }
-        public long Usn { get; private set; }
-        public uint Reason { get; private set; }
-        public uint FileAttributes { get; private set; }
-        public int FileNameLength { get; private set; }
-        public int FileNameOffset { get; private set; }
-        public string FileName { get; private set; }
-        public bool IsFolder
-        {
-            get
-            {
-                return (this.FileAttributes & Win32ApiConstant.FILE_ATTRIBUTE_DIRECTORY) != 0;
-            }
-        }
-
-        public UsnEntry(USN_RECORD_V2 usnRecord)
-        {
-            this.RecordLength = usnRecord.RecordLength;
-            this.FileReferenceNumber = usnRecord.FileReferenceNumber;
-            this.ParentFileReferenceNumber = usnRecord.ParentFileReferenceNumber;
-            this.Usn = usnRecord.Usn;
-            this.Reason = usnRecord.Reason;
-            this.FileAttributes = usnRecord.FileAttributes;
-            this.FileNameLength = usnRecord.FileNameLength;
-            this.FileNameOffset = usnRecord.FileNameOffset;
-            this.FileName = usnRecord.FileName;
-        }
-    }
-}

+ 0 - 14
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnErrorCode.cs

@@ -1,14 +0,0 @@
-using System;
-
-namespace Y.FileQueryEngine.UsnOperation
-{
-    [Flags]
-    internal enum UsnErrorCode
-    {
-        SUCCESS                          = 0,
-        ERROR_INVALID_FUNCTION           = 0x1,
-        ERROR_INVALID_PARAMETER          = 0x57,
-        ERROR_JOURNAL_DELETE_IN_PROGRESS = 0x49A,
-        ERROR_JOURNAL_NOT_ACTIVE         = 0x49B
-    }
-}

+ 0 - 60
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnJournalData.cs

@@ -1,60 +0,0 @@
-using System;
-using System.IO;
-using Y.FileQueryEngine.Win32.Structures;
-
-namespace Y.FileQueryEngine.UsnOperation
-{
-    public class UsnJournalData
-    {
-        public DriveInfo Drive { get; private set; }
-        public UInt64 UsnJournalID { get; private set; }
-        public Int64 FirstUsn { get; private set; }
-        public Int64 NextUsn { get; private set; }
-        public Int64 LowestValidUsn { get; private set; }
-        public Int64 MaxUsn { get; private set; }
-        public UInt64 MaximumSize { get; private set; }
-        public UInt64 AllocationDelta { get; private set; }
-
-        public UsnJournalData(DriveInfo drive, USN_JOURNAL_DATA ntfsUsnJournalData)
-        {
-            this.Drive = drive;
-            this.UsnJournalID = ntfsUsnJournalData.UsnJournalID;
-            this.FirstUsn = ntfsUsnJournalData.FirstUsn;
-            this.NextUsn = ntfsUsnJournalData.NextUsn;
-            this.LowestValidUsn = ntfsUsnJournalData.LowestValidUsn;
-            this.MaxUsn = ntfsUsnJournalData.MaxUsn;
-            this.MaximumSize = ntfsUsnJournalData.MaximumSize;
-            this.AllocationDelta = ntfsUsnJournalData.AllocationDelta;
-        }
-
-        // pesudo-code for checking valid USN journal
-        //private bool IsUsnJournalValid()
-        //{
-
-        //    bool isValid = true;
-        //    //
-        //    // is the JournalID from the previous state == JournalID from current state?
-        //    //
-        //    if (_previousUsnState.UsnJournalID == _currentUsnState.UsnJournalID)
-        //    {
-        //        //
-        //        // is the next usn to process still available
-        //        //
-        //        if (_previousUsnState.NextUsn > _currentUsnState.FirstUsn && _previousUsnState.NextUsn < _currentUsnState.NextUsn)
-        //        {
-        //            isValid = true;
-        //        }
-        //        else
-        //        {
-        //            isValid = false;
-        //        }
-        //    }
-        //    else
-        //    {
-        //        isValid = false;
-        //    }
-
-        //    return isValid;
-        //}
-    }
-}

+ 0 - 325
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnOperator.cs

@@ -1,325 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.ComponentModel;
-using System.Runtime.InteropServices;
-using Y.FileQueryEngine.Win32.Structures;
-using Y.FileQueryEngine.Win32;
-using Y.FileQueryEngine.Win32.Constants;
-
-namespace Y.FileQueryEngine.UsnOperation
-{
-    public class UsnOperator : IDisposable
-    {
-        public delegate void GetEntriesHandler(DriveInfo drive, List<UsnEntry> data);
-
-        protected USN_JOURNAL_DATA ntfsUsnJournalData;
-
-        public DriveInfo Drive
-        {
-            get;
-            private set;
-        }
-
-        public string DriveLetter
-        {
-            get
-            {
-                return this.Drive.Name.TrimEnd(new char[] { '\\', ':' });
-            }
-        }
-
-        public IntPtr DriveRootHandle
-        {
-            get;
-            private set;
-        }
-
-        public UsnOperator(DriveInfo drive)
-        {
-            if (string.Compare(drive.DriveFormat, "ntfs", true) != 0)
-            {
-                throw new ArgumentException("USN journal only exists in NTFS drive.");
-            }
-
-            this.Drive = drive;
-            this.DriveRootHandle = this.GetRootHandle();
-            this.ntfsUsnJournalData = new USN_JOURNAL_DATA();
-        }
-
-        public UsnJournalData GetUsnJournal()
-        {
-            UsnErrorCode usnErrorCode = this.QueryUSNJournal();
-
-            UsnJournalData result = null;
-
-            if (usnErrorCode == UsnErrorCode.SUCCESS)
-            {
-                result = new UsnJournalData(this.Drive, this.ntfsUsnJournalData);
-            }
-
-            return result;
-        }
-
-        public bool CreateUsnJournal(UInt64 maximumSize = 0x10000000, UInt64 allocationDelta = 0x100000)
-        {
-            uint bytesReturnedCount;
-
-            var createUsnJournalData = new CREATE_USN_JOURNAL_DATA();
-            createUsnJournalData.MaximumSize = maximumSize;
-            createUsnJournalData.AllocationDelta = allocationDelta;
-
-            int sizeCujd = Marshal.SizeOf(createUsnJournalData);
-
-            IntPtr cujdBuffer = GetHeapGlobalPtr(sizeCujd);
-
-            Marshal.StructureToPtr(createUsnJournalData, cujdBuffer, true);
-
-            bool isSuccess = Win32Api.DeviceIoControl(
-                this.DriveRootHandle,
-                UsnControlCode.FSCTL_CREATE_USN_JOURNAL,
-                cujdBuffer,
-                sizeCujd,
-                IntPtr.Zero,
-                0,
-                out bytesReturnedCount,
-                IntPtr.Zero);
-
-            Marshal.FreeHGlobal(cujdBuffer);
-
-            return isSuccess;
-        }
-
-        public List<UsnEntry> GetEntries()
-        {
-            var result = new List<UsnEntry>();
-
-            UsnErrorCode usnErrorCode = this.QueryUSNJournal();
-            if (usnErrorCode == UsnErrorCode.SUCCESS)
-            {
-                MFT_ENUM_DATA mftEnumData = new MFT_ENUM_DATA();
-                mftEnumData.StartFileReferenceNumber = 0;
-                mftEnumData.LowUsn = 0;
-                mftEnumData.HighUsn = this.ntfsUsnJournalData.NextUsn;
-                int sizeMftEnumData = Marshal.SizeOf(mftEnumData);
-                IntPtr ptrMftEnumData = GetHeapGlobalPtr(sizeMftEnumData);
-                Marshal.StructureToPtr(mftEnumData, ptrMftEnumData, true);
-                int ptrDataSize = sizeof(UInt64) + 10000;
-                IntPtr ptrData = GetHeapGlobalPtr(ptrDataSize);
-                uint outBytesCount;
-
-                while (false != Win32Api.DeviceIoControl(
-                    this.DriveRootHandle,
-                    UsnControlCode.FSCTL_ENUM_USN_DATA,
-                    ptrMftEnumData,
-                    sizeMftEnumData,
-                    ptrData,
-                    ptrDataSize,
-                    out outBytesCount,
-                    IntPtr.Zero))
-                {
-                    // ptrData includes following struct:
-                    //typedef struct
-                    //{
-                    //    USN             LastFileReferenceNumber;
-                    //    USN_RECORD_V2   Record[1];
-                    //} *PENUM_USN_DATA;
-
-                    IntPtr ptrUsnRecord = new IntPtr(ptrData.ToInt32() + sizeof(Int64));
-
-                    while (outBytesCount > 60)
-                    {
-                        var usnRecord = new USN_RECORD_V2(ptrUsnRecord);
-                        result.Add(new UsnEntry(usnRecord));
-                        ptrUsnRecord = new IntPtr(ptrUsnRecord.ToInt32() + usnRecord.RecordLength);
-                        outBytesCount -= usnRecord.RecordLength;
-                    }
-                    Marshal.WriteInt64(ptrMftEnumData, Marshal.ReadInt64(ptrData, 0));
-                }
-
-                Marshal.FreeHGlobal(ptrData);
-                Marshal.FreeHGlobal(ptrMftEnumData);
-            }
-
-            return result;
-        }
-        public void GetEntries(long usn, ulong fileNumber, GetEntriesHandler handler, int count)
-        {
-            List<UsnEntry> result = new List<UsnEntry>();
-            UsnErrorCode usnErrorCode = this.QueryUSNJournal();
-            if (usnErrorCode == UsnErrorCode.SUCCESS)
-            {
-                MFT_ENUM_DATA mftEnumData = new MFT_ENUM_DATA();
-                mftEnumData.StartFileReferenceNumber = fileNumber;
-                mftEnumData.LowUsn = 0;
-                mftEnumData.HighUsn = this.ntfsUsnJournalData.NextUsn;
-                int sizeMftEnumData = Marshal.SizeOf(mftEnumData);
-                IntPtr ptrMftEnumData = GetHeapGlobalPtr(sizeMftEnumData);
-                Marshal.StructureToPtr(mftEnumData, ptrMftEnumData, true);
-                int ptrDataSize = sizeof(UInt64) + 10000;
-                IntPtr ptrData = GetHeapGlobalPtr(ptrDataSize);
-                uint outBytesCount;
-
-                while (false != Win32Api.DeviceIoControl(
-                    this.DriveRootHandle,
-                    UsnControlCode.FSCTL_ENUM_USN_DATA,
-                    ptrMftEnumData,
-                    sizeMftEnumData,
-                    ptrData,
-                    ptrDataSize,
-                    out outBytesCount,
-                    IntPtr.Zero))
-                {
-                    long purvalue = ptrData.ToInt64() + sizeof(long);
-                    IntPtr ptrUsnRecord = new IntPtr(purvalue);
-
-                    while (outBytesCount > 60)
-                    {
-                        var usnRecord = new USN_RECORD_V2(ptrUsnRecord);
-
-                        UsnEntry rec = new UsnEntry(usnRecord);
-                        if (rec.FileReferenceNumber > fileNumber || rec.Usn > usn)
-                        {
-                            result.Add(rec);
-                        }
-
-                        ptrUsnRecord = new IntPtr(ptrUsnRecord.ToInt64() + usnRecord.RecordLength);
-                        outBytesCount -= usnRecord.RecordLength;
-
-                        if (result.Count >= count)
-                        {
-                            handler?.Invoke(Drive, result);
-                            result = new List<UsnEntry>();
-                        }
-                    }
-                    Marshal.WriteInt64(ptrMftEnumData, Marshal.ReadInt64(ptrData, 0));
-                }
-
-                Marshal.FreeHGlobal(ptrData);
-                Marshal.FreeHGlobal(ptrMftEnumData);
-            }
-            handler?.Invoke(Drive, result);
-        }
-
-        public bool UsnIsExist(long usn)
-        {
-            bool rs = false;
-            UsnErrorCode usnErrorCode = QueryUSNJournal();
-            if (ntfsUsnJournalData.NextUsn < usn) return rs;
-
-            if (usnErrorCode == UsnErrorCode.SUCCESS)
-            {
-                MFT_ENUM_DATA mftEnumData = new MFT_ENUM_DATA();
-                mftEnumData.StartFileReferenceNumber = 0;
-                mftEnumData.LowUsn = usn;
-                mftEnumData.HighUsn = usn;
-                int sizeMftEnumData = Marshal.SizeOf(mftEnumData);
-                IntPtr ptrMftEnumData = GetHeapGlobalPtr(sizeMftEnumData);
-                Marshal.StructureToPtr(mftEnumData, ptrMftEnumData, true);
-                int ptrDataSize = sizeof(UInt64) + 10000;
-                IntPtr ptrData = GetHeapGlobalPtr(ptrDataSize);
-                uint outBytesCount;
-
-                while (false != Win32Api.DeviceIoControl(
-                    this.DriveRootHandle,
-                    UsnControlCode.FSCTL_ENUM_USN_DATA,
-                    ptrMftEnumData,
-                    sizeMftEnumData,
-                    ptrData,
-                    ptrDataSize,
-                    out outBytesCount,
-                    IntPtr.Zero))
-                {
-                    IntPtr ptrUsnRecord = new IntPtr(ptrData.ToInt32() + sizeof(Int64));
-
-                    while (outBytesCount > 60)
-                    {
-                        var usnRecord = new USN_RECORD_V2(ptrUsnRecord);
-                        ptrUsnRecord = new IntPtr(ptrUsnRecord.ToInt32() + usnRecord.RecordLength);
-                        outBytesCount -= usnRecord.RecordLength;
-                        rs = true;
-                    }
-                    Marshal.WriteInt64(ptrMftEnumData, Marshal.ReadInt64(ptrData, 0));
-                }
-
-                Marshal.FreeHGlobal(ptrData);
-                Marshal.FreeHGlobal(ptrMftEnumData);
-            }
-            return rs;
-        }
-        private static IntPtr GetHeapGlobalPtr(int size)
-        {
-            IntPtr buffer = Marshal.AllocHGlobal(size);
-            Win32Api.ZeroMemory(buffer, size);
-
-            return buffer;
-        }
-
-        private UsnErrorCode QueryUSNJournal()
-        {
-            int sizeUsnJournalData = Marshal.SizeOf(this.ntfsUsnJournalData);
-
-            USN_JOURNAL_DATA tempUsnJournalData;
-
-            uint bytesReturnedCount;
-
-            bool isSuccess = Win32Api.DeviceIoControl(
-                this.DriveRootHandle,
-                UsnControlCode.FSCTL_QUERY_USN_JOURNAL,
-                IntPtr.Zero,
-                0,
-                out tempUsnJournalData,
-                sizeUsnJournalData,
-                out bytesReturnedCount,
-                IntPtr.Zero);
-
-            this.ntfsUsnJournalData = tempUsnJournalData;
-
-            //if (isSuccess)
-            //{
-            //    return tempUsnJournalData;
-            //}
-            //else
-            //{
-            //int win32ErrorCode = Marshal.GetLastWin32Error();
-            //if (Enum.IsDefined(typeof(UsnErrorCode), win32ErrorCode))
-            //{
-            //    var usnErrorCode = (UsnErrorCode)win32ErrorCode;
-            //}
-
-            //    throw new IOException("Drive returned false for Query Usn Journal", new Win32Exception(win32ErrorCode));
-            //}
-
-            return (UsnErrorCode)Marshal.GetLastWin32Error();
-        }
-
-        private IntPtr GetRootHandle()
-        {
-            string volume = string.Format("\\\\.\\{0}:", this.DriveLetter);
-
-            var result = Win32Api.CreateFile(
-                volume,
-                Win32ApiConstant.GENERIC_READ,
-                Win32ApiConstant.FILE_SHARE_READ | Win32ApiConstant.FILE_SHARE_WRITE,
-                IntPtr.Zero,
-                Win32ApiConstant.OPEN_EXISTING,
-                0,
-                IntPtr.Zero);
-
-            if (result.ToInt32() == Win32ApiConstant.INVALID_HANDLE_VALUE)
-            {
-                throw new IOException("Drive returned invalid root handle", new Win32Exception(Marshal.GetLastWin32Error()));
-            }
-
-            return result;
-        }
-
-        public void Dispose()
-        {
-            if (this.DriveRootHandle != null && this.DriveRootHandle.ToInt32() != Win32ApiConstant.INVALID_HANDLE_VALUE)
-            {
-                Win32Api.CloseHandle(this.DriveRootHandle);
-            }
-        }
-    }
-}

+ 0 - 30
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/UsnOperation/UsnReasonCode.cs

@@ -1,30 +0,0 @@
-using System;
-
-namespace Y.FileQueryEngine.UsnOperation
-{
-    [Flags]
-    internal enum UsnReasonCode : uint
-    {
-        USN_REASON_DATA_OVERWRITE        = 0x00000001,
-        USN_REASON_DATA_EXTEND           = 0x00000002,
-        USN_REASON_DATA_TRUNCATION       = 0x00000004,
-        USN_REASON_NAMED_DATA_OVERWRITE  = 0x00000010,
-        USN_REASON_NAMED_DATA_EXTEND     = 0x00000020,
-        USN_REASON_NAMED_DATA_TRUNCATION = 0x00000040,
-        USN_REASON_FILE_CREATE           = 0x00000100,
-        USN_REASON_FILE_DELETE           = 0x00000200,
-        USN_REASON_EA_CHANGE             = 0x00000400,
-        USN_REASON_SECURITY_CHANGE       = 0x00000800,
-        USN_REASON_RENAME_OLD_NAME       = 0x00001000,
-        USN_REASON_RENAME_NEW_NAME       = 0x00002000,
-        USN_REASON_INDEXABLE_CHANGE      = 0x00004000,
-        USN_REASON_BASIC_INFO_CHANGE     = 0x00008000,
-        USN_REASON_HARD_LINK_CHANGE      = 0x00010000,
-        USN_REASON_COMPRESSION_CHANGE    = 0x00020000,
-        USN_REASON_ENCRYPTION_CHANGE     = 0x00040000,
-        USN_REASON_OBJECT_ID_CHANGE      = 0x00080000,
-        USN_REASON_REPARSE_POINT_CHANGE  = 0x00100000,
-        USN_REASON_STREAM_CHANGE         = 0x00200000,
-        USN_REASON_CLOSE                 = 0x80000000
-    }
-}

+ 0 - 29
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Constants/Win32ApiConstant.cs

@@ -1,29 +0,0 @@
-using System;
-
-namespace Y.FileQueryEngine.Win32.Constants
-{
-    internal sealed class Win32ApiConstant
-    {
-        public const UInt32 GENERIC_READ = 0x80000000;
-        public const UInt32 GENERIC_WRITE = 0x40000000;
-        public const UInt32 FILE_SHARE_READ = 0x00000001;
-        public const UInt32 FILE_SHARE_WRITE = 0x00000002;
-        public const UInt32 FILE_ATTRIBUTE_DIRECTORY = 0x00000010;
-
-        public const UInt32 CREATE_NEW = 1;
-        public const UInt32 CREATE_ALWAYS = 2;
-        public const UInt32 OPEN_EXISTING = 3;
-        public const UInt32 OPEN_ALWAYS = 4;
-        public const UInt32 TRUNCATE_EXISTING = 5;
-
-        public const UInt32 FILE_ATTRIBUTE_NORMAL = 0x80;
-        public const UInt32 FILE_FLAG_BACKUP_SEMANTICS = 0x02000000;
-        public const Int32 INVALID_HANDLE_VALUE = -1;
-
-        public static Int32 GWL_EXSTYLE = -20;
-        public static Int32 WS_EX_LAYERED = 0x00080000;
-        public static Int32 WS_EX_TRANSPARENT = 0x00000020;
-
-        public const UInt32 FSCTL_GET_OBJECT_ID = 0x9009c;
-    }
-}

+ 0 - 26
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/BY_HANDLE_FILE_INFORMATION.cs

@@ -1,26 +0,0 @@
-using System.Runtime.InteropServices;
-using FILETIME = System.Runtime.InteropServices.ComTypes.FILETIME;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    /// <summary>
-    /// By Handle File Information structure, contains File Attributes(32bits), Creation Time(FILETIME),
-    /// Last Access Time(FILETIME), Last Write Time(FILETIME), Volume Serial Number(32bits),
-    /// File Size High(32bits), File Size Low(32bits), Number of Links(32bits), File Index High(32bits),
-    /// File Index Low(32bits).
-    /// </summary>
-    [StructLayout(LayoutKind.Sequential, Pack = 1)]
-    internal struct BY_HANDLE_FILE_INFORMATION
-    {
-        public uint FileAttributes;
-        public FILETIME CreationTime;
-        public FILETIME LastAccessTime;
-        public FILETIME LastWriteTime;
-        public uint VolumeSerialNumber;
-        public uint FileSizeHigh;
-        public uint FileSizeLow;
-        public uint NumberOfLinks;
-        public uint FileIndexHigh;
-        public uint FileIndexLow;
-    }
-}

+ 0 - 15
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/CREATE_USN_JOURNAL_DATA.cs

@@ -1,15 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    /// <summary>
-    /// Create USN Journal Data structure, contains Maximum Size(64bits) and Allocation Delta(64(bits).
-    /// </summary>
-    [StructLayout(LayoutKind.Sequential, Pack = 1)]
-    internal struct CREATE_USN_JOURNAL_DATA
-    {
-        public UInt64 MaximumSize;
-        public UInt64 AllocationDelta;
-    }
-}

+ 0 - 17
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/MFT_ENUM_DATA.cs

@@ -1,17 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    /// <summary>
-    /// MFT Enum Data structure, contains Start File Reference Number(64bits), Low USN(64bits),
-    /// High USN(64bits).
-    /// </summary>
-    [StructLayout(LayoutKind.Sequential, Pack = 1)]
-    internal struct MFT_ENUM_DATA
-    {
-        public UInt64 StartFileReferenceNumber;
-        public Int64 LowUsn;
-        public Int64 HighUsn;
-    }
-}

+ 0 - 17
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/POINT.cs

@@ -1,17 +0,0 @@
-using System.Runtime.InteropServices;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    [StructLayout(LayoutKind.Sequential)]
-    internal struct POINT
-    {
-        public int X;
-        public int Y;
-
-        public POINT(int x, int y)
-        {
-            this.X = x;
-            this.Y = y;
-        }
-    }
-}

+ 0 - 20
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/READ_USN_JOURNAL_DATA.cs

@@ -1,20 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    /// <summary>
-    /// Contains the Start USN(64bits), Reason Mask(32bits), Return Only on Close flag(32bits),
-    /// Time Out(64bits), Bytes To Wait For(64bits), and USN Journal ID(64bits).
-    /// </summary>
-    [StructLayout(LayoutKind.Sequential, Pack = 1)]
-    internal struct READ_USN_JOURNAL_DATA
-    {
-        public Int64 StartUsn;
-        public UInt32 ReasonMask;
-        public UInt32 ReturnOnlyOnClose;
-        public UInt64 Timeout;
-        public UInt64 bytesToWaitFor;
-        public UInt64 UsnJournalId;
-    }
-}

+ 0 - 21
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/USN_JOURNAL_DATA.cs

@@ -1,21 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    /// <summary>
-    /// USN Journal Data structure, contains USN Journal ID(64bits), First USN(64bits), Next USN(64bits),
-    /// Lowest Valid USN(64bits), Max USN(64bits), Maximum Size(64bits) and Allocation Delta(64bits).
-    /// </summary>
-    [StructLayout(LayoutKind.Sequential, Pack = 1)]
-    public struct USN_JOURNAL_DATA
-    {
-        public UInt64 UsnJournalID;
-        public Int64 FirstUsn;
-        public Int64 NextUsn;
-        public Int64 LowestValidUsn;
-        public Int64 MaxUsn;
-        public UInt64 MaximumSize;
-        public UInt64 AllocationDelta;
-    }
-}

+ 0 - 48
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Structures/USN_RECORD_V2.cs

@@ -1,48 +0,0 @@
-using System;
-using System.Runtime.InteropServices;
-
-namespace Y.FileQueryEngine.Win32.Structures
-{
-    /// <summary>
-    /// Contains the USN Record Length(32bits), USN(64bits), File Reference Number(64bits), 
-    /// Parent File Reference Number(64bits), Reason Code(32bits), File Attributes(32bits),
-    /// File Name Length(32bits), the File Name Offset(32bits) and the File Name.
-    /// </summary>
-    public class USN_RECORD_V2
-    {
-        private const int FR_OFFSET = 8;
-        private const int PFR_OFFSET = 16;
-        private const int USN_OFFSET = 24;
-        private const int REASON_OFFSET = 40;
-        private const int FA_OFFSET = 52;
-        private const int FNL_OFFSET = 56;
-        private const int FN_OFFSET = 58;
-
-        public UInt32 RecordLength { get; private set; }
-        public UInt64 FileReferenceNumber { get; private set; }
-        public UInt64 ParentFileReferenceNumber { get; private set; }
-        public Int64 Usn { get; private set; }
-        public UInt32 Reason { get; private set; }
-        public UInt32 FileAttributes { get; private set; }
-        public Int32 FileNameLength { get; private set; }
-        public Int32 FileNameOffset { get; private set; }
-        public string FileName { get; private set; }
-
-        /// <summary>
-        /// USN Record Constructor
-        /// </summary>
-        /// <param name="usnRecordPtr">Buffer of bytes representing the USN Record</param>
-        public USN_RECORD_V2(IntPtr usnRecordPtr)
-        {
-            this.RecordLength = (UInt32)Marshal.ReadInt32(usnRecordPtr);
-            this.FileReferenceNumber = (UInt64)Marshal.ReadInt64(usnRecordPtr, FR_OFFSET);
-            this.ParentFileReferenceNumber = (UInt64)Marshal.ReadInt64(usnRecordPtr, PFR_OFFSET);
-            this.Usn = Marshal.ReadInt64(usnRecordPtr, USN_OFFSET);
-            this.Reason = (UInt32)Marshal.ReadInt32(usnRecordPtr, REASON_OFFSET);
-            this.FileAttributes = (UInt32)Marshal.ReadInt32(usnRecordPtr, FA_OFFSET);
-            this.FileNameLength = Marshal.ReadInt16(usnRecordPtr, FNL_OFFSET);
-            this.FileNameOffset = Marshal.ReadInt16(usnRecordPtr, FN_OFFSET);
-            this.FileName = Marshal.PtrToStringUni(new IntPtr(usnRecordPtr.ToInt64() + this.FileNameOffset), this.FileNameLength / sizeof(char));
-        }
-    }
-}

+ 0 - 556
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Win32/Win32Api.cs

@@ -1,556 +0,0 @@
-using System;
-using System.Text;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography;
-using System.ComponentModel;
-using Y.FileQueryEngine.Win32.Constants;
-using Y.FileQueryEngine.Win32.Structures;
-
-namespace Y.FileQueryEngine.Win32
-{
-    internal class Win32Api
-    {
-        private const string KERNEL32DLL = "kernel32.dll";
-
-        private const string USER32DLL = "user32.dll";
-
-        #region dll imports
-
-        /// <summary>
-        /// Creates the file specified by 'lpFileName' with desired access, share mode, security attributes,
-        /// creation disposition, flags and attributes.
-        /// </summary>
-        /// <param name="lpFileName">Fully qualified path to a file</param>
-        /// <param name="dwDesiredAccess">Requested access (write, read, read/write, none)</param>
-        /// <param name="dwShareMode">Share mode (read, write, read/write, delete, all, none)</param>
-        /// <param name="lpSecurityAttributes">IntPtr to a 'SECURITY_ATTRIBUTES' structure</param>
-        /// <param name="dwCreationDisposition">Action to take on file or device specified by 'lpFileName' (CREATE_NEW,
-        /// CREATE_ALWAYS, OPEN_ALWAYS, OPEN_EXISTING, TRUNCATE_EXISTING)</param>
-        /// <param name="dwFlagsAndAttributes">File or device attributes and flags (typically FILE_ATTRIBUTE_NORMAL)</param>
-        /// <param name="hTemplateFile">IntPtr to a valid handle to a template file with 'GENERIC_READ' access right</param>
-        /// <returns>IntPtr handle to the 'lpFileName' file or device or 'INVALID_HANDLE_VALUE'</returns>
-        [DllImport(KERNEL32DLL, SetLastError = true)]
-        public static extern IntPtr CreateFile(string lpFileName,
-            uint dwDesiredAccess,
-            uint dwShareMode,
-            IntPtr lpSecurityAttributes,
-            uint dwCreationDisposition,
-            uint dwFlagsAndAttributes,
-            IntPtr hTemplateFile);
-
-        /// <summary>
-        /// Closes the file specified by the IntPtr 'hObject'.
-        /// </summary>
-        /// <param name="hObject">IntPtr handle to a file</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL, SetLastError = true)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool CloseHandle(
-            IntPtr hObject);
-
-        /// <summary>
-        /// Fills the 'BY_HANDLE_FILE_INFORMATION' structure for the file specified by 'hFile'.
-        /// </summary>
-        /// <param name="hFile">Fully qualified name of a file</param>
-        /// <param name="lpFileInformation">Out BY_HANDLE_FILE_INFORMATION argument</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL, SetLastError = true)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool GetFileInformationByHandle(
-            IntPtr hFile,
-            out BY_HANDLE_FILE_INFORMATION lpFileInformation);
-
-        /// <summary>
-        /// Deletes the file specified by 'fileName'.
-        /// </summary>
-        /// <param name="fileName">Fully qualified path to the file to delete</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL, SetLastError = true)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool DeleteFile(
-            string fileName);
-
-        /// <summary>
-        /// Read data from the file specified by 'hFile'.
-        /// </summary>
-        /// <param name="hFile">IntPtr handle to the file to read</param>
-        /// <param name="lpBuffer">IntPtr to a buffer of bytes to receive the bytes read from 'hFile'</param>
-        /// <param name="nNumberOfBytesToRead">Number of bytes to read from 'hFile'</param>
-        /// <param name="lpNumberOfBytesRead">Number of bytes read from 'hFile'</param>
-        /// <param name="lpOverlapped">IntPtr to an 'OVERLAPPED' structure</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool ReadFile(
-            IntPtr hFile,
-            IntPtr lpBuffer,
-            uint nNumberOfBytesToRead,
-            out uint lpNumberOfBytesRead,
-            IntPtr lpOverlapped);
-
-        /// <summary>
-        /// Writes the 
-        /// </summary>
-        /// <param name="hFile">IntPtr handle to the file to write</param>
-        /// <param name="bytes">IntPtr to a buffer of bytes to write to 'hFile'</param>
-        /// <param name="nNumberOfBytesToWrite">Number of bytes in 'lpBuffer' to write to 'hFile'</param>
-        /// <param name="lpNumberOfBytesWritten">Number of bytes written to 'hFile'</param>
-        /// <param name="overlapped">IntPtr to an 'OVERLAPPED' structure</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL, SetLastError = true, CharSet = CharSet.Unicode)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool WriteFile(
-            IntPtr hFile,
-            IntPtr bytes,
-            uint nNumberOfBytesToWrite,
-            out uint lpNumberOfBytesWritten,
-            int overlapped);
-
-        /// <summary>
-        /// Writes the data in 'lpBuffer' to the file specified by 'hFile'.
-        /// </summary>
-        /// <param name="hFile">IntPtr handle to file to write</param>
-        /// <param name="lpBuffer">Buffer of bytes to write to file 'hFile'</param>
-        /// <param name="nNumberOfBytesToWrite">Number of bytes in 'lpBuffer' to write to 'hFile'</param>
-        /// <param name="lpNumberOfBytesWritten">Number of bytes written to 'hFile'</param>
-        /// <param name="overlapped">IntPtr to an 'OVERLAPPED' structure</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL, SetLastError = true, CharSet = CharSet.Unicode)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool WriteFile(
-            IntPtr hFile,
-            byte[] lpBuffer,
-            uint nNumberOfBytesToWrite,
-            out uint lpNumberOfBytesWritten,
-            int overlapped);
-
-        /// <summary>
-        /// Sends the 'dwIoControlCode' to the device specified by 'hDevice'.
-        /// </summary>
-        /// <param name="hDevice">IntPtr handle to the device to receive 'dwIoControlCode'</param>
-        /// <param name="dwIoControlCode">Device IO Control Code to send</param>
-        /// <param name="lpInBuffer">Input buffer if required</param>
-        /// <param name="nInBufferSize">Size of input buffer</param>
-        /// <param name="lpOutBuffer">Output buffer if required</param>
-        /// <param name="nOutBufferSize">Size of output buffer</param>
-        /// <param name="lpBytesReturned">Number of bytes returned in output buffer</param>
-        /// <param name="lpOverlapped">IntPtr to an 'OVERLAPPED' structure</param>
-        /// <returns>'true' if successful, otherwise 'false'</returns>
-        [DllImport(KERNEL32DLL, ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool DeviceIoControl(
-            IntPtr hDevice,
-            UInt32 dwIoControlCode,
-            IntPtr lpInBuffer,
-            Int32 nInBufferSize,
-            out USN_JOURNAL_DATA lpOutBuffer,
-            Int32 nOutBufferSize,
-            out uint lpBytesReturned,
-            IntPtr lpOverlapped);
-
-        /// <summary>
-        /// Sends the control code 'dwIoControlCode' to the device driver specified by 'hDevice'.
-        /// </summary>
-        /// <param name="hDevice">IntPtr handle to the device to receive 'dwIoControlCode</param>
-        /// <param name="dwIoControlCode">Device IO Control Code to send</param>
-        /// <param name="lpInBuffer">Input buffer if required</param>
-        /// <param name="nInBufferSize">Size of input buffer </param>
-        /// <param name="lpOutBuffer">Output buffer if required</param>
-        /// <param name="nOutBufferSize">Size of output buffer</param>
-        /// <param name="lpBytesReturned">Number of bytes returned</param>
-        /// <param name="lpOverlapped">Pointer to an 'OVERLAPPED' struture</param>
-        /// <returns></returns>
-        [DllImport(KERNEL32DLL, ExactSpelling = true, SetLastError = true, CharSet = CharSet.Auto)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool DeviceIoControl(
-            IntPtr hDevice,
-            UInt32 dwIoControlCode,
-            IntPtr lpInBuffer,
-            Int32 nInBufferSize,
-            IntPtr lpOutBuffer,
-            Int32 nOutBufferSize,
-            out uint lpBytesReturned,
-            IntPtr lpOverlapped);
-
-        /// <summary>
-        /// Sets the number of bytes specified by 'size' of the memory associated with the argument 'ptr' 
-        /// to zero.
-        /// </summary>
-        /// <param name="ptr"></param>
-        /// <param name="size"></param>
-        [DllImport(KERNEL32DLL)]
-        public static extern void ZeroMemory(IntPtr ptr, int size);
-
-        [DllImport(USER32DLL, CharSet = CharSet.Auto)]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        public static extern bool GetCursorPos(out POINT pt);
-
-        [DllImport(USER32DLL, CharSet = CharSet.Auto)]
-        public static extern Int32 GetWindowLong(IntPtr hWnd, Int32 nIndex);
-
-        [DllImport(USER32DLL, CharSet = CharSet.Auto)]
-        public static extern Int32 SetWindowLong(IntPtr hWnd, Int32 nIndex, Int32 newVal);
-
-        #endregion
-
-        #region functions
-
-        /// <summary>
-        /// Writes the data in 'text' to the alternate stream ':Description' of the file 'currentFile.
-        /// </summary>
-        /// <param name="currentfile">Fully qualified path to a file</param>
-        /// <param name="text">Data to write to the ':Description' stream</param>
-        public static void WriteAlternateStream(string currentfile, string text)
-        {
-            string AltStreamDesc = currentfile + ":Description";
-            IntPtr txtBuffer = IntPtr.Zero;
-            IntPtr hFile = IntPtr.Zero;
-            DeleteFile(AltStreamDesc);
-            string descText = text.TrimEnd(' ');
-
-            try
-            {
-                hFile = CreateFile(AltStreamDesc, Win32ApiConstant.GENERIC_WRITE, 0, IntPtr.Zero,
-                                       Win32ApiConstant.CREATE_ALWAYS, 0, IntPtr.Zero);
-                if (-1 != hFile.ToInt32())
-                {
-                    txtBuffer = Marshal.StringToHGlobalUni(descText);
-                    uint nBytes, count;
-                    nBytes = (uint)descText.Length;
-                    bool bRtn = WriteFile(hFile, txtBuffer, sizeof(char) * nBytes, out count, 0);
-                    if (!bRtn)
-                    {
-                        if ((sizeof(char) * nBytes) != count)
-                        {
-                            throw new Exception(string.Format("Bytes written {0} should be {1} for file {2}.",
-                                count, sizeof(char) * nBytes, AltStreamDesc));
-                        }
-                        else
-                        {
-                            throw new Exception("WriteFile() returned false");
-                        }
-                    }
-                }
-                else
-                {
-                    throw new Win32Exception(Marshal.GetLastWin32Error());
-                }
-            }
-            catch (Exception exception)
-            {
-                //string msg = string.Format("Exception caught in WriteAlternateStream()\n  '{0}'\n  for file '{1}'.",
-                //    exception.Message, AltStreamDesc);
-                //Console.WriiteLine(msg);
-                throw;
-            }
-            finally
-            {
-                CloseHandle(hFile);
-                hFile = IntPtr.Zero;
-                Marshal.FreeHGlobal(txtBuffer);
-                GC.Collect();
-            }
-        }
-
-        /// <summary>
-        /// Adds the ':Description' alternate stream name to the argument 'currentFile'.
-        /// </summary>
-        /// <param name="currentfile">The file whose alternate stream is to be read</param>
-        /// <returns>A string value representing the value of the alternate stream</returns>
-        public static string ReadAlternateStream(string currentfile)
-        {
-            string AltStreamDesc = currentfile + ":Description";
-            string returnstring = ReadAlternateStreamEx(AltStreamDesc);
-            return returnstring;
-        }
-
-        /// <summary>
-        /// Reads the stream represented by 'currentFile'.
-        /// </summary>
-        /// <param name="currentfile">Fully qualified path including stream</param>
-        /// <returns>Value of the alternate stream as a string</returns>
-        public static string ReadAlternateStreamEx(string currentfile)
-        {
-            string returnstring = string.Empty;
-            IntPtr hFile = IntPtr.Zero;
-            IntPtr buffer = IntPtr.Zero;
-            try
-            {
-                hFile = CreateFile(currentfile, Win32ApiConstant.GENERIC_READ, 0, IntPtr.Zero, Win32ApiConstant.OPEN_EXISTING, 0, IntPtr.Zero);
-                if (-1 != hFile.ToInt32())
-                {
-                    buffer = Marshal.AllocHGlobal(1000 * sizeof(char));
-                    ZeroMemory(buffer, 1000 * sizeof(char));
-                    uint nBytes;
-                    bool bRtn = ReadFile(hFile, buffer, 1000 * sizeof(char), out nBytes, IntPtr.Zero);
-                    if (bRtn)
-                    {
-                        if (nBytes > 0)
-                        {
-                            returnstring = Marshal.PtrToStringAuto(buffer);
-                            //byte[] byteBuffer = new byte[nBytes];
-                            //for (int i = 0; i < nBytes; i++)
-                            //{
-                            //    byteBuffer[i] = Marshal.ReadByte(buffer, i);
-                            //}
-                            //returnstring = Encoding.Unicode.GetString(byteBuffer, 0, (int)nBytes);
-                        }
-                        else
-                        {
-                            throw new Exception("ReadFile() returned true but read zero bytes");
-                        }
-                    }
-                    else
-                    {
-                        if (nBytes <= 0)
-                        {
-                            throw new Exception("ReadFile() read zero bytes.");
-                        }
-                        else
-                        {
-                            throw new Exception("ReadFile() returned false");
-                        }
-                    }
-                }
-                else
-                {
-                    Exception excptn = new Win32Exception(Marshal.GetLastWin32Error());
-                    if (!excptn.Message.Contains("cannot find the file"))
-                    {
-                        throw excptn;
-                    }
-                }
-            }
-            catch (Exception exception)
-            {
-                //string msg = string.Format("Exception caught in ReadAlternateStream(), '{0}'\n  for file '{1}'.",
-                //    exception.Message, currentfile);
-                //Console.WriteLine(msg);
-                //Console.WriteLine(exception.Message);
-                throw;
-            }
-            finally
-            {
-                CloseHandle(hFile);
-                hFile = IntPtr.Zero;
-                if (buffer != IntPtr.Zero)
-                {
-                    Marshal.FreeHGlobal(buffer);
-                }
-                GC.Collect();
-            }
-            return returnstring;
-        }
-
-        /// <summary>
-        /// Read the encrypted alternate stream specified by 'currentFile'.
-        /// </summary>
-        /// <param name="currentfile">Fully qualified path to encrypted alternate stream</param>
-        /// <returns>The un-encrypted value of the alternate stream as a string</returns>
-        public static string ReadAlternateStreamEncrypted(string currentfile)
-        {
-            string returnstring = string.Empty;
-            IntPtr buffer = IntPtr.Zero;
-            IntPtr hFile = IntPtr.Zero;
-            try
-            {
-                hFile = CreateFile(currentfile, Win32ApiConstant.GENERIC_READ, 0, IntPtr.Zero, Win32ApiConstant.OPEN_EXISTING, 0, IntPtr.Zero);
-                if (-1 != hFile.ToInt32())
-                {
-                    buffer = Marshal.AllocHGlobal(1000 * sizeof(char));
-                    ZeroMemory(buffer, 1000 * sizeof(char));
-                    uint nBytes;
-                    bool bRtn = ReadFile(hFile, buffer, 1000 * sizeof(char), out nBytes, IntPtr.Zero);
-                    if (0 != nBytes)
-                    {
-                        returnstring = DecryptLicenseString(buffer, nBytes);
-                    }
-                }
-                else
-                {
-                    Exception excptn = new Win32Exception(Marshal.GetLastWin32Error());
-                    if (!excptn.Message.Contains("cannot find the file"))
-                    {
-                        throw excptn;
-                    }
-                }
-            }
-            catch (Exception exception)
-            {
-                Console.WriteLine("Exception caught in ReadAlternateStreamEncrypted()");
-                Console.WriteLine(exception.Message);
-            }
-            finally
-            {
-                CloseHandle(hFile);
-                hFile = IntPtr.Zero;
-                if (buffer != IntPtr.Zero)
-                {
-                    Marshal.FreeHGlobal(buffer);
-                }
-                GC.Collect();
-            }
-            return returnstring;
-        }
-
-        /// <summary>
-        /// Writes the value of 'LicenseString' as an encrypted stream to the file:stream specified
-        /// by 'currentFile'.
-        /// </summary>
-        /// <param name="currentFile">Fully qualified path to the alternate stream</param>
-        /// <param name="LicenseString">The string value to encrypt and write to the alternate stream</param>
-        public static void WriteAlternateStreamEncrypted(string currentFile, string LicenseString)
-        {
-            RC2CryptoServiceProvider rc2 = null;
-            CryptoStream cs = null;
-            MemoryStream ms = null;
-            uint count = 0;
-            IntPtr buffer = IntPtr.Zero;
-            IntPtr hFile = IntPtr.Zero;
-            try
-            {
-                Encoding enc = Encoding.Unicode;
-
-                byte[] ba = enc.GetBytes(LicenseString);
-                ms = new MemoryStream();
-
-                rc2 = new RC2CryptoServiceProvider();
-                rc2.Key = GetBytesFromHexString("7a6823a42a3a3ae27057c647db812d0");
-                rc2.IV = GetBytesFromHexString("827d961224d99b2d");
-
-                cs = new CryptoStream(ms, rc2.CreateEncryptor(), CryptoStreamMode.Write);
-                cs.Write(ba, 0, ba.Length);
-                cs.FlushFinalBlock();
-
-                buffer = Marshal.AllocHGlobal(1000 * sizeof(char));
-                ZeroMemory(buffer, 1000 * sizeof(char));
-                uint nBytes = (uint)ms.Length;
-                Marshal.Copy(ms.GetBuffer(), 0, buffer, (int)nBytes);
-
-                DeleteFile(currentFile);
-                hFile = CreateFile(currentFile, Win32ApiConstant.GENERIC_WRITE, 0, IntPtr.Zero,
-                                       Win32ApiConstant.CREATE_ALWAYS, 0, IntPtr.Zero);
-                if (-1 != hFile.ToInt32())
-                {
-                    bool bRtn = WriteFile(hFile, buffer, nBytes, out count, 0);
-                }
-                else
-                {
-                    Exception excptn = new Win32Exception(Marshal.GetLastWin32Error());
-                    if (!excptn.Message.Contains("cannot find the file"))
-                    {
-                        throw excptn;
-                    }
-                }
-            }
-            catch (Exception exception)
-            {
-                Console.WriteLine("WriteAlternateStreamEncrypted()");
-                Console.WriteLine(exception.Message);
-            }
-            finally
-            {
-                CloseHandle(hFile);
-                hFile = IntPtr.Zero;
-                if (cs != null)
-                {
-                    cs.Close();
-                    cs.Dispose();
-                }
-
-                rc2 = null;
-                if (ms != null)
-                {
-                    ms.Close();
-                    ms.Dispose();
-                }
-                if (buffer != IntPtr.Zero)
-                {
-                    Marshal.FreeHGlobal(buffer);
-                }
-            }
-        }
-
-        /// <summary>
-        /// Encrypt the string 'LicenseString' argument and return as a MemoryStream.
-        /// </summary>
-        /// <param name="LicenseString">The string value to encrypt</param>
-        /// <returns>A MemoryStream which contains the encrypted value of 'LicenseString'</returns>
-        private static MemoryStream EncryptLicenseString(string LicenseString)
-        {
-            Encoding enc = Encoding.Unicode;
-
-            byte[] ba = enc.GetBytes(LicenseString);
-            MemoryStream ms = new MemoryStream();
-
-            RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();
-            rc2.Key = GetBytesFromHexString("7a6823a42a3a3ae27057c647db812d0");
-            rc2.IV = GetBytesFromHexString("827d961224d99b2d");
-
-            CryptoStream cs = new CryptoStream(ms, rc2.CreateEncryptor(), CryptoStreamMode.Write);
-            cs.Write(ba, 0, ba.Length);
-
-            cs.Close();
-            cs.Dispose();
-            rc2 = null;
-            return ms;
-        }
-
-        /// <summary>
-        /// Given an IntPtr to a bufer and the number of bytes, decrypt the buffer and return an 
-        /// unencrypted text string.
-        /// </summary>
-        /// <param name="buffer">An IntPtr to the 'buffer' containing the encrypted string</param>
-        /// <param name="nBytes">The number of bytes in 'buffer' to decrypt</param>
-        /// <returns></returns>
-        private static string DecryptLicenseString(IntPtr buffer, uint nBytes)
-        {
-            byte[] ba = new byte[nBytes];
-            for (int i = 0; i < nBytes; i++)
-            {
-                ba[i] = Marshal.ReadByte(buffer, i);
-            }
-            MemoryStream ms = new MemoryStream(ba);
-
-            RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider();
-            rc2.Key = GetBytesFromHexString("7a6823a42a3a3ae27057c647db812d0");
-            rc2.IV = GetBytesFromHexString("827d961224d99b2d");
-
-            CryptoStream cs = new CryptoStream(ms, rc2.CreateDecryptor(), CryptoStreamMode.Read);
-            string licenseString = string.Empty;
-            byte[] ba1 = new byte[4096];
-            int irtn = cs.Read(ba1, 0, 4096);
-            Encoding enc = Encoding.Unicode;
-            licenseString = enc.GetString(ba1, 0, irtn);
-
-            cs.Close();
-            cs.Dispose();
-            ms.Close();
-            ms.Dispose();
-            rc2 = null;
-            return licenseString;
-        }
-
-        /// <summary>
-        /// Gets the byte array generated from the value of 'hexString'.
-        /// </summary>
-        /// <param name="hexString">Hexadecimal string</param>
-        /// <returns>Array of bytes generated from 'hexString'.</returns>
-        public static byte[] GetBytesFromHexString(string hexString)
-        {
-            int numHexChars = hexString.Length / 2;
-            byte[] ba = new byte[numHexChars];
-            int j = 0;
-            for (int i = 0; i < ba.Length; i++)
-            {
-                string hex = new string(new char[] { hexString[j], hexString[j + 1] });
-                ba[i] = byte.Parse(hex, System.Globalization.NumberStyles.HexNumber);
-                j = j + 2;
-            }
-            return ba;
-        }
-
-        #endregion
-    }
-}

+ 0 - 76
Fork.Net/Fork.Net.SpeciallyTools/Y.FileQueryEngine/Y.FileQueryEngine.csproj

@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ProjectGuid>{497F570C-8398-458D-970C-DFA3DD9FE746}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <RootNamespace>Y.FileQueryEngine</RootNamespace>
-    <AssemblyName>Y.FileQueryEngine</AssemblyName>
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <FileAlignment>512</FileAlignment>
-    <TargetFrameworkProfile />
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <DebugSymbols>true</DebugSymbols>
-    <DebugType>full</DebugType>
-    <Optimize>false</Optimize>
-    <OutputPath>bin\Debug\</OutputPath>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <DocumentationFile>bin\Debug\Y.FileQueryEngine.XML</DocumentationFile>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <DebugType>pdbonly</DebugType>
-    <Optimize>true</Optimize>
-    <OutputPath>bin\Release\</OutputPath>
-    <DefineConstants>TRACE</DefineConstants>
-    <ErrorReport>prompt</ErrorReport>
-    <WarningLevel>4</WarningLevel>
-    <Prefer32Bit>false</Prefer32Bit>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="System.Core" />
-    <Reference Include="System.Xml.Linq" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="Microsoft.CSharp" />
-    <Reference Include="System.Data" />
-    <Reference Include="System.Net.Http" />
-    <Reference Include="System.Xml" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="QueryEngine\FileQueryEngine.cs" />
-    <Compile Include="QueryEngine\FileAndDirectoryEntry.cs" />
-    <Compile Include="QueryEngine\FrnFilePath.cs" />
-    <Compile Include="UsnOperation\UsnControlCode.cs" />
-    <Compile Include="UsnOperation\UsnEntry.cs" />
-    <Compile Include="UsnOperation\UsnErrorCode.cs" />
-    <Compile Include="UsnOperation\UsnJournalData.cs" />
-    <Compile Include="UsnOperation\UsnOperator.cs" />
-    <Compile Include="UsnOperation\UsnReasonCode.cs" />
-    <Compile Include="Win32\Constants\Win32ApiConstant.cs" />
-    <Compile Include="Win32\Structures\BY_HANDLE_FILE_INFORMATION.cs" />
-    <Compile Include="Win32\Structures\CREATE_USN_JOURNAL_DATA.cs" />
-    <Compile Include="Win32\Structures\MFT_ENUM_DATA.cs" />
-    <Compile Include="Win32\Structures\POINT.cs" />
-    <Compile Include="Win32\Structures\READ_USN_JOURNAL_DATA.cs" />
-    <Compile Include="Win32\Structures\USN_JOURNAL_DATA.cs" />
-    <Compile Include="Win32\Structures\USN_RECORD_V2.cs" />
-    <Compile Include="Win32\Win32Api.cs" />
-  </ItemGroup>
-  <ItemGroup />
-  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
-       Other similar extension points exist, see Microsoft.Common.targets.
-  <Target Name="BeforeBuild">
-  </Target>
-  <Target Name="AfterBuild">
-  </Target>
-  -->
-</Project>

Fork.Net/Version.Builder/App.config → Fork.Net/Fork.Net.Tools/Version.Builder/App.config


Fork.Net/Version.Builder/FodyWeavers.xml → Fork.Net/Fork.Net.Tools/Version.Builder/FodyWeavers.xml


Fork.Net/Version.Builder/Form1.Designer.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Form1.Designer.cs


Fork.Net/Version.Builder/Form1.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Form1.cs


Fork.Net/Version.Builder/Form1.resx → Fork.Net/Fork.Net.Tools/Version.Builder/Form1.resx


Fork.Net/Version.Builder/Models/VersionModel.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Models/VersionModel.cs


Fork.Net/Version.Builder/Program.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Program.cs


Fork.Net/Version.Builder/Properties/AssemblyInfo.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Properties/AssemblyInfo.cs


Fork.Net/Version.Builder/Properties/Resources.Designer.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Resources.Designer.cs


Fork.Net/Oreo.Plugins/Oreo.EasyBrush/Properties/Resources.resx → Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Resources.resx


Fork.Net/Version.Builder/Properties/Settings.Designer.cs → Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Settings.Designer.cs


Fork.Net/Oreo.Plugins/Oreo.EasyBrush/Properties/Settings.settings → Fork.Net/Fork.Net.Tools/Version.Builder/Properties/Settings.settings


+ 0 - 6
Fork.Net/Version.Builder/Version.Builder.csproj

@@ -86,12 +86,6 @@
   <ItemGroup>
     <None Include="FodyWeavers.xml" />
   </ItemGroup>
-  <ItemGroup>
-    <ProjectReference Include="..\Y.Utils\Y.Utils.csproj">
-      <Project>{5b8eeec7-aeb5-407d-9dc1-1c59e53f78d5}</Project>
-      <Name>Y.Utils</Name>
-    </ProjectReference>
-  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <Import Project="..\packages\Fody.2.0.6\build\dotnet\Fody.targets" Condition="Exists('..\packages\Fody.2.0.6\build\dotnet\Fody.targets')" />
   <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

Fork.Net/Version.Builder/packages.config → Fork.Net/Fork.Net.Tools/Version.Builder/packages.config


Fork.Net/Version.Update/App.config → Fork.Net/Fork.Net.Tools/Version.Update/App.config


Fork.Net/Version.Update/Commons/R.cs → Fork.Net/Fork.Net.Tools/Version.Update/Commons/R.cs


Fork.Net/Version.Update/FodyWeavers.xml → Fork.Net/Fork.Net.Tools/Version.Update/FodyWeavers.xml


Fork.Net/Version.Update/Form1.Designer.cs → Fork.Net/Fork.Net.Tools/Version.Update/Form1.Designer.cs


Fork.Net/Version.Update/Form1.cs → Fork.Net/Fork.Net.Tools/Version.Update/Form1.cs


Fork.Net/Version.Update/Form1.resx → Fork.Net/Fork.Net.Tools/Version.Update/Form1.resx


Fork.Net/Version.Update/Models/VersionModel.cs → Fork.Net/Fork.Net.Tools/Version.Update/Models/VersionModel.cs


Fork.Net/Version.Update/Program.cs → Fork.Net/Fork.Net.Tools/Version.Update/Program.cs


Fork.Net/Version.Update/Properties/AssemblyInfo.cs → Fork.Net/Fork.Net.Tools/Version.Update/Properties/AssemblyInfo.cs


Fork.Net/Version.Update/Properties/Resources.Designer.cs → Fork.Net/Fork.Net.Tools/Version.Update/Properties/Resources.Designer.cs


Fork.Net/Version.Builder/Properties/Resources.resx → Fork.Net/Fork.Net.Tools/Version.Update/Properties/Resources.resx


Fork.Net/Version.Update/Properties/Settings.Designer.cs → Fork.Net/Fork.Net.Tools/Version.Update/Properties/Settings.Designer.cs


Fork.Net/Version.Builder/Properties/Settings.settings → Fork.Net/Fork.Net.Tools/Version.Update/Properties/Settings.settings


+ 0 - 6
Fork.Net/Version.Update/Version.Update.csproj

@@ -85,12 +85,6 @@
     <None Include="App.config" />
   </ItemGroup>
   <ItemGroup>
-    <ProjectReference Include="..\Y.Utils\Y.Utils.csproj">
-      <Project>{5b8eeec7-aeb5-407d-9dc1-1c59e53f78d5}</Project>
-      <Name>Y.Utils</Name>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
     <None Include="FodyWeavers.xml" />
   </ItemGroup>
   <ItemGroup />

Fork.Net/Version.Update/packages.config → Fork.Net/Fork.Net.Tools/Version.Update/packages.config


Fork.Net/Y.DB/App.config → Fork.Net/Fork.Net.Tools/Y.DB/App.config


Fork.Net/Y.DB/DAO/DbTable.cs → Fork.Net/Fork.Net.Tools/Y.DB/DAO/DbTable.cs


Fork.Net/Y.DB/DAO/IDbContext.cs → Fork.Net/Fork.Net.Tools/Y.DB/DAO/IDbContext.cs


Fork.Net/Y.DB/DAO/Muse.cs → Fork.Net/Fork.Net.Tools/Y.DB/DAO/Muse.cs


Fork.Net/Y.DB/DAO/SuperDb.cs → Fork.Net/Fork.Net.Tools/Y.DB/DAO/SuperDb.cs


Fork.Net/Y.DB/Migrations/MigraConf.cs → Fork.Net/Fork.Net.Tools/Y.DB/Migrations/MigraConf.cs


Fork.Net/Y.DB/Properties/AssemblyInfo.cs → Fork.Net/Fork.Net.Tools/Y.DB/Properties/AssemblyInfo.cs


Fork.Net/Y.DB/Y.DB.csproj → Fork.Net/Fork.Net.Tools/Y.DB/Y.DB.csproj


Fork.Net/Y.DB/packages.config → Fork.Net/Fork.Net.Tools/Y.DB/packages.config


Fork.Net/Y.Skin/Properties/AssemblyInfo.cs → Fork.Net/Fork.Net.Tools/Y.Skin/Properties/AssemblyInfo.cs


Fork.Net/Y.Skin/Y.Skin.csproj → Fork.Net/Fork.Net.Tools/Y.Skin/Y.Skin.csproj


Fork.Net/Y.Skin/YoButton/ImageButton.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoButton/ImageButton.Designer.cs


Fork.Net/Y.Skin/YoButton/ImageButton.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoButton/ImageButton.cs


Fork.Net/Y.Skin/YoButton/ImageButton.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoButton/ImageButton.resx


Fork.Net/Y.Skin/YoControl/UserControlPlus.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoControl/UserControlPlus.Designer.cs


Fork.Net/Y.Skin/YoControl/UserControlPlus.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoControl/UserControlPlus.cs


Fork.Net/Y.Skin/YoControl/UserControlPlus.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoControl/UserControlPlus.resx


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleForm.Designer.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleForm.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleForm.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleForm.resx


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleHorizontalForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleHorizontalForm.Designer.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleHorizontalForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleHorizontalForm.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.Designer.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleShadowForm.resx


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleVerticalForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleVerticalForm.Designer.cs


Fork.Net/Y.Skin/YoForm/CustomTitle/DarkTitleVerticalForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/CustomTitle/DarkTitleVerticalForm.cs


Fork.Net/Y.Skin/YoForm/Irregular/IrregularForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularForm.Designer.cs


Fork.Net/Y.Skin/YoForm/Irregular/IrregularForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularForm.cs


Fork.Net/Y.Skin/YoForm/Irregular/IrregularForm.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularForm.resx


Fork.Net/Y.Skin/YoForm/Irregular/IrregularFormSkin.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularFormSkin.Designer.cs


Fork.Net/Y.Skin/YoForm/Irregular/IrregularFormSkin.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularFormSkin.cs


Fork.Net/Y.Skin/YoForm/Irregular/IrregularFormSkin.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Irregular/IrregularFormSkin.resx


Fork.Net/Y.Skin/YoForm/NoTitle/NoTitleForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/NoTitle/NoTitleForm.Designer.cs


Fork.Net/Y.Skin/YoForm/NoTitle/NoTitleForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/NoTitle/NoTitleForm.cs


Fork.Net/Y.Skin/YoForm/NoTitle/NoTitleForm.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/NoTitle/NoTitleForm.resx


Fork.Net/Y.Skin/YoForm/Shadow/ShadowForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowForm.Designer.cs


Fork.Net/Y.Skin/YoForm/Shadow/ShadowForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowForm.cs


Fork.Net/Y.Skin/YoForm/Shadow/ShadowForm.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowForm.resx


Fork.Net/Y.Skin/YoForm/Shadow/ShadowFormSkin.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowFormSkin.Designer.cs


Fork.Net/Y.Skin/YoForm/Shadow/ShadowFormSkin.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowFormSkin.cs


Fork.Net/Y.Skin/YoForm/Shadow/ShadowFormSkin.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Shadow/ShadowFormSkin.resx


Fork.Net/Y.Skin/YoForm/Toast/ToastForm.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Toast/ToastForm.Designer.cs


Fork.Net/Y.Skin/YoForm/Toast/ToastForm.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Toast/ToastForm.cs


Fork.Net/Y.Skin/YoForm/Toast/ToastForm.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoForm/Toast/ToastForm.resx


Fork.Net/Y.Skin/YoPanel/EmbedArticlePanel.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedArticlePanel.Designer.cs


Fork.Net/Y.Skin/YoPanel/EmbedArticlePanel.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedArticlePanel.cs


Fork.Net/Y.Skin/YoPanel/EmbedPanel.Designer.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedPanel.Designer.cs


Fork.Net/Y.Skin/YoPanel/EmbedPanel.cs → Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedPanel.cs


Fork.Net/Y.Skin/YoPanel/EmbedPanel.resx → Fork.Net/Fork.Net.Tools/Y.Skin/YoPanel/EmbedPanel.resx


+ 0 - 0
Fork.Net/Y.Skin/YoPanel/FlexiblePanel.Designer.cs


Some files were not shown because too many files changed in this diff