Kernel and Device Driver Migration Issues

The following table describes kernel and device driver issues when migrating from Windows CE 2.12 to Windows CE .NET.

Issue Description
InterruptInitialize In Windows CE .NET, before calling the WaitForSingleObject function, call the InterruptInitialize function with a valid interrupt service routine (ISR) for the hEvent parameter. If you use this hEvent parameter in WaitForSingleObject before calling InterruptInitialize with a valid ISR, InterruptInitialize fails.
Full kernel mode By default, Windows CE .NET runs every thread in kernel mode to reduce overhead and increase performance of many functions. Consequently, this enables all threads to access physical memory. Before building your platform, you can set the default mode to user mode.
WaitForMultipleObjects and interrupt service threads (ISTs) In Windows CE 3.0 and earlier, the handle of the event that is linked to an ISR could have been used in a call to WaitForMultipleObjects. However, in doing this you could lose interrupts. In Windows CE .NET, a handle to an ISR can only be used in a call for WaitForSingleObject. This enables the kernel to optimize the setting of the ISR event that starts the waiting IST.
Priority inversion The algorithm to correct priority inversion has been simplified in Windows CE .NET. As a result, in some cases, only one level of inversion occurs.
Default quantum In Windows CE .NET, the default thread quantum for the operating system (OS) is 100_ms, but you can change it to any value.
Nested Interrupts Nested interrupts can now be used by microprocessors and hardware that support them.
Timer tick In Windows CE 3.0 and earlier, you could not redefine the timer tick. In Windows CE .NET, the timer tick is a constant 1 ms when not in idle. When entering idle mode by calling OEMIdle, you are given information on how to reset the timer tick to an extended period.
GetThreadTimes In Windows CE .NET, the complete implementation of this function is supported.
Priorities In Windows CE .NET, 256 priorities and all the drivers are supported. For more information, see Real-Time Priority System Levels.
Page size In Windows CE .NET, the page size for a MIPS R4100 or SH3 operating system (OS) is 4 KB; it was 1 KB. A 1-KB page application does not run on a 4K-page-aligned OS.

You need to enlarge the page size of a 1-KB page application to 4 KB and then rebuild it. This ensures that the kernel loads and runs correctly.

See Also

InterruptInitialize | WaitForSingleObject | WaitForMultipleObjects | GetThreadTimes | Migration from Windows CE 2.12 to Windows CE .NET | MIPS Guide

Last updated on Wednesday, April 13, 2005

© 2005 Microsoft Corporation. All rights reserved.