Kernel Independent Transport Layer (Windows Embedded CE 6.0)


The kernel independent transport layer (KITL) is the communication link between your development computer and the Windows Embedded CE powered device for debugging. The Platform Builder debugger and remote tools such as Remote File Viewer, Remote Registry Editor, and Remote Kernel Tracker use KITL. KITL exposes the device hardware to the kernel debugger and works independently of the board and transport (such as Ethernet, serial, or USB) to send and receive data between the computer and the device. KITL reduces your involvement in creating a hardware transport layer that can pass data to the device's communication hardware.

KITL relies on API functions in the host transport library and the device transport. On the development computer, the transport is a separate DLL that exports API functions that KITL relies on and is also registered in the system so KITL knows that it is a functional transport. On the device, KITL relies on the transport to provide a set of APIs to support the debug services.


If both KITL and the OS use the same hardware (such as a USB port), system performance may be negatively affected.

The following illustration shows how KITL interacts with the kernel and development computer:


As of Windows Embedded CE 6.0, KITL does not interact directly with the OEM Adaptation Layer (OAL) or the kernel.

KITL can operate in active or passive mode and use interrupt-driven or polled transport. For more information, see OALKitlInit.

For reference information, see:

To use KITL, you implement both the OEMKitlStartup function and the BSP KITL driver, as shown in the sample code at the following locations.

A sample implementation of the OEMKitlStartup function is available at:

  • %_WINCEROOT%\Platform\Common\Src\x86\Common\Kitl\Kitlmain_x86.c

Sample implementations of the BSP KITL driver are available at:

  • %_WINCEROOT%\Platform\Common\Src\Common\Ethdrv\
  • %_WINCEROOT%\Platform\Common\Src\x86\Common\Kitl\Kitlser_x86.c
  • %_WINCEROOT%\Platform\MainstoneIII\Src\Common\Usbfn\Rndiskitl\Rndis_pdd.c

The following table shows the locations for source code for KITL.

File or folder location Description


Function pointers for the KITLTRANSPORT structure and prototype of the OEMKitlStartup function that you must implement.


Function prototypes for the common KITL library (OAL_kitl.lib) and definition of the OAL_KITL_ARGS and OAL_KITL_DEVICE structures that you must initialize when you implement the OEMKitlStartup function. OAL_KITL_DEVICE includes OAL_KITL_ETH_DRIVER or OAL_KITL_SERIAL_DRIVER.


Source code for the common KITL library (OAL_kitl.lib), which provides several non-platform-specific functions: OALKitlInit, OEMKitlInit, OEMKitlIoctl, and OEMKitlEthInit or OEMKitlSerialInit. OAL_kitl.lib also implements functions that are specific to the Ethernet, serial, or USB transport but not to the BSP, such as KitlEthEncode and SerialEncode.


Function prototypes for the Ethernet KITL device drivers, for example <Driver Name>Init, <Driver Name>SendFrame, and <Driver Name>GetFrame.


Source code for the Ethernet KITL device drivers. These functions are the implementations that the OAL_KITL_ETH_DRIVER structure points to.

%_WINCEROOT%\Platform\<Hardware Platform Name>\Inc\Kitl_cfg.h

Contains the common BSP hardware constants, including CPU frequency, common divisors, and SYSINTR definitions.

%_WINCEROOT%\Platform\<Hardware Platform Name>\Src\Kitl\

Build files and source code for building Kitl.dll for your platform. Kitl.c contains the OEMKitlStartup function, which is the platform entry point for KITL. Other files may contain code that is specific to the BSP for KITL Ethernet, serial, or USB support.

See Also


Ethernet Debugging Services

Other Resources

Developing an OEM Adaptation Layer
How to Use Platform Builder to Connect to Multiple Target Devices