/// <summary> /// Function to initialize this class by parsing the reparse buffer data (not including header). /// </summary> /// <param name="data_length">The length of the data to read.</param> /// <param name="reader">The stream to read from.</param> protected override void ParseBuffer(int data_length, BinaryReader reader) { int subname_ofs = reader.ReadUInt16(); int subname_len = reader.ReadUInt16(); int pname_ofs = reader.ReadUInt16(); int pname_len = reader.ReadUInt16(); Flags = (SymlinkReparseBufferFlags)reader.ReadInt32(); byte[] path_buffer = reader.ReadAllBytes(data_length - 12); SubstitutionName = Encoding.Unicode.GetString(path_buffer, subname_ofs, subname_len); PrintName = Encoding.Unicode.GetString(path_buffer, pname_ofs, pname_len); }
/// <summary> /// Constructor. /// </summary> /// <param name="substitution_name">Substitution name to reparse to when accessing symlink.</param> /// <param name="print_name">Printable name for the symlink.</param> /// <param name="flags">Symlink flags.</param> /// <param name="global">Create a global symlink rather than a normal symlink.</param> public SymlinkReparseBuffer(string substitution_name, string print_name, SymlinkReparseBufferFlags flags, bool global) : this(global) { if (string.IsNullOrEmpty(substitution_name)) { throw new ArgumentException("substitution_name"); } if (string.IsNullOrEmpty(print_name)) { throw new ArgumentException("print_name"); } SubstitutionName = substitution_name; PrintName = print_name; Flags = flags; }
/// <summary> /// Constructor. /// </summary> /// <param name="substitution_name">Substitution name to reparse to when accessing symlink.</param> /// <param name="print_name">Printable name for the symlink.</param> /// <param name="flags">Symlink flags.</param> public SymlinkReparseBuffer(string substitution_name, string print_name, SymlinkReparseBufferFlags flags) : this(substitution_name, print_name, flags, false) { }