Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
 /// <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)
 {
 }