code: def nvmlSystemGetHicVersion():
      r
      c_count = c_uint(0)
      hics = None
      fn = _nvmlGetFunctionPointer("nvmlSystemGetHicVersion")
  
      # get the count
      ret = fn(byref(c_count), None)
  
      # this should only fail with insufficient size
      if ((ret != NVML_SUCCESS) and
          (ret != NVML_ERROR_INSUFFICIENT_SIZE)):
          raise NVMLError(ret)
  
      # if there are no hics
      if (c_count.value == 0):
          return []
  
      hic_array = c_nvmlHwbcEntry_t * c_count.value
      hics = hic_array()
      ret = fn(byref(c_count), hics)
      _nvmlCheckReturn(ret)
      return bytes_to_str(hics)
docs: r"""
      /**
       * Retrieves the IDs and firmware versions for any Host Interface Cards (HICs) in the system.
       *
       * For S-class products.
       *
       * The \a hwbcCount argument is expected to be set to the size of the input \a hwbcEntries array.
       * The HIC must be connected to an S-class system for it to be reported by this function.
       *
       * @param hwbcCount                            Size of hwbcEntries array
       * @param hwbcEntries                          Array holding information about hwbc
       *
       * @return
       *         - \ref NVML_SUCCESS                 if \a hwbcCount and \a hwbcEntries have been populated
       *         - \ref NVML_ERROR_UNINITIALIZED     if the library has not been successfully initialized
       *         - \ref NVML_ERROR_INVALID_ARGUMENT  if either \a hwbcCount or \a hwbcEntries is NULL
       *         - \ref NVML_ERROR_INSUFFICIENT_SIZE if \a hwbcCount indicates that the \a hwbcEntries array is too small
       */
      nvmlReturn_t DECLDIR nvmlSystemGetHicVersion