Class: Recls::Ximpl::FileStat::ByHandleInformation

Inherits:
Object
  • Object
show all
Defined in:
lib/recls/ximpl/windows.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path) ⇒ ByHandleInformation



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/recls/ximpl/windows.rb', line 75

def initialize(path)

  @volume_id = 0
  @file_index  =  0
  @num_links = 0

  # for some reason not forcing this new string causes 'can't modify frozen string (TypeError)' (in Ruby 1.8.x)
  hFile = CreateFile.call("#{path}", 0, 0, NULL, OPEN_EXISTING, 0, NULL);
  if INVALID_HANDLE_VALUE != hFile

    begin
      bhfi = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]
      bhfi = bhfi.pack(BHFI_pack_string)

      if GetFileInformationByHandle.call(hFile, bhfi)

        bhfi    = bhfi.unpack(BHFI_pack_string)

        @volume_id  =  bhfi[4]
        @file_index = (bhfi[8] << 32) | bhfi[9]
        @num_links  =  bhfi[7]
      else
      end
    ensure
      CloseHandle.call(hFile)
    end
  end
end

Instance Attribute Details

#file_indexObject (readonly)

Returns the value of attribute file_index.



105
106
107
# File 'lib/recls/ximpl/windows.rb', line 105

def file_index
  @file_index
end

Returns the value of attribute num_links.



106
107
108
# File 'lib/recls/ximpl/windows.rb', line 106

def num_links
  @num_links
end

#volume_idObject (readonly)

Returns the value of attribute volume_id.



104
105
106
# File 'lib/recls/ximpl/windows.rb', line 104

def volume_id
  @volume_id
end