Browse Source

Improved QueryInformation structures implementation

Tal Aloni 8 years ago
parent
commit
c46e638879

+ 8 - 8
SMBLibrary/SMB1/Transaction2Subcommands/Structures/FindInformation/FindFileBothDirectoryInfo.cs

@@ -20,10 +20,10 @@ namespace SMBLibrary.SMB1
 
         public uint NextEntryOffset;
         public uint FileIndex; // SHOULD be set to zero when sent in a response and SHOULD be ignored when received by the client
-        public DateTime CreationTime;
-        public DateTime LastAccessTime;
-        public DateTime LastWriteTime;
-        public DateTime LastChangeTime;
+        public DateTime? CreationTime;
+        public DateTime? LastAccessTime;
+        public DateTime? LastWriteTime;
+        public DateTime? LastChangeTime;
         public ulong EndOfFile;
         public ulong AllocationSize;
         public ExtendedFileAttributes ExtFileAttributes;
@@ -46,10 +46,10 @@ namespace SMBLibrary.SMB1
         {
             NextEntryOffset = LittleEndianReader.ReadUInt32(buffer, ref offset);
             FileIndex = LittleEndianReader.ReadUInt32(buffer, ref offset);
-            CreationTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAccessTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastWriteTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastChangeTime = SMB1Helper.ReadFileTime(buffer, ref offset);
+            CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
             EndOfFile = LittleEndianReader.ReadUInt64(buffer, ref offset);
             AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref offset);
             ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset);

+ 8 - 8
SMBLibrary/SMB1/Transaction2Subcommands/Structures/FindInformation/FindFileDirectoryInfo.cs

@@ -20,10 +20,10 @@ namespace SMBLibrary.SMB1
 
         public uint NextEntryOffset;
         public uint FileIndex; // SHOULD be set to zero when sent in a response and SHOULD be ignored when received by the client
-        public DateTime CreationTime;
-        public DateTime LastAccessTime;
-        public DateTime LastWriteTime;
-        public DateTime LastAttrChangeTime;
+        public DateTime? CreationTime;
+        public DateTime? LastAccessTime;
+        public DateTime? LastWriteTime;
+        public DateTime? LastAttrChangeTime;
         public ulong EndOfFile;
         public ulong AllocationSize;
         public ExtendedFileAttributes ExtFileAttributes;
@@ -38,10 +38,10 @@ namespace SMBLibrary.SMB1
         {
             NextEntryOffset = LittleEndianReader.ReadUInt32(buffer, ref offset);
             FileIndex = LittleEndianReader.ReadUInt32(buffer, ref offset);
-            CreationTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAccessTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastWriteTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAttrChangeTime = SMB1Helper.ReadFileTime(buffer, ref offset);
+            CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAttrChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
             EndOfFile = LittleEndianReader.ReadUInt64(buffer, ref offset);
             AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref offset);
             ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset);

+ 8 - 8
SMBLibrary/SMB1/Transaction2Subcommands/Structures/FindInformation/FindFileFullDirectoryInfo.cs

@@ -20,10 +20,10 @@ namespace SMBLibrary.SMB1
 
         public uint NextEntryOffset;
         public uint FileIndex; // SHOULD be set to zero when sent in a response and SHOULD be ignored when received by the client
-        public DateTime CreationTime;
-        public DateTime LastAccessTime;
-        public DateTime LastWriteTime;
-        public DateTime LastAttrChangeTime;
+        public DateTime? CreationTime;
+        public DateTime? LastAccessTime;
+        public DateTime? LastWriteTime;
+        public DateTime? LastAttrChangeTime;
         public ulong EndOfFile;
         public ulong AllocationSize;
         public ExtendedFileAttributes ExtFileAttributes;
