module Process

def get_thread_info(handle, pid = nil)

Return thread info for Process.snapshot
def get_thread_info(handle, pid = nil)
  lpte = THREADENTRY32.new
  lpte[:dwSize] = lpte.size
  hash = Hash.new { |h, k| h[k] = [] }
  if Thread32First(handle, lpte)
    hash[lpte[:th32OwnerProcessID]] << ThreadSnapInfo.new(lpte[:th32ThreadID], lpte[:th32OwnerProcessID], lpte[:tpBasePri])
  else
    if FFI.errno == ERROR_NO_MORE_FILES
      return hash
    else
      raise SystemCallError.new("Thread32First", FFI.errno)
    end
  end
  hash[lpte[:th32OwnerProcessID]] << ThreadSnapInfo.new(lpte[:th32ThreadID], lpte[:th32OwnerProcessID], lpte[:tpBasePri]) while Thread32Next(handle, lpte)
  hash
end