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

# CreateMemoryDescriptorRing

```
virtual kern_return_t CreateMemoryDescriptorRing(uint32_t size);
```

## Parameters

`size`

Size of the ring.

## Return Value

KERN_SUCCESS is successful see IOReturn.h for error codes.

## Discussion\abstract Create a memory descriptor ring to use with AsyncIOBundled().
\discussion The ring size should be large enough to hold all the memory descriptors to be used with the pipe.
The ring must only be created once, and will be freed by the kernel driver when the pipe is destroyed.

---

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)