<!--
{
  "availability" : [
    "DriverKit: -",
    "iOS: -",
    "iPadOS: -",
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "DriverKit",
  "identifier" : "/documentation/DriverKit/IOReporter_IVars",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "DriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOReporter_IVars"
  },
  "title" : "IOReporter_IVars"
}
-->

# IOReporter_IVars

```
struct IOReporter_IVars;
```

## Topics

### Instance Properties

[`uint16_t channelDimension;`](/documentation/DriverKit/IOReporter_IVars/channelDimension)

[`OSArray * channelNames;`](/documentation/DriverKit/IOReporter_IVars/channelNames)

[`IOReportChannelType channelType;`](/documentation/DriverKit/IOReporter_IVars/channelType)

[`IOLock * configLock;`](/documentation/DriverKit/IOReporter_IVars/configLock)

[`uint64_t driver_id;`](/documentation/DriverKit/IOReporter_IVars/driver_id)

[`IOReportElement * elements;`](/documentation/DriverKit/IOReporter_IVars/elements)

[`int * enableCounts;`](/documentation/DriverKit/IOReporter_IVars/enableCounts)

[`int enabled;`](/documentation/DriverKit/IOReporter_IVars/enabled)

[`int nChannels;`](/documentation/DriverKit/IOReporter_IVars/nChannels)

[`int nElements;`](/documentation/DriverKit/IOReporter_IVars/nElements)

[`bool reporterConfigIsLocked;`](/documentation/DriverKit/IOReporter_IVars/reporterConfigIsLocked)

[`bool reporterIsLocked;`](/documentation/DriverKit/IOReporter_IVars/reporterIsLocked)

[`IOLock * reporterLock;`](/documentation/DriverKit/IOReporter_IVars/reporterLock)

[`IOReportElement * swapElements;`](/documentation/DriverKit/IOReporter_IVars/swapElements)

[`int * swapEnableCounts;`](/documentation/DriverKit/IOReporter_IVars/swapEnableCounts)

[`IOReportUnit unit;`](/documentation/DriverKit/IOReporter_IVars/unit)

### Instance Methods

[`IOReporter_IVars(IOService *reportingService, IOReportChannelType channelType, IOReportUnit unit);`](/documentation/DriverKit/IOReporter_IVars/IOReporter_IVars)

Establishes the parameters of all channels for this reporter instance

[`OSSharedPtr<OSArray> copyChannelIDs();`](/documentation/DriverKit/IOReporter_IVars/copyChannelIDs)

[`virtual IOReturn copyElementValues(int element_index, IOReportElementValues *elementValues);`](/documentation/DriverKit/IOReporter_IVars/copyElementValues)

[`virtual IOReturn getChannelIndex(uint64_t channel_id, int *channel_index);`](/documentation/DriverKit/IOReporter_IVars/getChannelIndex)

[`virtual IOReturn getChannelIndices(uint64_t channel_id, int *channel_index, int *element_index);`](/documentation/DriverKit/IOReporter_IVars/getChannelIndices)

[`virtual const IOReportElementValues * getElementValues(int element_index);`](/documentation/DriverKit/IOReporter_IVars/getElementValues)

[`virtual IOReturn getFirstElementIndex(uint64_t channel_id, int *element_index);`](/documentation/DriverKit/IOReporter_IVars/getFirstElementIndex)

[`virtual IOReturn handleAddChannelSwap(uint64_t channel_id, const OSString *symChannelName);`](/documentation/DriverKit/IOReporter_IVars/handleAddChannelSwap)

[`virtual IOReturn handleConfigureReport(IOReportChannelList *channelList, IOReportConfigureAction action, uint32_t & elementCount);`](/documentation/DriverKit/IOReporter_IVars/handleConfigureReport)

[`virtual OSSharedPtr<IOReportLegendEntry> handleCreateLegend();`](/documentation/DriverKit/IOReporter_IVars/handleCreateLegend)

[`virtual void handleSwapCleanup(int swapNChannels);`](/documentation/DriverKit/IOReporter_IVars/handleSwapCleanup)

[`virtual IOReturn handleSwapPrepare(int newNChannels);`](/documentation/DriverKit/IOReporter_IVars/handleSwapPrepare)

[`virtual IOReturn handleUpdateReport(IOReportChannelList *channelList, IOReportConfigureAction action, uint32_t & elementCount, uint8_t * & buffer, size_t & capacity);`](/documentation/DriverKit/IOReporter_IVars/handleUpdateReport)

[`void lockReporter();`](/documentation/DriverKit/IOReporter_IVars/lockReporter)

[`void lockReporterConfig();`](/documentation/DriverKit/IOReporter_IVars/lockReporterConfig)

[`virtual IOReturn setElementValues(int element_index, IOReportElementValues *values, uint64_t record_time);`](/documentation/DriverKit/IOReporter_IVars/setElementValues)

[`void unlockReporter();`](/documentation/DriverKit/IOReporter_IVars/unlockReporter)

[`void unlockReporterConfig();`](/documentation/DriverKit/IOReporter_IVars/unlockReporterConfig)

[`virtual IOReturn updateChannelValues(int channel_index);`](/documentation/DriverKit/IOReporter_IVars/updateChannelValues)

[`IOReturn updateReportChannel(int channel_index, uint32_t & elementCount, uint8_t * & buffer, size_t & capacity);`](/documentation/DriverKit/IOReporter_IVars/updateReportChannel)

Internal method to extract channel data to a destination.

[`bool valid();`](/documentation/DriverKit/IOReporter_IVars/valid)

[`~IOReporter_IVars();`](/documentation/DriverKit/IOReporter_IVars/~IOReporter_IVars)

### Type Methods

[`static OSSharedPtr<IOReportLegendEntry> legendWith(OSArray *channelIDs, OSArray *channelNames, IOReportChannelType channelType, IOReportUnit unit);`](/documentation/DriverKit/IOReporter_IVars/legendWith)

## Relationships

### Inherited By

[`IOSimpleReporter_IVars`](/documentation/DriverKit/IOSimpleReporter_IVars)

[`IOStateReporter_IVars`](/documentation/DriverKit/IOStateReporter_IVars)

[`IOHistogramReporter_IVars`](/documentation/DriverKit/IOHistogramReporter_IVars)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)