---
title: IOUserUSBHostHIDDevice
framework: hiddriverkit
role: symbol
role_heading: Class
path: hiddriverkit/iouserusbhosthiddevice
---

# IOUserUSBHostHIDDevice

A provider object for USB devices that support HID interactions.

## Declaration

```occ
class IOUserUSBHostHIDDevice;
```

## Overview

Overview An IOUserUSBHostHIDDevice object is a fully functional provider object that represents a USB-based HID device. Typically, you don’t create IOUserUSBHostHIDDevice objects directly. Instead, you specify that your driver relies on an IOUserUSBHostHIDDevice as its provider, and the system creates the interface object for you during the matching process. When implementing a custom driver, use this provider object to manage the connection to the underlying device. Specifically, use it to get reports from the device and to manage the device’s configuration. For example, use the object to configure the USB device’s idle policy. Subclass IOUserUSBHostHIDDevice only when you want to customize the interactions with the USB device. For example, you might use a custom subclass to initialize the USB device in a particular way or support a custom transport mechanism. You can also use a custom subclass to perform additional processing on the report data. Specify the Driver’s Personality Information When you subclass IOUserUSBHostHIDDevice, update the IOKitPersonalities key of your driver extension’s Info.plist file with information to match your driver to appropriate hardware. For this class, always include the keys and values in the following table.  |   |   |   |   |  You may add other keys to assist with the matching process. For example, you might include the VendorID, ProductID, PrimaryUsagePage, and PrimaryUsage keys to match against specific USB devices and HID usage types. The USB specification defines which keys to include when matching your driver to a USB device. For information about the specific key combinations, see Universal Serial Bus Common Class Specification at https://www.usb.org.

## Topics

### Running the Service

- [init](hiddriverkit/iouserusbhosthiddevice/init.md)
- [Start](hiddriverkit/iouserusbhosthiddevice/start.md)
- [handleStart](hiddriverkit/iouserusbhosthiddevice/handlestart.md)
- [Stop](hiddriverkit/iouserusbhosthiddevice/stop.md)
- [free](hiddriverkit/iouserusbhosthiddevice/free.md)

### Getting the Device Description

- [newDeviceDescription](hiddriverkit/iouserusbhosthiddevice/newdevicedescription.md)

### Managing Device Reports

- [newReportDescriptor](hiddriverkit/iouserusbhosthiddevice/newreportdescriptor.md)
- [getReport](hiddriverkit/iouserusbhosthiddevice/getreport-6stqs.md)
- [getReport](hiddriverkit/iouserusbhosthiddevice/getreport-2v8zk.md)
- [setReport](hiddriverkit/iouserusbhosthiddevice/setreport.md)
- [initInputReport](hiddriverkit/iouserusbhosthiddevice/initinputreport.md)
- [CompleteInputReport](hiddriverkit/iouserusbhosthiddevice/completeinputreport.md)
- [scheduleInputReportRetry](hiddriverkit/iouserusbhosthiddevice/scheduleinputreportretry.md)
- [cancelInputReportRetry](hiddriverkit/iouserusbhosthiddevice/cancelinputreportretry.md)
- [TimerOccurred](hiddriverkit/iouserusbhosthiddevice/timeroccurred.md)

### Configuring the Device

- [setProtocol](hiddriverkit/iouserusbhosthiddevice/setprotocol.md)
- [setIdle](hiddriverkit/iouserusbhosthiddevice/setidle.md)
- [setIdlePolicy](hiddriverkit/iouserusbhosthiddevice/setidlepolicy.md)
- [setProperty](hiddriverkit/iouserusbhosthiddevice/setproperty.md)
- [reset](hiddriverkit/iouserusbhosthiddevice/reset.md)
- [USBIdlePolicyType](hiddriverkit/usbidlepolicytype.md)

### Configuring Private Settings

- [initPipes](hiddriverkit/iouserusbhosthiddevice/initpipes.md)
- [getHIDDescriptorInfo](hiddriverkit/iouserusbhosthiddevice/gethiddescriptorinfo.md)
- [CompleteZLP](hiddriverkit/iouserusbhosthiddevice/completezlp.md)
- [copyStringAtIndex](hiddriverkit/iouserusbhosthiddevice/copystringatindex.md)

### Instance Methods

- [CompleteOutputReport](hiddriverkit/iouserusbhosthiddevice/completeoutputreport.md)
- [CompleteOutputRequest](hiddriverkit/iouserusbhosthiddevice/completeoutputrequest.md)
- [getAction](hiddriverkit/iouserusbhosthiddevice/getaction.md)
- [isBulkPipeSupported](hiddriverkit/iouserusbhosthiddevice/isbulkpipesupported.md)
- [returnAction](hiddriverkit/iouserusbhosthiddevice/returnaction.md)

## Relationships

### Inherits From

- [IOUserHIDDevice](hiddriverkit/iouserhiddevice.md)

## See Also

### Providers

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