code: def __check_status(result, function, arguments):
      
      if isinstance(result, int):
          # Real return value is an unsigned long
          result = ctypes.c_ulong(result).value
  
      if result == constants.VCI_E_TIMEOUT:
          raise VCITimeout("Function {} timed out".format(function._name))
      elif result == constants.VCI_E_RXQUEUE_EMPTY:
          raise VCIRxQueueEmptyError()
      elif result == constants.VCI_E_NO_MORE_ITEMS:
          raise StopIteration()
      elif result == constants.VCI_E_ACCESSDENIED:
          pass # not a real error, might happen if another program has initialized the bus
      elif result != constants.VCI_OK:
          raise VCIError(vciFormatError(function, result))
  
      return result
docs: Check the result of a vcinpl function call and raise appropriate exception
      in case of an error. Used as errcheck function when mapping C functions
      with ctypes.
          :param result:
              Function call numeric result
          :param callable function:
              Called function
          :param arguments:
              Arbitrary arguments tuple
          :raise:
              :class:VCITimeout
              :class:VCIRxQueueEmptyError
              :class:StopIteration
              :class:VCIError