MS-DOS 5.0 UMBs, Enhanced Mode Windows, and LIM 4.0 Support (69516)
The information in this article applies to:
• Microsoft MS-DOS operating system 5.0
• Microsoft Windows 3.0
This article was previously published under Q69516
If you use the upper memory block UMB support included with MS-DOS
version 5.0 and you try to run an LIM 4.0-aware application under
enhanced mode Windows version 3.0, Windows may not detect any expanded
memory, even if you set up a PIF file telling Windows to allocate
expanded memory for it.
This problem occurs if you are running EMM386.EXE with the NOEMS
option. When this switch is used, EMM386 fills all available addresses
between 640K and 1 MB with UMBs. Because all expanded memory managers
operate by swapping pages of memory into unused addresses in this
range, when all the available space is filled, there is no room for
the pages and no expanded memory is available.
There are two ways to work around this:
• You can use the RAM option instead of the NOEMS option. You can
allocate as little as 16K (one page) of expanded memory. Windows
is then able to give expanded memory to applications that can
access LIM 4.0 memory.
• You can use the X=xxxx-yyyy parameter on EMM386 to exclude enough
space for a page frame. Reserving a 16K page of memory is enough
for Windows to allocate expanded memory.
With the NOEMS option on, EMM386 Windows creates a page frame below
640K through handle 0000h. This is a special handle that is normally
available only to the operating system. This handle has a set of pages
allocated to it when EMM386 installs. The pages that are automatically
allocated to handle 0000h are those that backfill conventional memory.
Typically, this backfill occurs between addresses 40000h (256K) and
An application that is aware of handle 0000h is able to make use of
expanded memory through the handle. However, most applications are not
written to take advantage of handle 0000h because the LIM 4.0
specifications specify that this handle is reserved for the operating
system. Any applications that use handle 0000h are incompatible with
future versions of Microsoft operating systems and environments.
| Modification Type:
|| Last Reviewed: