<!--
{
  "availability" : [
    "macCatalyst: 13.1.0 - 13.1.0",
    "macOS: 10.0.0 - 10.5.0"
  ],
  "documentType" : "symbol",
  "framework" : "CoreAudio",
  "identifier" : "/documentation/CoreAudio/AudioDeviceAddIOProc",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Core Audio"
    ],
    "preciseIdentifier" : "c:@F@AudioDeviceAddIOProc"
  },
  "title" : "AudioDeviceAddIOProc"
}
-->

# AudioDeviceAddIOProc

```
extern OSStatus AudioDeviceAddIOProc(AudioDeviceID inDevice, AudioDeviceIOProc inProc, void *inClientData);
```

## Parameters

`inDevice`

The AudioDevice to register the IOProc with.

`inProc`

The AudioDeviceIOProc to register.

`inClientData`

A pointer to client data that is passed back to the IOProc when it is
called.

## Return Value

An OSStatus indicating success or failure.

## Discussion

\abstract Registers the given AudioDeviceIOProc with the AudioDevice.
\discussion A client may have multiple IOProcs for a given device, but the device is free to
only accept as many as it can handle. Note that it is not recommended for
clients to have more than a single IOProc registered at a time as this can be
wasteful of system resources. Rather, it is recommended that the client do any
necessary mixing itself so that only one IOProc is necessary.
This routine has been deprecated in favor of AudioDeviceCreateIOProcID().

---

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)