<!--
{
  "availability" : [
    "DriverKit: 19.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "USBDriverKit",
  "identifier" : "/documentation/USBDriverKit/IOUSBHostPipe/IsochIO",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "USBDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOUSBHostPipe@F@IsochIO#*$@S@IOMemoryDescriptor#S0_#k#*$@S@OSAction#"
  },
  "title" : "IsochIO"
}
-->

# IsochIO

Performs a synchronous or asynchronous request on an isochronous endpoint.

```
virtual kern_return_t IsochIO(IOMemoryDescriptor *dataBuffer, IOMemoryDescriptor *frameList, uint64_t firstFrameNumber, OSAction *completion);
```

## Parameters

`dataBuffer`

The buffer to store the data. When transferring data to the device, this buffer contains the data to send. When receiving data from the device, this buffer is empty initially.

`frameList`

A valid memory descriptor containing the frame list, which is an array of [`IOUSBIsochronousFrame`](/documentation/USBDriverKit/IOUSBIsochronousFrame) structures. For example, a frame list with 8 frames should be of size `(sizeof(IOUSBIsochronousFrame) * 8)`.

`firstFrameNumber`

The starting frame number for the request. You can get the current frame number from the [`GetFrameNumber`](/documentation/USBDriverKit/IOUSBHostDevice/GetFrameNumber) method of [`IOUSBHostDevice`](/documentation/USBDriverKit/IOUSBHostDevice) or [`IOUSBHostInterface`](/documentation/USBDriverKit/IOUSBHostInterface). Specify `0` to begin the transfer on the next available frame (XHCI only).

`completion`

An optional completion handler. To create a synchronous I/O request, specify `NULL`. To create an asynchronous request, provide an appropriate action method with your callback routine. This method copies your action object, so you can allocate that object on the stack if you prefer.

## Return Value

<doc://com.apple.documentation/documentation/DriverKit/kIOReturnSuccess> on success, or another value if an error occurs. See <doc://com.apple.documentation/documentation/DriverKit/error-codes>.

## Discussion

Use this method to issue isochronous requests. Allocate and initialize an array of [`IOUSBIsochronousFrame`](/documentation/USBDriverKit/IOUSBIsochronousFrame) structures, which describe the frames to transfer. See [`IOUSBIsochronousFrame`](/documentation/USBDriverKit/IOUSBIsochronousFrame) for information regarding structure initialization requirements and usage.

---

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)