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

# IOHIDDevice

An object containing the low-level behavior for all HID device providers.

```
class IOHIDDevice;
```

## Overview

`IOHIDDevice` is the abstract base class for provider objects that represent a human interface device. This class defines the basic interface that subclasses use to manage reports. Don’t create instances of this class directly. Instead, subclass [`IOUserHIDDevice`](/documentation/HIDDriverKit/IOUserHIDDevice) or [`IOUserUSBHostHIDDevice`](/documentation/HIDDriverKit/IOUserUSBHostHIDDevice) to define the behavior of your custom device provider.

## Topics

### Processing Device Reports

[`virtual kern_return_t handleReport(uint64_t timestamp, IOMemoryDescriptor *report, uint32_t reportLength, IOHIDReportType reportType, IOOptionBits options);`](/documentation/HIDDriverKit/IOHIDDevice/handleReport)

Handles an asynchronous report received from the HID device.

[`virtual kern_return_t getReport(IOMemoryDescriptor *report, IOHIDReportType reportType, IOOptionBits options, uint32_t completionTimeout, OSAction *action);`](/documentation/HIDDriverKit/IOHIDDevice/getReport)

Gets a report from the HID device.

[`virtual kern_return_t setReport(IOMemoryDescriptor *report, IOHIDReportType reportType, IOOptionBits options, uint32_t completionTimeout, OSAction *action);`](/documentation/HIDDriverKit/IOHIDDevice/setReport)

Sends a report to the HID device.

[`virtual void CompleteReport(OSAction *action, IOReturn status, uint32_t actualByteCount);`](/documentation/HIDDriverKit/IOHIDDevice/CompleteReport)

Completes all async requests made when getting or setting a report.

[Report Options](/documentation/HIDDriverKit/Report-Options-enum)

The enumerated report options.

### Setting Device Properties

[`virtual void setProperty(OSObject *key, OSObject *value);`](/documentation/HIDDriverKit/IOHIDDevice/setProperty)

Updates the specified property on the corresponding kernel object.

## Relationships

### Inherited By

[`IOUserHIDDevice`](/documentation/HIDDriverKit/IOUserHIDDevice)

### Inherits From

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

---

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)