Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/104993

From BetaArchive Wiki
Knowledge Base


PSS ID Number: 104993

Article Last Modified on 11/20/1999

The information in this article applies to:

  • Microsoft MS-DOS operating system 6.2
  • Microsoft MS-DOS operating system 6.21
  • Microsoft MS-DOS operating system 6.22

This article was previously published under Q104993


MS-DOS includes two files to run Microsoft Diagnostics (MSD): MSD.COM and MSD.EXE.


MSD versions 2.0, 2.0a, and 2.01 do not interact correctly with expanded memory services (EMS) memory. MSD makes an INT 67h EMS call and passes an incorrect buffer pointer. The result is corrupted memory when INT 67h writes information to this invalid buffer.

To work around this problem, MSD.COM loads before MSD.EXE, hooks INT 67h, and then monitors for the MSD.EXE INT 67h call. MSD.COM patches the buffer pointer to point to the correct MSD.EXE data segment. This prevents the data corruption.

MSD.COM is used rather than making the change in MSD.EXE because MSD.COM can be used with any 2.x version of MSD.EXE. You can protect against memory corruption simply by placing the MSD.COM file in the directory where MSD.EXE is located.

Microsoft has confirmed this to be a problem in MSD versions 2.0, 2.0a, and 2.01. This problem was corrected in MSD version 2.1 (provided with Windows for Workgroups version 3.11).

Additional query words: 6.22 6.20 now

Keywords: KB104993
Technology: kbMSDOS620 kbMSDOS621 kbMSDOS622 kbMSDOSSearch