mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-08-04 06:51:50 +02:00
SMB_COM_NT_CREATE_ANDX Response: Added support for relative time (negative value) as specified in MS-CIFS
This commit is contained in:
parent
c46e638879
commit
3ed2bbcd1c
2 changed files with 11 additions and 7 deletions
|
@ -45,10 +45,10 @@ namespace SMBLibrary.SMB1
|
|||
OpLockLevel = (OpLockLevel)ByteReader.ReadByte(this.SMBParameters, ref parametersOffset);
|
||||
FID = LittleEndianReader.ReadUInt16(this.SMBParameters, ref parametersOffset);
|
||||
CreateDisposition = (CreateDisposition)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset);
|
||||
CreateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
CreateTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
LastAccessTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
LastWriteTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
LastChangeTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||
ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset);
|
||||
AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref parametersOffset);
|
||||
EndOfFile = LittleEndianReader.ReadUInt64(buffer, ref parametersOffset);
|
||||
|
|
|
@ -13,13 +13,17 @@ namespace SMBLibrary.SMB1
|
|||
{
|
||||
public class SMB1Helper
|
||||
{
|
||||
public static DateTime ReadFileTime(byte[] buffer, int offset)
|
||||
public static DateTime? ReadNullableFileTime(byte[] buffer, int offset)
|
||||
{
|
||||
long span = LittleEndianConverter.ToInt64(buffer, offset);
|
||||
if (span >= 0)
|
||||
{
|
||||
return DateTime.FromFileTimeUtc(span);
|
||||
}
|
||||
else if (span == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Tick = 100ns
|
||||
|
@ -27,10 +31,10 @@ namespace SMBLibrary.SMB1
|
|||
}
|
||||
}
|
||||
|
||||
public static DateTime ReadFileTime(byte[] buffer, ref int offset)
|
||||
public static DateTime? ReadNullableFileTime(byte[] buffer, ref int offset)
|
||||
{
|
||||
offset += 8;
|
||||
return ReadFileTime(buffer, offset - 8);
|
||||
return ReadNullableFileTime(buffer, offset - 8);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue