class RubySMB::Field::FileTime

Represents a Windows FILETIME structure as defined in [FILETIME structure](msdn.microsoft.com/en-us/library/windows/desktop/ms724284(v=vs.85).aspx)

Constants

EPOCH_DIFF_100NS

Difference between the Windows and Unix epochs, in 100ns intervals

NS_MULTIPLIER

Public Instance Methods

get() click to toggle source

Gets the value of the field

@return [BinData::Bit64] the 64-bit value of the field

# File lib/ruby_smb/field/file_time.rb, line 17
def get
  val
end
set(value) click to toggle source

Sets the value of the field from a DateTime,Time,Fixnum, or object that can be converted to an integer. Datetime and Time objects get converted to account for the Windows/Unix Epoch difference. Any other parameter passed in will be assumed to already be correct.

@param value [DateTime,Time,Fixnum,#to_i] the value to set @return

# File lib/ruby_smb/field/file_time.rb, line 28
def set(value)
  case value
  when DateTime
    set(value.to_time)
  when Time
    time_int = value.to_i
    time_int *= NS_MULTIPLIER
    adjusted_epoch = time_int + EPOCH_DIFF_100NS
    set(adjusted_epoch)
  when Integer
    self.val = value
  else
    self.val = value.to_i
  end
  val
end
to_datetime() click to toggle source

Returns the value of the field as a {DateTime}

@return [DateTime] the {DateTime} representation of the current value

# File lib/ruby_smb/field/file_time.rb, line 48
def to_datetime
  time = to_time
  time.to_datetime
end
to_time() click to toggle source

Returns the value of the field as a {Time}

@return [Time] the {Time} representation of the current value

# File lib/ruby_smb/field/file_time.rb, line 56
def to_time
  windows_int = val
  adjusted_epoch = windows_int - EPOCH_DIFF_100NS
  unix_int = adjusted_epoch / NS_MULTIPLIER
  Time.at unix_int
end