Why 16-Bit Windows Applications Run in Single VDM (100318)
The information in this article applies to:
- Microsoft Windows NT Server 3.1
- Microsoft Windows NT Workstation 3.1
This article was previously published under Q100318 SUMMARY
Windows NT provides a virtual MS-DOS machine (VDM) for all 32-bit
Windows-based applications that acts as a complete environment for
the application to run in. However, all 16-bit Windows-based
applications run in a single VDM, sharing a single Win32 subsystem
process. There are several reasons for this.
The VDM for 16-bit applications is actually a multithreaded Win32
application in which each 16-bit application runs in its own thread.
This enables the Win32 subsystem to do sophisticated things like have
a desynchronized message queue for 16-bit applications. This approach
is much more general and portable; it yields excellent performance on
RISC-based platforms and doesn't require any hacks at the device
driver level.
Also, there are many applications that must run in a single VDM in
order to function properly. Some examples are Microsoft Mail and
Schedule+. They share common code and data structures via dynamic link
libraries (DLLs); if run in separate VDMs they could seriously
malfunction. It is difficult to tell in advance which applications are
likely to break when run in separate VDMs, so this capability could be
dangerous.
Multiple VDM awareness and the large amount of effort required to use
the more complex and more powerful architecture working have made
separate VDMs for 16-bit Windows applications a low priority, too low
for the first release of Windows NT. However, it is understood, in
limited circumstances, that a relatively sophisticated user could make
very good use of separate 16-bit Windows VDMs. This feature will most
likely be added to the second release of Windows NT. Even so, some of
the problems stated above cannot be solved; there will be no guarantee
that everything will work as it should. OLE (Object Linking and
Embedding) version 2.0 is a good example of this because the 16-bit
Windows 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 in
Windows NT version 3.5. The interface is this: If running the item in
Program Manager, check "Run in Separate Memory Space" in the Program Item
Properties dialog box. If you are starting from the command prompt, the
"start" command now supports a /SEPARATE option.
Modification Type: | Major | Last Reviewed: | 10/29/2003 |
---|
Keywords: | kbother KB100318 |
---|
|