This documentation describes the details of the programming interface for accessing USB devices and USB interfaces from code running in user space. This documentation assumes that you have a basic understanding of the material contained in Accessing Hardware From Applications For definitions of I/O Kit terms used in this documentation, such as matching dictionary, family, and driver, see the overview of I/O Kit terms and concepts in the "Device Access and the I/O Kit" chapter of Accessing Hardware From Applications.

This documentation also assumes you have read Working With USB Device Interfaces. Please review that document before using this reference.

All of the information described in this document is contained in the header file IOUSBLib.h found at /System/Library/Frameworks/IOKit.framework/Headers/usb/IOUSBLib.h.

Included Headers

  • <IOKit/usb/USB.h>

  • <IOKit/IOKitLib.h>

  • <CoreFoundation/CFRunLoop.h>

  • <CoreFoundation/CFPlugIn.h>

  • <CoreFoundation/CFPlugInCOM.h>

  • <sys/cdefs.h>




Find the next descriptor of the requested type associated with the interface.


Gets a recent frame number of the bus to which the device is attached, along with a system time corresponding to the start of that frame


Gets the properties for a pipe, including the USB SuperSpeed endpoint companion properties.


See the Overview for header-level documentation.