Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Log in or create an account to edit The Apple Wiki.

Dev:IOKit.framework

From The Apple Wiki
IOKit.framework
Public Framework
Available1.0 – present
Class PrefixIO, OS

I/O Kit is a low-level framework communicating with hardware or kernel services. Although it is a public framework, Apple discourages developers from using it, and any apps using it will be rejected from App Store.

IOService

Code using I/O Kit usually follows this pattern:

// Get the service named "AppleNANDFTL".
CFMutableDictionaryRef matching = IOServiceMatching("AppleNANDFTL");
io_service_t service = IOServiceGetMatchingService(kIOMasterPortDefault, matching);

// Open a connection to the AppleNANDFTL service
io_connect_t connect;
kern_return_t errcode = IOServiceOpen(service, mach_task_self(), 0, &connect);

// Send some message to the service and get the result.
// using one of the IOConnectCall*** methods.
if (errcode == 0) {
  size_t infoSize;
  size_t osize = sizeof(infoSize);
  errcode = IOConnectCallStructMethod(
               connect, 0xFE000200, // selector
               NULL, 0,             // input
               &infoSize, &osize);  // output
  if (errcode == 0) {
    void* info = malloc(infoSize);
    IOConnectCallStructMethod(connect, 0xFE000100, NULL, 0, info, &infoSize);
    // do_something_with(info);
    free(info);
  }

  IOServiceClose(connect);
}

IOObjectRelease(service);

The selectors and input/output depends on the service.

Non-IOService

Besides IOService functions, the user-land I/O Kit also contains other hardware and kernel-related functions, e.g. IOHID (human interface device), OSKext (kernel extension), etc.

Versions

Firmware 2.0 2.1 2.2 3.0 3.1 3.2 4.0 4.1 4.2 4.3
SourceCache version 388.35 388.46 388.46.7 499.0.37 499.0.49 514.7.6 514.36.1 514.43 514.49 608.9
dylib version 275