---
title: IOUSBHostDevice
framework: usbdriverkit
role: symbol
role_heading: Class
path: usbdriverkit/iousbhostdevice
---

# IOUSBHostDevice

A provider object that represents the USB device.

## Declaration

```occ
class IOUSBHostDevice;
```

## Overview

Overview An IOUSBHostDevice object represents a USB device connected to the user’s Mac. Use this object to retrieve the device’s configuration descriptor and capabilities. You can also iterate over the interfaces that the device uses to communicate. Typically, you don’t create IOUSBHostDevice objects directly. Instead, the system creates one during the matching process for the USB device and passes it as the provider object to your custom driver. To use a host device object, call Open to create a new session between the device and your driver. After successfully opening your session, you can request information from the device, fetch descriptors, and iterate over the available interfaces. Remember to close the session you opened in the Stop method of your driver.

## Topics

### Managing the Device Session

- [Open](usbdriverkit/iousbhostdevice/open.md)
- [Close](usbdriverkit/iousbhostdevice/close.md)
- [Reset](usbdriverkit/iousbhostdevice/reset.md)

### Getting the Device Descriptors

- [CopyCapabilityDescriptors](usbdriverkit/iousbhostdevice/copycapabilitydescriptors.md)
- [CopyConfigurationDescriptor](usbdriverkit/iousbhostdevice/copyconfigurationdescriptor-lej1.md)
- [CopyConfigurationDescriptor](usbdriverkit/iousbhostdevice/copyconfigurationdescriptor-6qgew.md)
- [CopyConfigurationDescriptorWithValue](usbdriverkit/iousbhostdevice/copyconfigurationdescriptorwithvalue.md)
- [CopyDeviceDescriptor](usbdriverkit/iousbhostdevice/copydevicedescriptor.md)
- [CopyStringDescriptor](usbdriverkit/iousbhostdevice/copystringdescriptor-28ybo.md)
- [CopyStringDescriptor](usbdriverkit/iousbhostdevice/copystringdescriptor-9h8l2.md)
- [CopyDescriptor](usbdriverkit/iousbhostdevice/copydescriptor.md)
- [tIOUSBDeviceRequestTypeValue](usbdriverkit/tiousbdevicerequesttypevalue.md)
- [tIOUSBDeviceRequestRecipientValue](usbdriverkit/tiousbdevicerequestrecipientvalue.md)
- [Descriptor Utilities](usbdriverkit/descriptor-utilities.md)

### Disposing of Descriptors

- [IOUSBHostFreeDescriptor](usbdriverkit/iousbhostfreedescriptor-2hkne.md)
- [IOUSBHostFreeDescriptor](usbdriverkit/iousbhostfreedescriptor-2r7k.md)
- [IOUSBHostFreeDescriptor](usbdriverkit/iousbhostfreedescriptor-5j4pp.md)
- [IOUSBHostFreeDescriptor](usbdriverkit/iousbhostfreedescriptor-3fve6.md)

### Requesting Information from the Device

- [DeviceRequest](usbdriverkit/iousbhostdevice/devicerequest.md)
- [AsyncDeviceRequest](usbdriverkit/iousbhostdevice/asyncdevicerequest.md)
- [CompleteAsyncDeviceRequest](usbdriverkit/iousbhostdevice/completeasyncdevicerequest.md)
- [AbortDeviceRequests](usbdriverkit/iousbhostdevice/abortdevicerequests.md)

### Creating Memory Buffers

- [CreateIOBuffer](usbdriverkit/iousbhostdevice/createiobuffer.md)

### Iterating Over the Device Interfaces

- [CreateInterfaceIterator](usbdriverkit/iousbhostdevice/createinterfaceiterator.md)
- [CopyInterface](usbdriverkit/iousbhostdevice/copyinterface.md)
- [DestroyInterfaceIterator](usbdriverkit/iousbhostdevice/destroyinterfaceiterator.md)

### Getting Device Information

- [GetAddress](usbdriverkit/iousbhostdevice/getaddress.md)
- [GetSpeed](usbdriverkit/iousbhostdevice/getspeed.md)
- [GetFrameNumber](usbdriverkit/iousbhostdevice/getframenumber.md)
- [GetPortStatus](usbdriverkit/iousbhostdevice/getportstatus.md)
- [tIOUSBHostConnectionSpeed](usbdriverkit/tiousbhostconnectionspeed.md)
- [tIOUSBHostPortStatus](usbdriverkit/tiousbhostportstatus.md)
- [tIOUSBHostPortType](usbdriverkit/tiousbhostporttype.md)

### Configuring the Device

- [SetConfiguration](usbdriverkit/iousbhostdevice/setconfiguration.md)

### Instance Methods

- [CurrentMicroframe](usbdriverkit/iousbhostdevice/currentmicroframe.md)
- [ReferenceMicroframe](usbdriverkit/iousbhostdevice/referencemicroframe.md)

## Relationships

### Inherits From

- [IOService](driverkit/ioservice.md)

## See Also

### Providers

- [IOUSBHostInterface](usbdriverkit/iousbhostinterface.md)