@@ -39,10 +39,10 @@ namespace SMBLibrary.SMB1
         {
             NextEntryOffset = LittleEndianReader.ReadUInt32(buffer, ref offset);
             FileIndex = LittleEndianReader.ReadUInt32(buffer, ref offset);
-            CreationTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAccessTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastWriteTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAttrChangeTime = SMB1Helper.ReadFileTime(buffer, ref offset);
+            CreationTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAttrChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
             EndOfFile = LittleEndianReader.ReadUInt64(buffer, ref offset);
             AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref offset);
             ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset);

+ 2 - 2
SMBLibrary/SMB1/Transaction2Subcommands/Structures/QueryFSInformation/QueryFSVolumeInfo.cs

@@ -18,7 +18,7 @@ namespace SMBLibrary.SMB1
     {
         public const int FixedLength = 18;
 
-        public DateTime VolumeCreationTime;
+        public DateTime? VolumeCreationTime;
         public uint SerialNumber;
         //uint VolumeLabelSize;
         public ushort Reserved;
@@ -31,7 +31,7 @@ namespace SMBLibrary.SMB1
 
         public QueryFSVolumeInfo(byte[] buffer, int offset)
         {
-            VolumeCreationTime = SMB1Helper.ReadFileTime(buffer, offset + 0);
+            VolumeCreationTime = FileTimeHelper.ReadNullableFileTime(buffer, offset + 0);
             SerialNumber = LittleEndianConverter.ToUInt32(buffer, offset + 8);
             uint volumeLabelSize = LittleEndianConverter.ToUInt32(buffer, offset + 12);
             Reserved = LittleEndianConverter.ToUInt16(buffer, offset + 16);

+ 8 - 8
SMBLibrary/SMB1/Transaction2Subcommands/Structures/QueryInformation/QueryFileAllInfo.cs

@@ -18,10 +18,10 @@ namespace SMBLibrary.SMB1
     {
         public const int FixedLength = 72;
 
-        public DateTime CreationDateTime;
-        public DateTime LastAccessDateTime;
-        public DateTime LastWriteDateTime;
-        public DateTime LastChangeTime;
+        public DateTime? CreationDateTime;
+        public DateTime? LastAccessDateTime;
+        public DateTime? LastWriteDateTime;
+        public DateTime? LastChangeTime;
         public ExtendedFileAttributes ExtFileAttributes;
         public uint Reserved1;
         public ulong AllocationSize;
@@ -40,10 +40,10 @@ namespace SMBLibrary.SMB1
 
         public QueryFileAllInfo(byte[] buffer, int offset)
         {
-            CreationDateTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAccessDateTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastWriteDateTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastChangeTime = SMB1Helper.ReadFileTime(buffer, ref offset);
+            CreationDateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAccessDateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastWriteDateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
             ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset);
             Reserved1 = LittleEndianReader.ReadUInt32(buffer, ref offset);
             AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref offset);

+ 8 - 8
SMBLibrary/SMB1/Transaction2Subcommands/Structures/QueryInformation/QueryFileBasicInfo.cs

@@ -18,10 +18,10 @@ namespace SMBLibrary.SMB1
     {
         public const int Length = 40;
 
-        public DateTime CreationDateTime;
-        public DateTime LastAccessDateTime;
-        public DateTime LastWriteDateTime;
-        public DateTime LastChangeTime;
+        public DateTime? CreationDateTime;
+        public DateTime? LastAccessDateTime;
+        public DateTime? LastWriteDateTime;
+        public DateTime? LastChangeTime;
         public ExtendedFileAttributes ExtFileAttributes;
         public uint Reserved;
 
@@ -31,10 +31,10 @@ namespace SMBLibrary.SMB1
 
         public QueryFileBasicInfo(byte[] buffer, int offset)
         {
-            CreationDateTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastAccessDateTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastWriteDateTime = SMB1Helper.ReadFileTime(buffer, ref offset);
-            LastChangeTime = SMB1Helper.ReadFileTime(buffer, ref offset);
+            CreationDateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastAccessDateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastWriteDateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
+            LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref offset);
             ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(buffer, ref offset);
             Reserved = LittleEndianReader.ReadUInt32(buffer, ref offset);
         }