Method: Winhelper.identifier_from_handle_ex

Defined in:
lib/filewatch/winhelper.rb

.identifier_from_handle_ex(handle, close_handle = true) ⇒ Object



144
145
146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/filewatch/winhelper.rb', line 144

def self.identifier_from_handle_ex(handle, close_handle = true)
  fileIdInfo = Winhelper::FileIdInfo.new
  success = GetFileInformationByHandleEx(handle, :FileIdInfo, fileIdInfo, fileIdInfo.size)
  if success > 0
    vsn   = fileIdInfo[:volumeSerialNumber]
    lpfid = fileIdInfo[:fileId][:lowPart]
    hpfid = fileIdInfo[:fileId][:highPart]
    return "#{vsn}-#{lpfid}-#{hpfid}"
  else
    return 'unknown'
  end
ensure
  CloseHandle(handle) if close_handle
end