Jump To:
Leopard Reference Library
Apple provides information hardware developers can use to create products that are compatible with Macintosh computers and programming interfaces software developers can use to create software that drives or accesses devices.

A guided learning path for hardware and driver developers new to Mac OS X.   Essential information for developing drivers and device-access software.   API references organized by framework.
Document Descriptions
On Off
Display

Sort by
Title
Sorted by
Topic
Sort by
Resource Type
Sort by
Date
Getting a Packet Trace (HTML) (日本語 HTML)
QA1176: Lists tools available for looking at the network packets on the wire.
Bonjour Technical Q&As 2008-06-03
Leopard Technology Series for Developers: OS Foundations (HTML)
Leopard Overview article on system-level updates.
Bonjour Articles 2007-09-04
Mixing link-local IP addresses and routable IP addresses (HTML)
QA1357: Explains how to enable communication between devices with link-local addresses and devices with routable addresses.
Bonjour Technical Q&As 2005-07-06
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Bonjour Technical Q&As 2006-02-22
Registering a Bonjour service multiple times (HTML)
QA1311: Explains why registering the same Bonjour service twice on the same machine doesn't cause a name conflict.
Bonjour Technical Q&As 2003-10-23
The state of mDNSResponder (HTML)
QA1339: Explains how to obtain information regarding the internal state of mDNSResponder.
Bonjour Technical Q&As 2006-10-03
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.
Ethernet Technical Q&As 2008-10-13
BSDLLCTest (HTML) (DMG) (ZIP)
Program sample demonstrates how to send and receive raw LLC Ethernet packets.
Ethernet Sample Code 2003-06-12
Building Universal I/O Kit Drivers (HTML)
TN2163: How to build a universal I/O Kit kernel driver while avoiding common pitfalls.
Ethernet Technical Notes 2008-08-18
Changing the TCP Window Size (HTML)
NW47: Describes how to change the TCP window size in Open Transport.
Ethernet Technical Q&As 1997-03-14
The "chosen" node in the device tree (HTML)
HW88: Describes how to find the "chosen" node in the Open firmware device tree.
Ethernet Technical Q&As 2000-09-05
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Ethernet Technical Q&As 2001-12-05
Ethernet Developer Note (HTML)
Provides an overview of Ethernet technology and describes its implementation in Mac computers.
Ethernet Guides 2008-04-28
ExpressCard Prevents System Sleep (HTML)
QA1517: Describes how some ExpressCard cards can prevent system sleep and how to fix the problem.
Ethernet Technical Q&As 2007-02-28
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
Ethernet Technical Q&As 2008-10-13
GetHWEthernetAddr (HTML) (DMG) (ZIP)
Deprecated - Shows how to obtain the hardware Ethernet address of a machine.
Ethernet Sample Code 2003-01-14
GetMACAddressSample (HTML) (DMG) (ZIP)
Demonstrates how to retrieve the MAC address for each Ethernet interface from the Mac OS X I/O Registry.
Ethernet Sample Code 2003-01-14
GetPrimaryMACAddress (HTML) (DMG) (ZIP)
Demonstrates retrieving the MAC address of the built-in Ethernet controller. Useful for uniquely identifying a Macintosh system.
Ethernet Sample Code 2005-10-27
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.
Ethernet Reference 2009-03-04
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.
Ethernet 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.
Ethernet 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.
Ethernet Technical Q&As 2002-01-15
Issues with boot time KEXT loading (HTML) (日本語 HTML)
QA1087: Explains how to solve problems with loading KEXTs at boot time.
Ethernet Technical Q&As 2004-01-15
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
Ethernet Reference 2009-01-06
Making sense of IOKit error codes (HTML) (日本語 HTML)
QA1075: Explains how to interpret I/O Kit error codes.
Ethernet Technical Q&As 2002-02-07
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Ethernet Technical Q&As 2006-02-22
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.
Ethernet Technical Q&As 2002-02-13
Understanding and Debugging Kernel Panics (HTML) (日本語 HTML)
TN2063: Addresses kernel panics: what they are and how to debug the code that caused the panic.
Ethernet Technical Notes 2008-08-14
What are configuration variables in Open Firmware? (HTML) (日本語 HTML)
HW38: Defines the configuration variables in Open Firmware.
Ethernet Technical Q&As 1999-02-15
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.
Fibre Channel Technical Q&As 2008-10-13
Building Universal I/O Kit Drivers (HTML)
TN2163: How to build a universal I/O Kit kernel driver while avoiding common pitfalls.
Fibre Channel Technical Notes 2008-08-18
Disk Arbitration Framework Reference (HTML)
Describes Disc Arbitration API, which includes information on mount/unmount notification and dissent.
Fibre Channel Reference 2008-04-08
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
Fibre Channel Technical Q&As 2001-12-05
ExpressCard Prevents System Sleep (HTML)
QA1517: Describes how some ExpressCard cards can prevent system sleep and how to fix the problem.
Fibre Channel Technical Q&As 2007-02-28
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
Fibre Channel 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.
Fibre Channel Guides 2006-05-23
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.
Fibre Channel Reference 2009-03-04
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.
Fibre Channel 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.
Fibre Channel 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.
Fibre Channel Technical Q&As 2002-01-15
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
Fibre Channel Reference 2009-01-06
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
Fibre Channel Technical Notes 2007-03-23
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
Fibre Channel Technical Q&As 2006-02-22
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.
Fibre Channel Technical Q&As 2002-02-13
SCSIOldAndNew (HTML) (DMG) (ZIP)
Demonstrates a backward-compatible technique for communicating with SCSI parallel devices on Mac OS X.
Fibre Channel Sample Code 2006-12-07
Sending SCSI or ATA commands to storage devices (HTML) (日本語 HTML)
QA1179: Explains that Mac OS X does not implement SCSI or ATA pass-through for many mass storage devices.
Fibre Channel Technical Q&As 2005-05-10
SimpleUserClient (HTML) (DMG) (ZIP)
Shows how to create a user client for an I/O Kit kernel driver.
Fibre Channel Sample Code 2008-08-27
USBPrivateDataSample (HTML) (DMG) (ZIP)
Demonstrates notifications when a USB device is hotplugged and associating arbitrary data with each device.
Fibre Channel Sample Code 2006-10-16
VendorSpecificType00 (HTML) (DMG) (ZIP)
Demonstrates how to access vendor-specific storage device functionality using a simple interface from user space code.
Fibre Channel Sample Code 2006-10-02
What are configuration variables in Open Firmware? (HTML) (日本語 HTML)
HW38: Defines the configuration variables in Open Firmware.
Fibre Channel Technical Q&As 1999-02-15
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.
FireWire Technical Q&As 2008-10-13
AppleFWAudio Vendor Specific Override Driver (HTML) (DMG) (ZIP)
This KEXT allows third-party vendors to customize AppleFWAudio with their own device-specific information.
FireWire Sample Code 2007-06-01
Available FireWire Isochronous Bandwidth (HTML)
QA1356: Discusses attempting to "pre-flight" an isochronous bandwidth allocation request by reading the currently available bandwidth.
FireWire Technical Q&As 2004-07-07
Building Universal I/O Kit Drivers (HTML)
TN2163: How to build a universal I/O Kit kernel driver while avoiding common pitfalls.
FireWire Technical Notes 2008-08-18
The dreaded "incompatible flag -framework" error (HTML)
QA1096: Explains how to eliminate the incompatible flag -framework error in Project Builder.
FireWire Technical Q&As 2001-12-05
FireWire Audio User Library Framework Reference (HTML)
Describes the API that supports user-space access to FireWire audio devices and enables the creation of virtual FireWire audio devices.
FireWire Reference 2008-04-08
FireWire Developer Note (HTML)
Provides an overview of FireWire (IEEE 1394) and describes support for it on Mac computers.
FireWire Guides 2008-04-28
FireWire Device Interface Guide (HTML) (PDF)
Explains how to develop applications to communicate with or control FireWire devices and units.
FireWire Guides 2007-02-08
FireWire: DCL Programs Under Mac OS X (HTML) (日本語 HTML)
TN2072: Describes the structure and creation of DCL programs under Mac OS X.
FireWire Technical Notes 2003-06-21
Generating a Non-Maskable Interrupt (NMI) (HTML) (日本語 HTML)
QA1264: Explains how to generate a non-maskable interrupt (NMI) on modern Macintosh systems.
FireWire Technical Q&As 2008-10-13
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.
FireWire Reference 2009-03-04
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.
FireWire 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.
FireWire 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.
FireWire Technical Q&As 2002-01-15
iSight Programming Guide (HTML) (PDF)
Describes the Apple iSight video camera and its enhancements.
FireWire Guides 2004-10-05
Issues with boot time KEXT loading (HTML) (日本語 HTML)
QA1087: Explains how to solve problems with loading KEXTs at boot time.
FireWire Technical Q&As 2004-01-15
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
FireWire Reference 2009-01-06
Making sense of IOKit error codes (HTML) (日本語 HTML)
QA1075: Explains how to interpret I/O Kit error codes.
FireWire Technical Q&As 2002-02-07
The "packages" node in the device tree (HTML)
HW90: Describes the "packages" node in the Open Firmware device tree.
FireWire Technical Q&As 2006-02-22
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.
FireWire Technical Q&As 2002-02-13
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.
FireWire Technical Q&As 2008-09-24
Sending SCSI or ATA commands to storage devices (HTML) (日本語 HTML)
QA1179: Explains that Mac OS X does not implement SCSI or ATA pass-through for many mass storage devices.
FireWire Technical Q&As 2005-05-10
simpleAVC (HTML) (DMG) (ZIP)
Shows how to discover and send commands to AVC devices connected by FireWire.
FireWire 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.
FireWire Technical Notes 2008-08-14
USBPrivateDataSample (HTML) (DMG) (ZIP)
Demonstrates notifications when a USB device is hotplugged and associating arbitrary data with each device.
FireWire Sample Code 2006-10-16
Use the Doorbell (HTML) (日本語 HTML)
Deprecated - FW01: Explains the function of the FireWire Serial Bus Protocol 2 (SBP2) doorbell.
FireWire Technical Q&As 1999-05-17
VendorSpecificType00 (HTML) (DMG) (ZIP)
Demonstrates how to access vendor-specific storage device functionality using a simple interface from user space code.
FireWire Sample Code 2006-10-02
Video capture with multiple IIDC cameras (HTML)
QA1365: Discusses factors which influence the number of IIDC cameras that can simultaniously be used for capture.
FireWire Technical Q&As 2008-08-08
What are configuration variables in Open Firmware? (HTML) (日本語 HTML)
HW38: Defines the configuration variables in Open Firmware.
FireWire Technical Q&As 1999-02-15
What are snag keys in Open Firmware? (HTML) (日本語 HTML)
HW35: Explains Open Firmware snag keys, including examples of their function.
FireWire Technical Q&As 1999-02-15
What is unsolicited status? (HTML) (日本語 HTML)
FW03: Explains the meaning and usage of the SBP-2 unsolicited status message.
FireWire Technical Q&As 1999-05-17
Accessing Hardware From Applications (HTML) (PDF)
Tips and guidelines for developing applications that communicate with or control devices.
General Guides 2007-02-08
Coding in the Kernel (HTML)
Considerations and caveats about programming in the kernel.
General Guides 2005-11-09
Disk Arbitration Framework Reference (HTML)
Describes Disc Arbitration API, which includes information on mount/unmount notification and dissent.
General Reference 2008-04-08
Hardware Developer Note Terms and Abbreviations (HTML)
Lists common terms and abbreviations used in Apple's Hardware Developer Notes.
General Guides 2006-08-08
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.
General 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.
General Reference 2009-03-04
I/O Kit Fundamentals (HTML) (PDF)
The basics of developing device drivers. Includes descriptions of I/O Kit families.
General 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.
General Release Notes 2007-10-31
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
General Reference 2009-01-06
Kernel Programming Guide (HTML) (PDF)
Essential information for programming in the Mac OS X kernel. Includes a high-level overview.
General Guides 2006-11-07
Leopard Technology Series for Developers: OS Foundations (HTML)
Leopard Overview article on system-level updates.
General Articles 2007-09-04
MacBook Developer Note (HTML)
Specifies the internal design, I/O features, and expansion capabilities of the MacBook computer introduced in February 2008.
General Guides 2008-03-04
Cocoa OpenGL (HTML) (DMG) (ZIP)
Demonstrates using Cocoa with OpenGL, including window setup and event handling.
Graphics & Imaging Sample Code 2007-10-22
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.
Graphics & Imaging Reference 2009-03-04
Image Capture Applications Programming Guide (HTML) (PDF)
Describes the interaction between applications programs and image capture devices such as cameras and scanners.
Graphics & Imaging Guides 2007-05-16
Image Capture Device Modules Reference (HTML)
Describes the API to add support for image capture devices, such as cameras, phones, and scanners, to Mac OS X.
Graphics & Imaging Reference 2008-04-08
iSight Programming Guide (HTML) (PDF)
Describes the Apple iSight video camera and its enhancements.
Graphics & Imaging Guides 2004-10-05
Kernel Framework Reference (HTML)
Describes the APIs and classes (including I/O Kit families) that support kernel-resident device drivers.
Graphics & Imaging Reference 2009-01-06
Quartz Display Services Reference (HTML) (PDF)
Describes the interface for configuring and controlling display hardware.
Graphics & Imaging Reference 2008-11-19