I/O Kit Fundamentals
PDF
Introduction
What Is the I/O Kit?
Before You Begin
I/O Kit Features
Design Principles of the I/O Kit
Limitations of the I/O Kit
Language Choice
The Parts of the I/O Kit
Should You Program in the Kernel?
Architectural Overview
Driver Layering
The Runtime Environment of Device Drivers
The I/O Registry and the I/O Catalog
Driver Matching
The I/O Kit Class Hierarchy
Controlling Devices From Outside the Kernel
The I/O Registry
I/O Registry Architecture and Construction
The I/O Registry Explorer
Driver and Device Matching
Driver Personalities and Matching Languages
Driver Matching and Loading
Device Matching
The Base Classes
The libkern Base Classes
The I/O Kit Base Classes
I/O Kit Families
Drivers and Families
Families As Libraries
The Programmatic Structure of Families
Creating An I/O Kit Family
Handling Events
Work Loops
Event Sources
Managing Data
Handling I/O Transfers
Relaying I/O Requests
More on Memory Descriptors
More on Memory Cursors
Managing Power
Power Events
The Power Plane: A Hierarchy of Power Dependencies
Devices and Power States
Deciding How to Implement Power Management in Your Driver
Implementing Basic Power Management
Implementing Advanced Power Management
Managing Device Removal
The Phases of Device Removal
Making Drivers Inactive
Clearing I/O Queues
Detaching and Releasing Objects
Base and Helper Class Hierarchy
Bibliography
System Internals
Websites - Online Resources
Glossary
Appendix A: I/O Kit Family Reference
ADB
ATA and ATAPI
Audio
FireWire
Graphics
HID
Network
PC Card
PCI and AGP
SBP-2
SCSI Parallel
SCSI Architecture Model
Serial
Storage
USB
Devices Without I/O Kit Families
Revision History
Index