<!--
{
  "availability" : [
    "DriverKit: -",
    "iOS: -",
    "iPadOS: -",
    "macOS: -"
  ],
  "documentType" : "symbol",
  "framework" : "DriverKit",
  "identifier" : "/documentation/DriverKit/SUPERDISPATCH",
  "metadataVersion" : "0.1.0",
  "role" : "Macro",
  "symbol" : {
    "kind" : "Macro",
    "modules" : [
      "DriverKit"
    ],
    "preciseIdentifier" : "c:@macro@SUPERDISPATCH"
  },
  "title" : "SUPERDISPATCH"
}
-->

# SUPERDISPATCH

Tells the system to execute the superclass’ implementation of the current method in the kernel.

```
#define SUPERDISPATCH
```

## Discussion

When calling the DriverKit implementation of a method that runs in the kernel, use this macro to bridge from your driver extension’s process space to the superclass’ version of the method. You must use this macro to call inherited DriverKit methods annotated with the [`IIG_KERNEL`](/documentation/DriverKit/IIG_KERNEL) macro.

To use this macro, call the original method without the `super` prefix and insert this macro as the final parameter in the parameter list. For example, the following code shows how to call the inherited version of the [`Start`](/documentation/DriverKit/IOService/Start) method from a custom [`IOService`](/documentation/DriverKit/IOService) subclass.

```objc
kern_return_t IMPL(MyCustomService, Start)
{
   kern_return_t ret;
   ret = Start(provider, SUPERDISPATCH);

   // Other Start code...
}
```

Don’t use this macro when calling the inherited version of a DriverKit method marked with the [`LOCALONLY`](/documentation/DriverKit/LOCALONLY) macro.

---

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)