Call : (+91) 968636 4243
Mail :

iOS Native Application Development

( Duration: 3 Days )



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
  • Using Namespaces in an I/O Kit Driver
  • Using Static Constructors in an I/O Kit Driver
  • The Parts of the I/O Kit
  • Frameworks and Libraries
  • Applications and Tools
  • Other I/O Kit Resources
  • Should You Program in the Kernel?
  • When Code Should Reside in the Kernel
  • Alternatives to Kernel-Resident Code

Architectural Overview

  • Driver Layering
  • Families and Drivers
  • Drivers and Nubs
  • The Anatomy of an I/O Connection
  • The Runtime Environment of Device Drivers
  • Runtime Features
  • Kernel Programming Constraints
  • The I/O Registry and the I/O Catalog
  • Driver Matching
  • The I/O Kit Class Hierarchy
  • The OS Classes
  • The General I/O Kit Classes
  • The I/O Kit Family Classes
  • Controlling Devices From Outside the Kernel
  • The Device - Interface Mechanism
  • POSIX Device Files

The I/O Registry

  • I/O Registry Architecture and Construction 37
  • The I/O Registry Explorer 39

Driver and Device Matching

  • Driver Personalities and Matching Languages
  • Driver Matching and Loading
  • Driver Matching
  • Device Probing
  • Driver Loading
  • Device Matching

The Base Classes

  • The libkern Base Classes
  • Object Creation and Disposal (OSObject)
  • Runtime Type Information (OSMetaClass)
  • Defining C++ Classes in libkern
  • The I/O Kit Base Classes
  • Dynamic Driver Registration (IORegistryEntry)
  • Basic Driver Behavior (IOService)

I/O Kit Families

  • Drivers and Families
  • Families As Libraries
  • Library Versioning
  • Library Loading
  • The Programmatic Structure of Families
  • Typical Classes
  • Naming and Coding Conventions
  • Creating An I/O Kit Family

Handling Events

  • Work Loops
  • Work Loop Architecture
  • Shared and Dedicated Work Loops
  • Examples of Obtaining Work Loops
  • Event Sources
  • Handling Interrupts
  • Handling Timer Events
  • I/O Requests and Command Gates

Managing Data

  • Handling I/O Transfers
  • Memory Descriptors and Memory Cursors
  • Memory in an I/O Request
  • Issues With 64 - Bit System Architectures
  • Relaying I/O Requests
  • More on Memory Descriptors
  • More on Memory Cursors
  • DMA and System Memory
  • Dealing With Hardware Constraints
  • IOMemoryCursor Subclasses

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
  • Defining and Using Multiple Power States
  • Changing the Power State of a Device
  • Implementing Idleness Determination and Idle Power Saving
  • Receiving Notification of Power-State Changes in Other Devices
  • Receiving Shutdown and Restart Notifications
  • Keeping Power On for Future Device Attachment

Managing Device Removal

  • The Phases of Device Removal
  • Making Drivers Inactive
  • Clearing I/O Queues
  • Detaching and Releasing Objects

Base and Helper Class Hierarchy

Encarta Labs Advantage

  • One Stop Corporate Training Solution Providers for over 6,000 various courses on a variety of subjects
  • All courses are delivered by Industry Veterans
  • Get jumpstarted from newbie to production ready in a matter of few days
  • Trained more than 50,000 Corporate executives across the Globe
  • All our trainings are conducted in workshop mode with more focus on hands-on sessions

View our other course offerings by visiting

Contact us for delivering this course as a public/open-house workshop/online training for a group of 10+ candidates.