The I/O Kit provides an object-oriented framework for developing drivers on Mac OS X.
Drivers written using the framework inherit from a suitable base class that is chosen based on the functionality that the driver implements. The I/O Kit provides base classes for drivers such as audio input and output streams, serial ports, and disk devices.
A driver accesses its hardware through an object known as its provider, which allows communication with hardware in a way that is natural to the bus on which the hardware is connected.
A driver is loaded only when its hardware is present in the system, as described by matching criteria described in the driver's property list.
The I/O Kit is built on top of a library known as libkern, which provides runtime support to the kernel by way of object instantiation, reference counting, and container classes.