OAL Changes in Windows Embedded CE 6.0

1/5/2010

Minimizing changes to the OAL is one of the goals for the new BSP design in Windows Embedded CE 6.0. To meet this goal, Windows Embedded CE provides a stub library called NkStub, which exports all the functions defined the NKGLOBAL structure. This allows any OAL call to an exported kernel function to be automatically routed through NKGLOBAL. The NkStub library is built in %_WINCEROOT%\Private\WinceOS\CoreOS\Nk\NKStub.

Function names from previous versions of Windows Embedded CE have been defined to reference the data members in the NKGLOBAL structure. For more information, see %_WINCEROOT%\Public\Common\Oak\Inc\NKExport.h.

The following additional changes are needed to migrate your BSP to Windows Embedded CE 6.0:

  • The platform needs to link Oal.exe with NkStub.lib instead of Nk.lib.

  • The platform needs to rename a couple of functions.
    For more information about these functions and other changes you need to implement, see How to Separate the Kernel, OAL, and KITL or How to Separate the Kernel and OAL and Link KITL to the OAL.

  • Microsoft strongly recommends that all KITL-related code be moved into Kitl.dll. This requires some minor changes to both KITL and the OAL as you can no longer call each KITL and OAL functions directly, but must use KITLIoctl and OEMIoControl instead.
    The following example shows what the OAL now calls to start KITL.

    KITLIoctl (IOCTL_KITL_STARTUP, NULL, 0, NULL, 0, NULL);
    

    In previous versions of Windows Embedded CE, the OAL starts KITL by calling OEMKitlStartup.

  • Do not link GSNull.lib to Oal.exe and OalKitl.exe. This is to ensure that Oal.exe and Kitl.dll do not disable /GS security checks. For the correct procedure, see Creating and Building Oal.exe and OalKitl.exe and/or Creating and Building Oal.exe.

See Also

Concepts

BSP Implementation Guide