---
title: IOHIDInterface
framework: hiddriverkit
role: symbol
role_heading: Class
path: hiddriverkit/iohidinterface
---

# IOHIDInterface

A provider object for a HID device’s interface.

## Declaration

```occ
class IOHIDInterface;
```

## Overview

Overview An IOHIDInterface object represents a specific interface of the HID device. Typically, you don’t create IOHIDInterface objects directly. Instead, you specify that your driver relies on an IOHIDInterface as its provider, and the system creates the interface object for you during the matching process. To use a HID interface object directly, call Open to create a new session between the interface and your custom driver. When calling that method, you specify an OSAction object to execute each time a new report is ready to process. When a new report arrives, the IOHIDInterface object parses the device’s report data, puts the data into a set of IOHIDElement objects, and notifies your action object. Use your action object’s ReportAvailable method to parse the element objects and dispatch events.

## Topics

### Running the Interface

- [init](hiddriverkit/iohidinterface/init.md)
- [free](hiddriverkit/iohidinterface/free.md)

### Managing the Session

- [Open](hiddriverkit/iohidinterface/open.md)
- [Close](hiddriverkit/iohidinterface/close.md)

### Getting and Setting Input Reports

- [ReportAvailable](hiddriverkit/iohidinterface/reportavailable.md)
- [AddReportToPool](hiddriverkit/iohidinterface/addreporttopool.md)
- [processReport](hiddriverkit/iohidinterface/processreport.md)
- [GetReport](hiddriverkit/iohidinterface/getreport.md)
- [SetReport](hiddriverkit/iohidinterface/setreport.md)

### Accessing the Elements of a Report

- [getElements](hiddriverkit/iohidinterface/getelements.md)
- [commitElements](hiddriverkit/iohidinterface/commitelements.md)

## Relationships

### Inherits From

- [IOService](driverkit/ioservice.md)

## See Also

### Providers

- [com.apple.developer.driverkit.family.hid.device](bundleresources/entitlements/com.apple.developer.driverkit.family.hid.device.md)
- [IOUserUSBHostHIDDevice](hiddriverkit/iouserusbhosthiddevice.md)
- [IOUserHIDDevice](hiddriverkit/iouserhiddevice.md)
- [IOHIDDevice](hiddriverkit/iohiddevice.md)
