module Process

def get_module_info(handle)

Return module info for Process.snapshot
def get_module_info(handle)
  hash = Hash.new { |h, k| h[k] = [] }
  me = MODULEENTRY32.new
  me[:dwSize] = me.size
  if Module32First(handle, me)
    hash[me[:th32ProcessID]] << ModuleSnapInfo.new(
      me[:th32ProcessID],
      me[:modBaseAddr].to_i,
      me[:modBaseSize],
      me[:hModule],
      me[:szModule].to_s,
      me[:szExePath].to_s
    )
  else
    if FFI.errno == ERROR_NO_MORE_FILES
      return hash
    else
      raise SystemCallError.new("Module32First", FFI.errno)
    end
  end
  while Module32Next(handle, me)
    hash[me[:th32ProcessID]] << ModuleSnapInfo.new(
      me[:th32ProcessID],
      me[:modBaseAddr].to_i,
      me[:modBaseSize],
      me[:hModule],
      me[:szModule].to_s,
      me[:szExePath].to_s
    )
  end
  hash
end