<!--
{
  "availability" : [
    "driverkit: 19.0.0 -",
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "HIDDriverKit",
  "identifier" : "/documentation/HIDDriverKit/IOHIDInterface/AddReportToPool",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "HIDDriverKit"
    ],
    "preciseIdentifier" : "c:@S@IOHIDInterface@F@AddReportToPool#*$@S@IOBufferMemoryDescriptor#"
  },
  "title" : "AddReportToPool"
}
-->

# AddReportToPool

Adds a memory descriptor to the report pool.

```
virtual kern_return_t AddReportToPool(IOBufferMemoryDescriptor *report);
```

## Parameters

`report`

A memory descriptor large enough to hold input reports from the device. The interface writes zeros to the descriptor’s bytes before using it to store a new input report.

## 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

When implementing a custom driver or event service, call this method to add one or more memory descriptors to a shared resource pool. When an input report arrives from the device, the interface removes a memory descriptor from the pool, fills it with the report data, and calls the [`ReportAvailable`](/documentation/HIDDriverKit/IOHIDInterface/ReportAvailable) method of the session’s action object.

You are responsible for ensuring the pool has enough memory descriptors to store incoming reports. One way to maintain a sufficient supply of memory descriptors is to recycle them. In your action object’s `ReportAvailable` method, process the report and add the provided memory descriptor back to the pool when you are done.

---

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)