mirror of
https://github.com/TalAloni/SMBLibrary.git
synced 2025-08-14 19:23:46 +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);
|
OpLockLevel = (OpLockLevel)ByteReader.ReadByte(this.SMBParameters, ref parametersOffset);
|
||||||
FID = LittleEndianReader.ReadUInt16(this.SMBParameters, ref parametersOffset);
|
FID = LittleEndianReader.ReadUInt16(this.SMBParameters, ref parametersOffset);
|
||||||
CreateDisposition = (CreateDisposition)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset);
|
CreateDisposition = (CreateDisposition)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset);
|
||||||
CreateTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
CreateTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||||
LastAccessTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
LastAccessTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||||
LastWriteTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
LastWriteTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||||
LastChangeTime = FileTimeHelper.ReadNullableFileTime(buffer, ref parametersOffset);
|
LastChangeTime = SMB1Helper.ReadNullableFileTime(buffer, ref parametersOffset);
|
||||||
ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset);
|
ExtFileAttributes = (ExtendedFileAttributes)LittleEndianReader.ReadUInt32(this.SMBParameters, ref parametersOffset);
|
||||||
AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref parametersOffset);
|
AllocationSize = LittleEndianReader.ReadUInt64(buffer, ref parametersOffset);
|
||||||
EndOfFile = LittleEndianReader.ReadUInt64(buffer, ref parametersOffset);
|
EndOfFile = LittleEndianReader.ReadUInt64(buffer, ref parametersOffset);
|
||||||
|
|
|
@ -13,13 +13,17 @@ namespace SMBLibrary.SMB1
|
||||||
{
|
{
|
||||||
public class SMB1Helper
|
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);
|
long span = LittleEndianConverter.ToInt64(buffer, offset);
|
||||||
if (span >= 0)
|
if (span >= 0)
|
||||||
{
|
{
|
||||||
return DateTime.FromFileTimeUtc(span);
|
return DateTime.FromFileTimeUtc(span);
|
||||||
}
|
}
|
||||||
|
else if (span == 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Tick = 100ns
|
// 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;
|
offset += 8;
|
||||||
return ReadFileTime(buffer, offset - 8);
|
return ReadNullableFileTime(buffer, offset - 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue