"Himem.sys is missing" error message - even though the file is present

I had a problem recently with a Win 95 machine which was reporting that the Himem.sys file was missing.  I was doing preliminary research to see what was going on, and somehow it has gone away... but the research I did leaves me with basic questions about the nature and function of the file, what it does, and why it is such a recurring topic of requests for help on technical forums.
 

A week or so after the fact, and some more reading of postings, etc.:  I am inclined to the opinion that most Windows 95 Himem.sys error messages do not result from either corrupt Himem.sys files or from bad memory, though some undoubtedly do.  Rather, I suspect that they result from errors in the syntax of the command calling Himem.sys after a user edits the Config.sys file, or from the auto insertion of new lines in Config.sys by newly installed software, putting the H.sys file too far down in the file, after other command lines it should precede.  Just a hunch, there.


My own problem was inadequately observed because preliminary 'fiddling around' made it go away.  My recollection is the error message occurred in the processing of the config.bat file, but did not keep Windows from loading, so my concern was fairly low in the first place.  I think it went away either when I copied it from another disk, which would indicate a corrupt file, or when I was cleaning up the syntax and order of commands in the config.sys file.   The 486 DX66 is slow enough that I just don't reboot between each and every change, unless I am doing 'rigorous' research.

On the forums the problems with Himem.sys result in a lot of 'advice' but little analysis or explanation, so it is hard to learn anything at all.  Bunch of 'S' types there it seems; do a google on "Meyers Briggs types" if you don't get that.

One person who had a problem "When I install the drivers for a printer and restart the computer the system says that the himem.sys file is missing. make sure is in your Windows directory." I look in the windows directory and found it there. So what's the problem.   Then later he stated  that "it only happens when I restart Windows. When turn it off and then turn on again Windows loads without problem."

There no follow-up on this last information, that "it only happens when I restart Windows. When turn it off and then turn on again Windows loads without problem." in the forum!   Wish there had been.

I don't know why that would be, and think the answer may be useful.  Is it because Config.sys is processed differently, or not at all, in one of the two cases?  I'd expect Config.sys processing (more likely I am guessing on a full reboot than a Windows restart) to cause problems, not solve them as seems to be the case here.  What is the system doing on restart that it is doing differently on full reboot?

Here is what I think I know about Himem.sys. Who can correct me or add something to my understanding?

There are often two Himem.sys files in an upgrade install of Windows 95 (and later upgrades?).   One is found in C:\Windows and in my Win 95 4.00.950 is dated 7/11/95, 32935 bytes.  The second is found in C:\DOS and is dated 3/10/93, 14208 bytes. (Win 98 might be 5/11/98, 33192 bytes with the DOS ver. 5/31/94, 29136 bytes.)

Many things can result in Windows reporting that Himem.sys is missing, and requesting the user to be sure it is there - it usually is, in one form or another.

If the reference to the Himem.sys file in Config.sys is to a location other than C:\Windows, then it will not be located, or it may be locate the DOS version of the file.

If the reference is to the right location, C:\Windows, but the Windows Himem.sys file has been corrupted, or inadvertently replaced with the DOS H.s file, then it will not be recognized.

If the syntax of the Config.sys line requesting the file is wrong, or even if the line is not early enough in the C.s file, it may not be processed correctly, and so be reporting as missing.

If there is bad memory in the area Himem.sys is set to use, instead of a message reporting that, it appears sometimes H.s itself is reported missing.

Here is a post by Mesich which can help to distinguish between memory hardware failure causes of H.sys problems and problems with the H.sys files and Win loading calls for them.
http://computing.net/windows95/wwwboard/forum/125189.html

A common recommendation is to do a sysgen from a good boot floppy disk (typing sys c: from the A:\> prompt).  That should replace a faulty Himem.sys file with a good copy. (copying the boot disk copy of the file to C:\Windows has been suggested too.)

In Win 98, there may be a good copy in C:\windows\command\EBD.

It sure would be good to know what the file does, and how and when it is processed in loading Windows.  Cookbook recipes for fixing  problems just don't do it for me, I want the why's too.


The following, posting, which deals with W 98, not Win 95, provides a way to try to distinguish between problems with the files and commands and problems with the memory hardware.
http://computing.net/windows95/wwwboard/forum/125189.html

         Name: mesich
                     Date: September 07, 2002 at 07:54:04 Pacific
                     Homepage: mesich's homepage  http://www.mesich.com
                     Subject: The evil HIMEM.SYS
                     Reply:

                          HIMEM.SYS ERROR in Win98

                          Determine if it is software or hardware.

                          Insert a bootdisk and restart the computer.
                          If you do not receive the error using the bootdisk the
                          himem.sys file is corrupt or missing. As stated by FTWZ
                          replace the himem.sys file located in C:\Windows with
                          the one on the bootdisk.

                          If you are receiving the error with the bootdisk it is
                          most likely due to faulty RAM as stated by Dusted1.

                          Ensure the RAM is properly seated.

                          If you have multiple sticks of RAM try them one at a
                          time to find which is causing the problem.

                          As far as the mentioned config.sys file and it being
                          empty, that is OK using Win98.
                          Nothing is needed in config.sys unless you are running
                          any Dos based programs.

                          HTH

                          Good Day!
                          Mesich

                 http://support.microsoft.com/support/kb/articles/Q129/6/05.asp?LN=EN-US&SD=gn&FR=0&qry=extract&rnk=2&src=DHCS_MSPSS_gn_SRCH&SPR=W95



Another article from http://freepctech.com/articles/articles.php?ArticleID=38

Missing Himem.sys or A20 error in Windows95 or 98

                              by Roxanne Pierce
                                 2000/01/26

      Symptoms:

      When you reboot the computer, it displays one of the following (or similar) error
      messages:

           "Windows XMS driver Unable to control A20 line; XMS driver not installed."
           "HIMEM.SYS is missing."

      This error message does not appear when first applying power to the computer, only
      when rebooting it once it is already powered on.  It is more likely to affect laptop
      computers than desktop computers. This error message will frequently appear for the
      first time after installing one of several versions of Norton Anti-Virus.

      Solution:

      Turn the computer off completely, then follow these steps to make changes to the
      computer's DOS startup files, autoexec.bat and config.sys:

         1. Turn on the computer.
         2. For Windows 95 When the screen says "Starting Windows 95", immediately
           press the F8 key. This displays the Windows 95 Startup Menu. For Windows
           98: as soon as you turn on the computer, press and hold the CTRL key until the
           Windows 98 Startup Menu is displayed.
         3. Select Safe Mode - Command Prompt Only either by highlighting that option
           with your down arrows or by typing in the number of that menu option, and
           then press the Enter key on your keyboard.
         4. At the C:\> prompt, type EDIT AUTOEXEC.BAT [Enter]
         5. You should now have a blue screen which you can edit text in. At the very top
           of the window, add the following line SET DOS16M=2
         6. Press Alt+F to open the File menu. Choose Exit and press the Enter key.
         7. When prompted to save changes, use your arrow keys to highlight "Yes" and
           press Enter.
         8. You will now be back at the C:\> prompt. Type EDIT CONFIG.SYS [Enter]
         9. In the text editor, find a line which refers to a file called HIMEM.SYS and add
           /M:1 to the very end of that line. Be sure there is a space following the end of
           the existing line and the /M:1
        10. If you do not have a HIMEM.SYS line, add the following line:
           DEVICE=C:\Windows\HIMEM.SYS /M:1
        11. Press Alt+F to open the File menu. Choose Exit and press Enter. When
           prompted to save changes, answer Yes and press Enter.
        12. Reboot the computer. It should now boot normally.

      Note 1 You may need to alter the path if your version of Windows 95 or Windows 98 is
      not located in the Windows directory.

      Note 2 The /M:1 line depends upon the hardware version of the A20 handler.  You may
      need to try the numbers 1-17 (for instance, /M:12) to find the correct version for the
      computer. PS/2 computers and Prolinea computers, for example, tend to require /M:2
      instead of /M:1.