module Process
def get_thread_info(handle, pid = nil)
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