---
title: IOKit Fundamentals
framework: kernel
role: collectionGroup
role_heading: API Collection
path: kernel/iokit_fundamentals
---

# IOKit Fundamentals

Implement a driver for your custom hardware using a third-party kernel extension.

## Topics

### Driver Services

- [IOService](kernel/ioservice.md)
- [IOPlatformIO](kernel/ioplatformio.md)

### Driver Registry

- [IORegistryEntry](kernel/ioregistryentry.md)
- [IORegistryIterator](kernel/ioregistryiterator.md)
- [IOBSDNameMatching](kernel/1575336-iobsdnamematching.md)
- [IOPrintPlane](kernel/1558295-ioprintplane.md)
- [Registry Utilities](kernel/iokit_fundamentals/registry_utilities.md)
- [Registry Keys](kernel/iokit_fundamentals/registry_keys.md)

### Resources

- [Memory](kernel/iokit_fundamentals/memory.md)
- [Workflow and Control](kernel/iokit_fundamentals/workflow_and_control.md)
- [Locks](kernel/iokit_fundamentals/locks.md)
- [Data Types](kernel/libkern/data_types.md)

### User-Space Interactions

- [IOSharedDataQueue](kernel/ioshareddataqueue.md)
- [IOSharedInterruptController](kernel/iosharedinterruptcontroller.md)
- [IOUserClient](kernel/iouserclient.md)
- [IOStreamUserClient](kernel/iostreamuserclient.md)
- [IOStream](kernel/iostream.md)
- [IOStreamBuffer](kernel/iostreambuffer.md)
- [OSAction_IOUserClient_KernelCompletion](kernel/osaction_iouserclient_kernelcompletion.md)
- [OSAction_IOUserClient_KernelCompletionInterface](kernel/osaction_iouserclient_kernelcompletioninterface.md)

### Debugging

- [IOKernelDebugger](kernel/iokerneldebugger.md)
- [IOKitDiagnostics](kernel/iokitdiagnostics.md)
- [IOKitDiagnosticsParameters](kernel/iokitdiagnosticsparameters.md)

### Utilities

- [IOServiceOrdering](kernel/1532621-ioserviceordering.md)
- [IOFixedDivide](kernel/1575297-iofixeddivide.md)
- [IOFixedMultiply](kernel/1575302-iofixedmultiply.md)
- [IOAlignmentToSize](kernel/1575292-ioalignmenttosize.md)
- [IOSizeToAlignment](kernel/1575319-iosizetoalignment.md)
- [OSSynchronizeIO](kernel/1576454-ossynchronizeio.md)
- [DriverDescription](kernel/driverdescription.md)
- [DriverOSRuntime](kernel/driverosruntime.md)
- [DriverOSService](kernel/driverosservice.md)
- [DriverServiceInfo](kernel/driverserviceinfo.md)
- [DriverType](kernel/drivertype.md)

### Reports

- [IOReportChannel](kernel/ioreportchannel.md)
- [IOReportChannelList](kernel/ioreportchannellist.md)
- [IOReportChannelType](kernel/ioreportchanneltype.md)
- [IOReportElement](kernel/ioreportelement.md)
- [IOReportElementValues](kernel/ioreportelementvalues.md)
- [IOReportInterest](kernel/ioreportinterest.md)
- [IOReportInterestList](kernel/ioreportinterestlist.md)
- [IOHistReportInfo](kernel/iohistreportinfo.md)
- [IOHistogramReportValues](kernel/iohistogramreportvalues.md)
- [IOHistogramSegmentConfig](kernel/iohistogramsegmentconfig.md)
- [IONormDistReportValues](kernel/ionormdistreportvalues.md)
- [IOSimpleArrayReportValues](kernel/iosimplearrayreportvalues.md)
- [IOSimpleReportValues](kernel/iosimplereportvalues.md)
- [IOStateReportInfo](kernel/iostatereportinfo.md)
- [IOStateReportValues](kernel/iostatereportvalues.md)

### Common Types

