Why 16-Bit Windows Applications Run in Single VDM

This article was previously published under Q100318
This article has been archived. It is offered "as is" and will no longer be updated.
Windows NT provides a virtual MS-DOS machine (VDM) for all 32-bitWindows-based applications that acts as a complete environment forthe application to run in. However, all 16-bit Windows-basedapplications run in a single VDM, sharing a single Win32 subsystemprocess. There are several reasons for this.

The VDM for 16-bit applications is actually a multithreaded Win32application in which each 16-bit application runs in its own thread.This enables the Win32 subsystem to do sophisticated things like havea desynchronized message queue for 16-bit applications. This approachis much more general and portable; it yields excellent performance onRISC-based platforms and doesn't require any hacks at the devicedriver level.

Also, there are many applications that must run in a single VDM inorder to function properly. Some examples are Microsoft Mail andSchedule+. They share common code and data structures via dynamic linklibraries (DLLs); if run in separate VDMs they could seriouslymalfunction. It is difficult to tell in advance which applications arelikely to break when run in separate VDMs, so this capability could bedangerous.

Multiple VDM awareness and the large amount of effort required to usethe more complex and more powerful architecture working have madeseparate VDMs for 16-bit Windows applications a low priority, too lowfor the first release of Windows NT. However, it is understood, inlimited circumstances, that a relatively sophisticated user could makevery good use of separate 16-bit Windows VDMs. This feature will mostlikely be added to the second release of Windows NT. Even so, some ofthe problems stated above cannot be solved; there will be no guaranteethat everything will work as it should. OLE (Object Linking andEmbedding) version 2.0 is a good example of this because the 16-bitWindows implementation requires a great deal of code sharing via DLLs;this won't necessarily work across VDMs.

NOTE: As of Windows 3.5, Win16 apps in separate VDMs are supported inWindows NT version 3.5. The interface is this: If running the item inProgram Manager, check "Run in Separate Memory Space" in the Program ItemProperties dialog box. If you are starting from the command prompt, the"start" command now supports a /SEPARATE option.
prodnt access database dbase fox

Article ID: 100318 - Last Review: 10/22/2013 20:22:21 - Revision: 3.1

Microsoft Windows NT Advanced Server 3.1, Microsoft Windows NT Workstation 3.1

  • kbnosurvey kbarchive kbother KB100318