IOKitLib.h

Overview

IOKitLib implements non-kernel task access to common IOKit object types - IORegistryEntry, IOService, IOIterator etc. These functions are generic - families may provide API that is more specific.

IOKitLib represents IOKit objects outside the kernel with the types io_object_t, io_registry_entry_t, io_service_t, & io_connect_t. Function names usually begin with the type of object they are compatible with - eg. IOObjectRelease can be used with any io_object_t. Inside the kernel, the c++ class hierarchy allows the subclasses of each object type to receive the same requests from user level clients, for example in the kernel, IOService is a subclass of IORegistryEntry, which means any of the IORegistryEntryXXX functions in IOKitLib may be used with io_service_t's as well as io_registry_t's. There are functions available to introspect the class of the kernel object which any io_object_t et al. represents. IOKit objects returned by all functions should be released with IOObjectRelease.

Included Headers

  • <sys/cdefs.h>

  • types.h

  • <mach/mach_types.h>

  • <mach/mach_init.h>

  • <CoreFoundation/CFBase.h>

  • <CoreFoundation/CFDictionary.h>

  • <CoreFoundation/CFRunLoop.h>

  • <IOKit/IOTypes.h>

  • <IOKit/IOKitKeys.h>

  • <IOKit/OSMessageNotification.h>

  • <AvailabilityMacros.h>

  • <dispatch/dispatch.h>

Topics

Miscellaneous

func IOBSDNameMatching(mach_port_t, UInt32, UnsafePointer<Int8>!) -> CFMutableDictionary!

Create a matching dictionary that specifies an IOService match based on BSD device name.

func IOConnectAddRef(io_connect_t) -> kern_return_t

Adds a reference to the connect handle.

func IOConnectRelease(io_connect_t) -> kern_return_t

Remove a reference to the connect handle.

func IOConnectSetCFProperties(io_connect_t, CFTypeRef!) -> kern_return_t

Set CF container based properties on a connection.

func IOCreateReceivePort(UInt32, UnsafeMutablePointer<mach_port_t>!) -> kern_return_t

Creates and returns a mach port suitable for receiving IOKit messages of the specified type.

func IOIteratorIsValid(io_iterator_t) -> boolean_t

Checks an iterator is still valid.

func IOIteratorNext(io_iterator_t) -> io_object_t

Returns the next object in an iteration.

func IOIteratorReset(io_iterator_t)

Resets an iteration back to the beginning.

func IOMasterPort(mach_port_t, UnsafeMutablePointer<mach_port_t>!) -> kern_return_t

Returns the mach port used to initiate communication with IOKit.

func IONotificationPortCreate(mach_port_t) -> IONotificationPortRef!

Creates and returns a notification object for receiving IOKit notifications of new devices or state changes.

func IONotificationPortDestroy(IONotificationPortRef!)

Destroys a notification object created with IONotificationPortCreate. Also destroys any mach_port's or CFRunLoopSources obatined from IONotificationPortGetRunLoopSource(_:) or IONotificationPortGetMachPort(_:)

func IONotificationPortGetMachPort(IONotificationPortRef!) -> mach_port_t

Returns a mach_port to be used to listen for notifications.

func IONotificationPortGetRunLoopSource(IONotificationPortRef!) -> Unmanaged<CFRunLoopSource>!

Returns a CFRunLoopSource to be used to listen for notifications.

func IONotificationPortSetDispatchQueue(IONotificationPortRef!, DispatchQueue!)

Sets a dispatch queue to be used to listen for notifications.

func IOObjectConformsTo(io_object_t, UnsafePointer<Int8>!) -> boolean_t

Performs an OSDynamicCast operation on an IOKit object.

func IOObjectCopyClass(io_object_t) -> Unmanaged<CFString>!

Return the class name of an IOKit object.

func IOObjectGetKernelRetainCount(io_object_t) -> UInt32

Returns kernel retain count of an IOKit object.

func IOObjectGetRetainCount(io_object_t) -> UInt32

Returns kernel retain count of an IOKit object. Identical to IOObjectGetKernelRetainCount() but available prior to Mac OS 10.6.

func IOObjectGetUserRetainCount(io_object_t) -> UInt32

Returns the retain count for the current process of an IOKit object.

func IOObjectIsEqualTo(io_object_t, io_object_t) -> boolean_t

Checks two object handles to see if they represent the same kernel object.

func IOObjectRelease(io_object_t) -> kern_return_t

Releases an object handle previously returned by IOKitLib.

func IOObjectRetain(io_object_t) -> kern_return_t

Retains an object handle previously returned by IOKitLib.

func IORegistryEntryIDMatching(UInt64) -> CFMutableDictionary!

Create a matching dictionary that specifies an IOService match based on a registry entry ID.

func IORegistryEntryInPlane(io_registry_entry_t, UnsafePointer<Int8>!) -> boolean_t

Determines if the registry entry is attached in a plane.

func IORegistryIteratorEnterEntry(io_iterator_t) -> kern_return_t

Recurse into the current entry in the registry iteration.

func IORegistryIteratorExitEntry(io_iterator_t) -> kern_return_t

Exits a level of recursion, restoring the current entry.

func IOServiceClose(io_connect_t) -> kern_return_t

Close a connection to an IOService and destroy the connect handle.

func IOServiceGetMatchingService(mach_port_t, CFDictionary!) -> io_service_t

Look up a registered IOService object that matches a matching dictionary.

func IOServiceMatching(UnsafePointer<Int8>!) -> CFMutableDictionary!

Create a matching dictionary that specifies an IOService class match.

func IOServiceNameMatching(UnsafePointer<Int8>!) -> CFMutableDictionary!

Create a matching dictionary that specifies an IOService name match.

func IOServiceRequestProbe(io_service_t, UInt32) -> kern_return_t

A request to rescan a bus for device changes.

Callbacks

See the Overview for header-level documentation.

typealias IOAsyncCallback

standard callback function for asynchronous I/O requests with lots of extra arguments beyond a refcon and result code.

typealias IOAsyncCallback0

standard callback function for asynchronous I/O requests with no extra arguments beyond a refcon and result code.

typealias IOAsyncCallback1

standard callback function for asynchronous I/O requests with one extra argument beyond a refcon and result code. This is often a count of the number of bytes transferred

typealias IOAsyncCallback2

standard callback function for asynchronous I/O requests with two extra arguments beyond a refcon and result code.

typealias IOServiceInterestCallback

Callback function to be notified of changes in state of an IOService.

typealias IOServiceMatchingCallback

Callback function to be notified of IOService publication.

Constants

See the Overview for header-level documentation.