HIMEM.SYS /EISA Switch

Last reviewed: April 26, 1996
Article ID: Q82712
The information in this article applies to:
  • Microsoft Windows operating system versions 3.1, 3.11

SUMMARY

The HIMEM.SYS driver that ships with Windows 3.1 (version 3.07, dated 3/10/92, size 13824 bytes), provides an additional command-line switch that allows HIMEM.SYS to use all of the Extended Industry Standard Architecture (EISA) memory installed in the system.

If you have an EISA system that has memory available, and HIMEM.SYS and/or Windows is not using all the memory on the system, adding the /EISA switch to the CONFIG.SYS file as follows may make more memory available for use:

   DEVICE=C:\HIMEM.SYS /EISA

NOTE: This command may cause conflicts if any drivers using extended memory are loaded from the CONFIG.SYS file before HIMEM.SYS.

MORE INFORMATION

The /EISA command-line switch has been added to allow HIMEM.SYS to use all the EISA memory installed in an EISA system. The switch is ignored on non- EISA systems. HIMEM.SYS maintains its former behavior when this switch is not used.

When the /EISA switch is not used (or when the MS-DOS version 5.0 version of HIMEM.SYS is used), only the amount of contiguous extended memory identified by Int 15H/88H (get extended memory size) is allocated by HIMEM.SYS. If a system has 24 MB of memory installed (and all extended memory was in one contiguous block starting at 1 MB) and Int 15H/88H reports 16 MB available, HIMEM will use only 16 MB, leaving the remainder unused and unavailable. Several original equipment manufacturer's (OEM) BIOS implementations never indicate more than 16 MB of available memory through Int 15H/88H regardless of how much more memory may be installed. Therefore, on one of these machines with more than 32 MB of memory installed, most of it is not usable with HIMEM.SYS, EMM386.EXE, and Windows 3.0.

This behavior is not a problem in HIMEM.SYS. HIMEM.SYS behaves this way (without the /EISA switch) because it cannot be sure there isn't some other driver loaded before HIMEM.SYS that is already hooking the Int 15H/88H interrupt and allocating extended memory for its own use.

If no other drivers using extended memory are loaded before HIMEM.SYS in the CONFIG.SYS file, the /EISA switch can safely be used to force HIMEM.SYS to allocate all EISA memory, not just the amount returned by Int 15H/88H. This can make a lot more extended memory that conforms to the Extended Memory Specification (XMS) available.

Some older programs that used extended memory (such as Windows 3.0) do not work properly with extended memory addresses above 16 MB. Using the /EISA switch on machines with more than 16 MB may allow Windows 3.1 to use more memory, but will cause Windows 3.0 to fail. Users that plan to switch back and forth between Windows 3.1 and Windows 3.0 may not want to use the /EISA switch.


KBCategory: kbenv
KBSubcategory: win31 winmem
Additional reference words: 3.10 3.1 XMS DPMI


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: April 26, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.