---
title: ctl_deregister
framework: Kernel
role: symbol
role_heading: Function
platforms: [macOS 10.13+]
path: kernel/1809161-ctl_deregister
---

# ctl_deregister

## Declaration

```occ
errno_t ctl_deregister(kern_ctl_ref kctlref);
```

## Parameters

- `kctlref`: The control reference of the control to unregister.

## Return Value

Return Value 0 - Kernel control was unregistered. EINVAL - The kernel control reference was invalid. EBUSY - The kernel control has clients still attached.

## Discussion

Discussion Unregister a kernel control. A kernel extension must unregister it's kernel control(s) before unloading. If a kernel control has clients attached, this call will fail.

## See Also

### control

- [ctl_enqueuedata](kernel/1809168-ctl_enqueuedata.md)
- [ctl_enqueuembuf](kernel/1809171-ctl_enqueuembuf.md)
- [ctl_getenqueuereadable](kernel/2919907-ctl_getenqueuereadable.md)
- [ctl_getenqueuespace](kernel/1809173-ctl_getenqueuespace.md)
- [ctl_register](kernel/1809176-ctl_register.md)
