What is IOCTL?
IOCTL or Input/Output Control refers to a low level system call that is device-specific. Through IOCTL, network and/or software developers are able to effect changes on certain devices which are otherwise not available or not allowed by regular or generic system calls.
Under IOCTL, the request codes involved are specific to a particular device. When the intention is to command a certain device, an IOCTL command is needed for this specific purpose. Like in the case of a DVD-ROM player which is supposedly configured to eject an unrecognizable disk, the IOCTL command is used for the DVD-ROM driver to perform its proper function. In this particular example, the DVD-ROM driver would have to send a request code with IOCTL to specifically instruct the device to do disk-ejection when needed.
Operating systems under Unix or Linux use system call requests with IOCTL functions. Computers running on Mac OS X also recognize IOCTL requests but may have different codes and syntax. Windows operating systems meanwhile don’t recognize IOCTL commands but have a similar function under the WIN32 API. This function is called DeviceIOControl.
The most common use of the IOCTL function is to control specific hardware devices such as DVD-ROMs, USB devices, and many others. But aside from device-specific functions, IOCTL may also be employed in creating terminals for end-user applications. IOCTL also allows for kernel extensions to bridge the gap between userspace codes. This can be applied in cases wherein one needs to improve the efficiency of processing within a computer network. With kernel extensions, bits of information may be segregated without the addition of more system calls within the operating system.
Despite IOCTL’s various functionalities, some experts complain of increasing the complexity of kernel API. Some also argue that using IOCTL makes it more difficult to check and verify system calls within a network. This is also why many experts suggest using the IOCTL function only to handle specific devices with expected outcomes.