- [IOAccelBounds](kernel/ioaccelbounds.md)
- [IOAccelDeviceRegion](kernel/ioacceldeviceregion.md)
- [IOAccelID](kernel/ioaccelid.md)
- [IOAccelSize](kernel/ioaccelsize.md)
- [IOAccelSurfaceInformation](kernel/ioaccelsurfaceinformation.md)
- [IOAccelSurfaceReadData](kernel/ioaccelsurfacereaddata.md)
- [IOAccelSurfaceScaling](kernel/ioaccelsurfacescaling.md)
- [IOAddressRange](kernel/ioaddressrange.md)
- [IOAddressSegment](kernel/ioaddresssegment.md)
- [IOAlignment](kernel/ioalignment.md)
- [IOAppleTimingID](kernel/ioappletimingid.md)
- [IOAsyncMethod](kernel/ioasyncmethod.md)
- [IOBlockStorageDeviceExtent](kernel/ioblockstoragedeviceextent.md)
- [IOBlockStorageProvisionDeviceExtent](kernel/ioblockstorageprovisiondeviceextent.md)
- [IOByteCount](kernel/iobytecount.md)
- [IOByteCount32](kernel/iobytecount32.md)
- [IOByteCount64](kernel/iobytecount64.md)
- [IOCSRKeyType](kernel/iocsrkeytype.md)
- [IOCacheMode](kernel/iocachemode.md)
- [IOColorComponent](kernel/iocolorcomponent.md)
- [IOColorEntry](kernel/iocolorentry.md)
- [IOCommandCode](kernel/iocommandcode.md)
- [IOCommandID](kernel/iocommandid.md)
- [IOCommandKind](kernel/iocommandkind.md)
- [IOConfigKeyType](kernel/ioconfigkeytype.md)
- [IODMAMapPageList](kernel/iodmamappagelist.md)
- [IODMAMapSpecification](kernel/iodmamapspecification.md)
- [IODTCompareAddressCellFunc](kernel/iodtcompareaddresscellfunc.md)
- [IODTNVLocationFunc](kernel/iodtnvlocationfunc.md)
- [IODataQueueClientDequeueEntryBlock](kernel/iodataqueueclientdequeueentryblock.md)
- [IODataQueueClientEnqueueEntryBlock](kernel/iodataqueueclientenqueueentryblock.md)
- [IODebuggerLinkStatusHandler](kernel/iodebuggerlinkstatushandler.md)
- [IODebuggerRxHandler](kernel/iodebuggerrxhandler.md)
- [IODebuggerSetModeHandler](kernel/iodebuggersetmodehandler.md)
- [IODebuggerTxHandler](kernel/iodebuggertxhandler.md)
- [IODetailedTimingInformation](kernel/iodetailedtiminginformation.md)
- [IODetailedTimingInformationV1](kernel/iodetailedtiminginformationv1.md)
- [IODetailedTimingInformationV2](kernel/iodetailedtiminginformationv2.md)
- [IODispatchBlock](kernel/iodispatchblock.md)
- [IODispatchFunction](kernel/iodispatchfunction.md)
- [IODispatchLogFunction](kernel/iodispatchlogfunction.md)
- [IODispatchQueueCancelHandler](kernel/iodispatchqueuecancelhandler.md)
- [IODispatchQueueName](kernel/iodispatchqueuename.md)
- [IODispatchSourceCancelHandler](kernel/iodispatchsourcecancelhandler.md)
- [IODisplayModeID](kernel/iodisplaymodeid.md)
- [IODisplayModeInformation](kernel/iodisplaymodeinformation.md)
- [IODisplayProductID](kernel/iodisplayproductid.md)
- [IODisplayScalerInformation](kernel/iodisplayscalerinformation.md)
- [IODisplayTimingRange](kernel/iodisplaytimingrange.md)
- [IODisplayTimingRangeV1](kernel/iodisplaytimingrangev1.md)
- [IODisplayTimingRangeV2](kernel/iodisplaytimingrangev2.md)
- [IODisplayVendorID](kernel/iodisplayvendorid.md)
- [IOEnetMulticastMode](kernel/ioenetmulticastmode.md)
- [IOEnetPromiscuousMode](kernel/ioenetpromiscuousmode.md)
- [IOEthernetAddress](kernel/ioethernetaddress.md)
- [IOExternalAsyncMethod](kernel/ioexternalasyncmethod.md)
- [IOExternalMethod](kernel/ioexternalmethod.md)
- [IOExternalMethodAction](kernel/ioexternalmethodaction.md)
- [IOExternalMethodArguments](kernel/ioexternalmethodarguments.md)
- [IOExternalMethodDispatch](kernel/ioexternalmethoddispatch.md)
- [IOExternalTrap](kernel/ioexternaltrap.md)
- [IOFBCursorRef](kernel/iofbcursorref.md)
- [IOFBDPLinkConfig](kernel/iofbdplinkconfig.md)
- [IOFBDisplayModeDescription](kernel/iofbdisplaymodedescription.md)
- [IOFBHDRMetaData](kernel/iofbhdrmetadata.md)
- [IOFBHDRMetaDataV1](kernel/iofbhdrmetadatav1.md)
- [IOFBInterruptProc](kernel/iofbinterruptproc.md)
- [IOFixed](kernel/iofixed.md)
- [IOFixed1616](kernel/iofixed1616.md)
- [IOFixedPoint32](kernel/iofixedpoint32.md)
- [IOFourCharCode](kernel/iofourcharcode.md)
- [IOFramebufferNotificationHandler](kernel/ioframebuffernotificationhandler.md)
- [IOFramebufferNotificationNotify](kernel/ioframebuffernotificationnotify.md)
- [IOGBounds](kernel/iogbounds.md)
- [IOGPoint](kernel/iogpoint.md)
- [IOGSize](kernel/iogsize.md)
- [IOHardwareCursorDescriptor](kernel/iohardwarecursordescriptor.md)
- [IOHardwareCursorInfo](kernel/iohardwarecursorinfo.md)
- [IOIndex](kernel/ioindex.md)
- [IOInterruptAction](kernel/iointerruptaction.md)
- [IOInterruptActionBlock](kernel/iointerruptactionblock.md)
- [IOInterruptDispatchSourcePayload](kernel/iointerruptdispatchsourcepayload.md)
- [IOInterruptHandler](kernel/iointerrupthandler.md)
- [IOInterruptState](kernel/iointerruptstate.md)
- [IOInterruptVectorNumber](kernel/iointerruptvectornumber.md)
- [IOItemCount](kernel/ioitemcount.md)
- [IOLock](kernel/iolock.md)
- [IOLogicalAddress](kernel/iologicaladdress.md)
- [IOMediaAttributeMask](kernel/iomediaattributemask.md)
- [IOMediaState](kernel/iomediastate.md)
- [IOMessage](kernel/iomessage.md)
- [IOMethod](kernel/iomethod.md)
- [IONDRVControlParameters](kernel/iondrvcontrolparameters.md)
- [IONVRAMDescriptor](kernel/ionvramdescriptor.md)
- [IONamedValue](kernel/ionamedvalue.md)
- [IONotificationRef](kernel/ionotificationref.md)
- [IOOptionBits](kernel/iooptionbits.md)
- [IOOutputAction](kernel/iooutputaction.md)
- [IOPCIDeviceConfigHandler](kernel/iopcideviceconfighandler.md)
- [IOPCIEvent](kernel/iopcievent.md)
- [IOPCIPhysicalAddress](kernel/iopciphysicaladdress.md)
- [IOPMCalendarStruct](kernel/iopmcalendarstruct.md)
- [IOPMDriverAssertionID](kernel/iopmdriverassertionid.md)
- [IOPMDriverAssertionLevel](kernel/iopmdriverassertionlevel.md)
- [IOPMDriverAssertionType](kernel/iopmdriverassertiontype.md)
- [IOPMSettingControllerCallback](kernel/iopmsettingcontrollercallback.md)
- [IOPhysicalAddress](kernel/iophysicaladdress.md)
- [IOPhysicalAddress32](kernel/iophysicaladdress32.md)
- [IOPhysicalAddress64](kernel/iophysicaladdress64.md)
- [IOPhysicalLength](kernel/iophysicallength.md)
- [IOPhysicalLength32](kernel/iophysicallength32.md)
- [IOPhysicalLength64](kernel/iophysicallength64.md)
- [IOPhysicalRange](kernel/iophysicalrange.md)
- [IOPixelAperture](kernel/iopixelaperture.md)
- [IOPixelEncoding](kernel/iopixelencoding.md)
- [IOPixelInformation](kernel/iopixelinformation.md)
- [IOPowerStateChangeNotification](kernel/iopowerstatechangenotification.md)
- [IOPropertyName](kernel/iopropertyname.md)
- [IORPC](kernel/iorpc.md)
- [IORPCMessage](kernel/iorpcmessage.md)
- [IORPCMessageErrorReturn](kernel/iorpcmessageerrorreturn.md)
- [IORPCMessageErrorReturnContent](kernel/iorpcmessageerrorreturncontent.md)
- [IORPCMessageMach](kernel/iorpcmessagemach.md)
- [IORWLock](kernel/iorwlock.md)
- [IORangeScalar](kernel/iorangescalar.md)
- [IORecursiveLock](kernel/iorecursivelock.md)
- [IORegistryEntryApplierFunction](kernel/ioregistryentryapplierfunction.md)
- [IORegistryPlaneName](kernel/ioregistryplanename.md)
- [IOReportCategories](kernel/ioreportcategories.md)
- [IOReportConfigureAction](kernel/ioreportconfigureaction.md)
- [IOReportFormat](kernel/ioreportformat.md)
- [IOReportQuantity](kernel/ioreportquantity.md)
- [IOReportScaleFactor](kernel/ioreportscalefactor.md)
- [IOReportUnit](kernel/ioreportunit.md)
- [IOReportUnits](kernel/ioreportunits.md)
- [IOReportUpdateAction](kernel/ioreportupdateaction.md)
- [IOReturn](kernel/ioreturn.md)
- [IOSelect](kernel/ioselect.md)
- [IOService](kernel/ioservice-5h.md)
- [IOServiceApplierFunction](kernel/ioserviceapplierfunction.md)
- [IOServiceInterestContent64](kernel/ioserviceinterestcontent64.md)
- [IOServiceInterestHandler](kernel/ioserviceinteresthandler.md)
- [IOServiceInterestHandlerBlock](kernel/ioserviceinteresthandlerblock.md)
- [IOServiceMatchingNotificationHandler](kernel/ioservicematchingnotificationhandler.md)
- [IOServiceMatchingNotificationHandlerBlock](kernel/ioservicematchingnotificationhandlerblock.md)
- [IOServiceName](kernel/ioservicename.md)
- [IOServiceNotificationBlock](kernel/ioservicenotificationblock.md)
- [IOServiceNotificationHandler](kernel/ioservicenotificationhandler.md)
- [IOSimpleLock](kernel/iosimplelock.md)
- [IOStorageAccess](kernel/iostorageaccess.md)
- [IOStorageAttributes](kernel/iostorageattributes.md)
- [IOStorageCompletion](kernel/iostoragecompletion.md)
- [IOStorageCompletionAction](kernel/iostoragecompletionaction.md)
- [IOStorageExtent](kernel/iostorageextent.md)
- [IOStorageGetProvisionStatusOptions](kernel/iostoragegetprovisionstatusoptions.md)
- [IOStorageOptions](kernel/iostorageoptions.md)
- [IOStoragePriority](kernel/iostoragepriority.md)
- [IOStorageProvisionExtent](kernel/iostorageprovisionextent.md)
- [IOStorageSynchronizeOptions](kernel/iostoragesynchronizeoptions.md)
- [IOStorageUnmapOptions](kernel/iostorageunmapoptions.md)
- [IOStreamMode](kernel/iostreammode.md)
- [IOThread](kernel/iothread.md)
- [IOThreadFunc](kernel/iothreadfunc.md)
- [IOTimeStampIntervalConstantFiltered](kernel/iotimestampintervalconstantfiltered.md)
- [IOTimingInformation](kernel/iotiminginformation.md)
- [IOTrackingCallSiteInfo](kernel/iotrackingcallsiteinfo.md)
- [IOTrap](kernel/iotrap.md)
- [IOUserClientAsyncArgumentsArray](kernel/iouserclientasyncargumentsarray.md)
- [IOUserClientAsyncReferenceArray](kernel/iouserclientasyncreferencearray.md)
- [IOUserClientMethodArguments](kernel/iouserclientmethodarguments.md)
- [IOUserClientMethodDispatch](kernel/iouserclientmethoddispatch.md)
- [IOUserClientMethodFunction](kernel/iouserclientmethodfunction.md)
- [IOUserClientScalarArray](kernel/iouserclientscalararray.md)
- [IOVersion](kernel/ioversion.md)
- [IOVideoDeviceNotification](kernel/iovideodevicenotification.md)
- [IOVideoDeviceNotificationMessage](kernel/iovideodevicenotificationmessage.md)
- [IOVideoStreamDescription](kernel/iovideostreamdescription.md)
- [IOVirtualAddress](kernel/iovirtualaddress.md)
- [IOVirtualRange](kernel/iovirtualrange.md)

## See Also

### IOKit Drivers

- [Hardware Families](kernel/hardware_families.md)
- [Driver Support](kernel/driver_support.md)
- [libkern](kernel/libkern.md)
