Microsoft KB Archive/60387

From BetaArchive Wiki

WIN87EM Handling Under Windows 2.x Vs. Windows 3.00

PSS ID Number: Q60387 Article last modified on 11-05-1993

3.00 MS-DOS

The information in this article applies to:
- Microsoft Windows Software Development Kit for Windows version 3.0

SUMMARY

Windows Version 3.00 applications no longer need to ship WIN87EM.EXE because the Retail Windows 3.00 package includes WIN87EM.DLL. Windows 2.x applications, however, must continue to ship WIN87EM.EXE because it is needed in Windows 2.x and in Windows 3.00 real mode. Windows applications that use the Emulator math package need to dynamically link with the WIN87EM library. The following is information on how this support is provided in Windows 2.x and Windows 3.00.

MORE INFORMATION

Windows 2.x Applications Running in Windows 2.x

Applications that use the Emulator math package must ship WIN87EM.EXE along with their application. When the application loads, it implicitly requests WIN87EM.EXE, which must be pointed to somewhere by the PATH variable.

Windows 3.00 Applications Running in Windows 3.00

Applications that use the Emulator math package no longer need to ship WIN87EM.EXE because Windows 3.00 Retail includes WIN87EM.DLL in its SYSTEM directory. Any Windows 3.00 application that uses Emulator math will implicitly link to WIN87EM.DLL.

Windows 2.x Applications Running in Windows 3.00

In Windows 3.00 real mode, the situation is handled the same way as in Windows 2.x: the application requests a dynalink to WIN87EM.EXE, and the application must ship WIN87EM.EXE to satisfy this request. Windows 3.00 real mode honors this request by loading WIN87EM.EXE. In Windows 3.00 standard mode and enhanced mode, however, we do not load the 2.x WIN87EM.EXE because it causes general protection violations in protected mode. Instead, we intercept the 2.x application’s dynalink request for WIN87EM.EXE and replace it with the 3.00 library WIN87EM.DLL. This happens transparently, so the application is not aware of it; therefore, no modifications to your application source file, MAKE file, .DEF file, or libraries are needed. This special-case handling of Windows 2.x applications in Windows 3.00 occurs regardless of whether or not the application has been marked as “3.00-compatible” using the MARK.EXE utility. Microsoft has tested all of the above scenarios, and they work exactly as stated. If you are building a Version 2.x application with 2.x tools, or if you are building a 3.00 application with 3.00 tools, the above methods will work correctly. If you are building a 2.x application with 3.00 tools, the above methods are not guaranteed to work because this is not a valid way to build a 2.x application. For more information, query on the following words: create and windows and 3.00 and applications and compatible and 2.x

Additional reference words: 3.00 floating point KBCategory: KBSubcategory: KrFltptMisc Copyright Microsoft Corporation 1993.