Difference between revisions of "IOKit.framework"

From iPhone Development Wiki
Jump to: navigation, search
(Created page with '{{infobox Framework | vis = Public | since = 1.0 | classID = IO, OS }} [http://en.wikipedia.org/wiki/I/O_Kit '''I/O Kit'''] is a low-level framework communicating with hardware …')
 
m
Line 45: Line 45:
 
== Non-IOService ==
 
== 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.
 
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 ==
 +
{| class="wikitable"
 +
|-
 +
! Firmware
 +
| 2.0    || 2.1    || 2.2      || 3.0      || 3.1      || 3.2
 +
|-
 +
! Version
 +
| 388.35 || 388.46 || 388.46.7 || 499.0.37 || 499.0.49 || 514.7.2
 +
|}
  
 
{{Navbox Classes}}
 
{{Navbox Classes}}
 
{{Navbox Frameworks}}
 
{{Navbox Frameworks}}

Revision as of 10:28, 13 February 2010

IOKit.framework
Public Framework
Availabile 1.0 – present
Class Prefix IO, OS


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

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
Version 388.35 388.46 388.46.7 499.0.37 499.0.49 514.7.2