Exemple #1
0
 public CreateResponse(byte[] buffer, int offset) : base(buffer, offset)
 {
     StructureSize         = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 0);
     OplockLevel           = (OplockLevel)ByteReader.ReadByte(buffer, offset + SMB2Header.Length + 2);
     Flags                 = (CreateResponseFlags)ByteReader.ReadByte(buffer, offset + SMB2Header.Length + 3);
     CreateAction          = (CreateAction)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 4);
     CreationTime          = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 8);
     LastAccessTime        = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 16);
     LastWriteTime         = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 24);
     ChangeTime            = FileTimeHelper.ReadNullableFileTime(buffer, offset + SMB2Header.Length + 32);
     AllocationSize        = LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 40);
     EndofFile             = LittleEndianConverter.ToInt64(buffer, offset + SMB2Header.Length + 48);
     FileAttributes        = (FileAttributes)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 56);
     Reserved2             = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 60);
     FileId                = new FileID(buffer, offset + SMB2Header.Length + 64);
     CreateContextsOffsets = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 80);
     CreateContextsLength  = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 84);
     if (CreateContextsLength > 0)
     {
         CreateContexts = CreateContext.ReadCreateContextList(buffer, offset + (int)CreateContextsOffsets);
     }
 }
 public CreateRequest(byte[] buffer, int offset) : base(buffer, offset)
 {
     StructureSize         = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 0);
     SecurityFlags         = ByteReader.ReadByte(buffer, offset + SMB2Header.Length + 2);
     RequestedOplockLevel  = (OplockLevel)ByteReader.ReadByte(buffer, offset + SMB2Header.Length + 3);
     ImpersonationLevel    = (ImpersonationLevel)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 4);
     SmbCreateFlags        = LittleEndianConverter.ToUInt64(buffer, offset + SMB2Header.Length + 8);
     Reserved              = LittleEndianConverter.ToUInt64(buffer, offset + SMB2Header.Length + 16);
     DesiredAccess         = new AccessMask(buffer, offset + SMB2Header.Length + 24);
     FileAttributes        = (FileAttributes)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 28);
     ShareAccess           = (ShareAccess)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 32);
     CreateDisposition     = (CreateDisposition)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 36);
     CreateOptions         = (CreateOptions)LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 40);
     NameOffset            = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 44);
     NameLength            = LittleEndianConverter.ToUInt16(buffer, offset + SMB2Header.Length + 46);
     CreateContextsOffsets = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 48);
     CreateContextsLength  = LittleEndianConverter.ToUInt32(buffer, offset + SMB2Header.Length + 52);
     Name = ByteReader.ReadUTF16String(buffer, offset + NameOffset, NameLength / 2);
     if (CreateContextsLength > 0)
     {
         CreateContexts = CreateContext.ReadCreateContextList(buffer, (int)CreateContextsOffsets);
     }
 }