# File lib/vendor/windows/lib/rb-fchange/notifier.rb, line 120
    def read_events

      # can return WAIT_TIMEOUT  = 0x00000102
      dwWaitStatus = Native.WaitForMultipleObjects(@dwChangeHandles.count, 
        @lp_dwChangeHandles, 0, 500)

      events = []

      # this call blocks all threads completely.
      @dwChangeHandles.each_index do |index|
        if dwWaitStatus == WAIT_OBJECT_0 + index

          ev = Event.new(@watchers[@dwChangeHandles[index]])
          events << ev
        
          r = Native.FindNextChangeNotification(@dwChangeHandles[index]) 
          if r == 0 
              raise SystemCallError.new("Failed to watch", r) 
          end
        end
      end
      events
    end