Esempio n. 1
0
        public byte[] ToBuffer()
        {
            List <byte> bufferList = new List <byte>();

            bufferList.AddRange(BitConverter.GetBytes(Checksum));
            bufferList.AddRange(VolumeDroid.ToByteArray());
            bufferList.AddRange(FileDroid.ToByteArray());
            bufferList.AddRange(VolumeBirthDroid.ToByteArray());
            bufferList.AddRange(FileBirthDroid.ToByteArray());

            byte[] tempBuffer     = Encoding.GetEncoding(1252).GetBytes(Hostname);
            byte[] hostNameBuffer = new byte[16];
            Buffer.BlockCopy(tempBuffer, 0, hostNameBuffer, 0, tempBuffer.Length);
            bufferList.AddRange(hostNameBuffer);

            bufferList.AddRange(BitConverter.GetBytes(EntryNumber));
            bufferList.AddRange(BitConverter.GetBytes(Unknown0));
            bufferList.AddRange(BitConverter.GetBytes(AccessCount));
            bufferList.AddRange(BitConverter.GetBytes(LastModified.ToFileTime()));
            bufferList.AddRange(BitConverter.GetBytes(PinStatus));

            if (this.Version > 1)
            {
                bufferList.AddRange(BitConverter.GetBytes(Unknown1));
                bufferList.AddRange(BitConverter.GetBytes(Unknown2));
                bufferList.AddRange(BitConverter.GetBytes(Unknown3));
                bufferList.AddRange(BitConverter.GetBytes(Unknown4));
                bufferList.AddRange(BitConverter.GetBytes(PathSize));

                byte[] pathBuffer     = new byte[PathSize * 2];
                byte[] tempPathBuffer = Encoding.Unicode.GetBytes(RawPath);
                Buffer.BlockCopy(tempPathBuffer, 0, pathBuffer, 0, tempPathBuffer.Length);
                bufferList.AddRange(pathBuffer);

                bufferList.AddRange(new byte[4] {
                    0, 0, 0, 0
                });
            }
            else
            {
                byte[] pathBuffer     = new byte[PathSize * 2];
                byte[] tempPathBuffer = Encoding.Unicode.GetBytes(RawPath);
                Buffer.BlockCopy(tempPathBuffer, 0, pathBuffer, 0, tempPathBuffer.Length);
                bufferList.AddRange(pathBuffer);
            }

            return(bufferList.ToArray());
        }