ROMFLAGS (Windows CE 5.0)

ROMFLAGS specifies a bitmask of flag options for the kernel.

This option uses the following syntax.

  ROMFLAGS = Flags


  • Flags
    Specifies a bitmask of flags, which can be a combination of the values given in the following table.
    Flag Description
    0x00000001 Demand paging is disabled.
    0x00000002 Disable full-kernel mode.
    0x00000010 Trust only modules from the ROM MODULES section.
    0x00000020 Use this flag to stop flushing soft TLB (x86 only).
    0x00000040 Honor the /base linker setting for DLLs.


The flag that ROMFLAGS uses is typically determined by the IMG environment variable IMGNOTALLKMODE. For more information, see IMG Environment Variables.

Demand paging is disabled when the first bit of ROMFLAGS is set. When demand paging is disabled, a module is fully loaded into RAM before running.

For OEMs that need real-time performance, turning off demand paging eliminates page faults that can cause poor performance.

Full-kernel mode is disabled when the second bit ROMFLAGS is set. You can run all OS threads in either kernel mode or user mode.

Although running threads in kernel mode leaves the entire system vulnerable, it also enables increased performance.

This is because Windows CE bypasses security functionality that can prevent a thread from entering kernel mode. This can be acceptable in a closed environment, but in an open environment this can have dramatic effects that an OEM must consider.

The Trust module marks only files in ROM as trusted. The OEM code is not used to determine whether a non-ROM module is trusted.

By default, everything in the ROM MODULES section and anything that loads from a file system is trusted unless the OEM enables the OAL for module-by-module checking. The 0x00000010 bit can be used to signal to the kernel that only ROM MODULES are trusted by default and that they do not require the OAL to be enabled.

For security reasons, the kernel flushes the x86 TLB. The bit 0x00000020 can prevent this from happening, but creates a security hole. If real-time performance is required and there are no security concerns, set this flag.

Loading a DLL at its preferred load address releases the kernel from relocating the DLL and using extra memory. However, there can be a potential backward compatibility issue. DLL binaries might exist that set their preferred load address really low and, thus, cannot be loaded.

OEMs should use caution when enabling this flag and are encouraged to use it only for closed environments.

This flag is not needed if all DLLs are XIP.

See Also

CONFIG Section | Binary Image Builder File

Last updated on Thursday, February 02, 2006

Send Feedback on this topic to the authors

Feedback FAQs

© 2006 Microsoft Corporation. All rights reserved.