Jump To:
Leopard Reference Library: Darwin
The I/O Kit is the device driver subsystem of Mac OS X and is part of Darwin. The I/O Kit provides a set of C functions and C++ classes, including object-oriented abstractions common to various families of drivers. In addition, for many device types, the I/O Kit provides a device interface that enables an application to communicate with and control a device from user space.

View all Hardware & Drivers Reference Library.
Document Descriptions
On Off
Display

Sorted by
Title
Sort by
Resource Type
Sort by
Date
Accessing Hardware From Applications (HTML) (PDF)
Tips and guidelines for developing applications that communicate with or control devices.
Guides 2007-02-08
Allocating and sharing memory with user space from an I/O Kit driver (HTML) (日本語 HTML)
QA1197: Describes the preferred technique for allocating and sharing buffers in an I/O Kit kernel driver.
Technical Q&As 2008-10-13
Are the Name Registry device tree nodes unique? (HTML)
Deprecated - HW64: Discusses whether Name Registry nodes copied from the Open Firmware device tree are unique.
Technical Q&As 1999-10-11
Audio Device Driver Programming Guide (HTML) (PDF)
Explains how to develop kernel-resident drivers for audio devices.
Guides 2009-03-04
Bluetooth Framework Reference (HTML)
Describes the C and Objective-C APIs that support user-space access to Bluetooth devices.
Reference 2008-10-15
Bluetooth User Interface Framework Reference (HTML)
Describes the C and Objective-C APIs that provide a consistent user interface to Bluetooth services.
Reference 2008-04-08
Building Universal I/O Kit Drivers (HTML)
TN2163: How to build a universal I/O Kit kernel driver while avoiding common pitfalls.
Technical Notes 2008-08-18
Can't attach during two-machine debugging with GDB (HTML) (日本語 HTML)
Deprecated - QA1019: Describes a workaround for a problem attaching during two-machine debugging on Mac OS X 10.0.x.
Technical Q&As 2003-06-02
CCL Modem Scripting Guide (HTML) (PDF)
Guides 2007-06-28
CCL Modem Scripting Release Notes (HTML)
Explains changes to modem CCLs for Mac OS X v10.5 and what to do to change existing and supersede older scripts.
Release Notes 2007-10-31
CD-ROM Driver Calls (HTML)
Deprecated - DV22: Discusses public interface to Apple CD-ROM driver and supersedes information in AppleCD SC Developer's Guide.
Technical Notes 2000-08-14
Device File Access Guide for Serial Devices (HTML) (PDF)
Guidelines for using I/O Kit and POSIX functions to develop applications that communicate with serial devices.
Guides 2005-12-06
Device File Access Guide for Storage Devices (HTML) (PDF)
Guidelines for using I/O Kit and POSIX functions to develop applications that communicate with storage devices.
Guides 2007-03-06
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Technical Q&As 2001-12-05
Driver Tuning on Panther or G5 (HTML) (日本語 HTML)
TN2090: Describes potential issues when using drivers in Panther or later, or on a Power Macintosh G5.
Technical Notes 2003-06-24
ExpressCard Prevents System Sleep (HTML)
QA1517: Describes how some ExpressCard cards can prevent system sleep and how to fix the problem.
Technical Q&As 2007-02-28
FireWire Device Interface Guide (HTML) (PDF)
Explains how to develop applications to communicate with or control FireWire devices and units.
Guides 2007-02-08
Force Feedback Framework Reference (HTML)
Describes the public interfaces to the Force Feedback implementation in Mac OS X, including support for plug-ins.
Reference 2008-04-08
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
Technical Q&As 2008-10-13
HBA Device Driver Programming Guide (HTML) (PDF)
Describes how to develop a high-performance, kernel-resident driver for an HBA device.
Guides 2006-05-23
HID Class Device Interface Guide (HTML) (PDF)
Explains how to develop applications to communicate with or control HID class devices.
Guides 2009-05-06
I/O Kit Device Driver Design Guidelines (HTML) (PDF)
Design guidelines and tips for developing, debugging, and deploying kernel-resident device drivers, including user clients.
Guides 2007-03-06
I/O Kit Framework Reference (HTML)
Describes the I/O Kit classes that support non-kernel access to I/O Kit objects through the device-interface mechanism.
Reference 2009-03-04
I/O Kit Fundamentals (HTML) (PDF)
The basics of developing device drivers. Includes descriptions of I/O Kit families.
Guides 2007-05-17
I/O Kit Power Management Release Notes (HTML)
Describes the latest changes to power management for Mac OS X v10.5.
Release Notes 2007-10-31
Installing an I/O Kit KEXT Without Rebooting (HTML)
QA1319: Describes the state of the art of installing I/O Kit kernel extensions (KEXTs) without requiring a restart.
Technical Q&As 2003-10-28
IODeviceTree and the I/O Registry (HTML) (日本語 HTML)
QA1120: Describes the IODeviceTree plane in the Mac OS X I/O Registry.
Technical Q&As 2008-09-18
IOKit Framework Headers (HTML) (日本語 HTML)
QA1107: Describes the differences between the headers in IOKit.framework and the I/O Kit headers in Kernel.framework.
Technical Q&As 2002-01-15
IOKitWithLibrary (HTML) (DMG) (ZIP)
Shows how an I/O Kit driver can link with a C library from a separate kernel extension.
Sample Code 2003-08-27
IOLog and Interrupt Context (HTML) (日本語 HTML)
QA1100: Describes when IOKit runs at primary (hardware) interrupt context.
Technical Q&As 2002-02-13
IOPrintSuperClasses (HTML) (DMG) (ZIP)
Given the name of a class, this tool will print all of the super-classes of that class.
Sample Code 2005-08-17
Issues with boot time KEXT loading (HTML) (日本語 HTML)
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Technical Q&As 2004-01-15
Kernel Core Dumps (HTML)
TN2118: Explains how to gather and use remote kernel core dumps.
Technical Notes 2008-11-12
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
Reference 2009-01-06
Mac OS X and root access (HTML)
QA1013: Describes how to enable root access in Mac OS X.
Technical Q&As 2008-09-16
Making sense of IOKit error codes (HTML) (日本語 HTML)
QA1075: Explains how to interpret I/O Kit error codes.
Technical Q&As 2002-02-07
Mass Storage Device Driver Programming Guide (HTML) (PDF)
Background and task information about developing kernel-resident drivers for mass storage devices.
Guides 2007-04-03
Multipathing with FibreChannel on Mac OS X (HTML)
TN2173: An explanation on how FibreChannel multipathing works on Mac OS X and how to design storage hardware to take advantage of it
Technical Notes 2007-03-23
Network Device Driver Programming Guide (HTML) (PDF)
Background and task information about developing network drivers for Mac OS X.
Guides 2008-03-11
Open Firmware Memory bus speed (HTML)
HW97: Describes a method to display memory bus speed for G3 or G4 Macintosh in Open Firmware.
Technical Q&As 2000-09-22
PCI/PCI-X slots on the Power Mac G5 (HTML)
QA1307: Discusses installing PCI/PCI-X cards of different speeds in the Power Mac G5.
Technical Q&As 2003-09-30
Power Management; Policy Maker vs. Power Controller (HTML) (日本語 HTML)
QA1121: Describes the differences between a Power Management Policy Maker and a Power Management Power Controller.
Technical Q&As 2002-02-13
Programmatically causing restart, shutdown and/or logout (HTML) (日本語 HTML)
QA1134: Describes how to programmatically cause restart, shutdown, sleep or logout.
Technical Q&As 2008-09-24
Registering and unregistering for sleep and wake notifications (HTML)
QA1340: Explains how applications can register and unregister for sleep and wake notifications on Mac OS X.
Technical Q&As 2008-08-08
Retain Counts of io_object_t Objects in IOKit.framework (HTML) (日本語 HTML)
QA1195: Distinguishes between the retain counts of an I/O Kit kernel object and its io_object_t user space proxy.
Technical Q&As 2008-09-24
SampleFilterScheme (HTML) (DMG) (ZIP)
Demonstrates a simple filter scheme which passes all operations through to its provider unchanged.
Sample Code 2006-01-03
SampleUSBAudioPlugin (HTML) (DMG) (ZIP)
USB audio plugin that performs a lowpass filtering operation on audio streamed through an audio USB Device.
Sample Code 2005-03-07
SCSI Architecture Model Device Interface Guide (HTML) (PDF)
Explains how to develop applications that communicate with or control SCSI Architecture Model devices.
Guides 2007-02-08
SCSIHBAEmulator (HTML) (DMG) (ZIP)
Demonstration of how to implement a virtual parallel tasking SCSI host bus adapter (HBA)
Sample Code 2007-02-20
Secrets of the GPT (HTML)
TN2166: Describes the new partition map format used by Intel-based Macintosh computers.
Technical Notes 2006-11-06
SimpleDataQueue (HTML) (DMG) (ZIP)
Implements an IODataQueue inside an I/O Kit KEXT which passes events and data to user space.
Sample Code 2003-01-14
SimpleUserClient (HTML) (DMG) (ZIP)
Shows how to create a user client for an I/O Kit kernel driver.
Sample Code 2008-08-27
Sleep vs. Doze on Mac OS X (HTML)
QA1309: Discusses and demonstrates sleep versus doze detection on Machintosh Mac OS X
Technical Q&As 2003-10-09
TimerEventSample (HTML) (DMG) (ZIP)
Shows how to set up and use an IOTimerEventSource in a kext.
Sample Code 2003-01-14
Understanding and Debugging Kernel Panics (HTML) (日本語 HTML)
TN2063: Addresses kernel panics: what they are and how to debug the code that caused the panic.
Technical Notes 2008-08-14
USB Device Interface Guide (HTML) (PDF)
Provides background information and sample code for developing applications to communicate with or control USB devices and interfaces.
Guides 2007-09-04
User-Mode USB Device Arbitration (HTML)
Information about using USB device arbitration, available in Mac OS X version 10.1 and later.
Guides 2002-02-06
VendorSpecificType00 (HTML) (DMG) (ZIP)
Demonstrates how to access vendor-specific storage device functionality using a simple interface from user space code.
Sample Code 2006-10-02
VolumeToBSDNode (HTML) (DMG) (ZIP)
Shows how to iterate across all mounted volumes and retrieve their BSD node names.
Sample Code 2006-10-16
Working with Configuration Variables (HTML) (日本語 HTML)
QA1119: Explains how to delete a specific Open Firmware configuration variable without using Command-Option-P-R.
Technical Q&As 2002-02-13
Writing PCI Drivers (HTML) (PDF)
Conceptual information about writing I/O Kit drivers for PCI, AGP, and CardBus (PC Card) devices.
Guides 2006-04-04