Determining Whether a WOW App is Running in Enhanced Mode (101893)
The information in this article applies to:
- Microsoft Win32 Software Development Kit (SDK) for Windows NT 3.5
- Microsoft Platform Software Development Kit (SDK) 1.0
This article was previously published under Q101893 SUMMARY
Windows NT and Windows NT Advanced Server will run a Windows 3.1
application in 386 enhanced mode on X86 machines (standard mode on RISC
machines). The proper way to determine whether a Windows 3.1 application is
in enhanced mode is to call GetWinFlags() and do a bit test for
WF_ENHANCED. This method is described on pages 486-487 in the Windows 3.1
Software Development Kit (SDK) "Programmer's Reference, Volume 2:
Functions."
MORE INFORMATIONCalling Interrupt 2F with AX=1600h
This method, which is described in the Windows 3.1 Device Development Kit
(DDK) checks to see whether a 386 memory manager is running. If Windows 3.1
is running in enhanced mode, it returns AL = 3 and 2 for standard mode.
Windows NT's WOW (Windows 16 on Windows NT) returns AL=0, which means
enhanced mode Windows is not running.
DWORD GetWinFlags()
The GetWinFlags() function retrieves the current Windows system and
memory configuration.
The configuration returned by GetWinFlags() can be a combination of the
following values:
Value Meaning
----------------------------------------------------------------
WF_80x87 System contains an Intel math coprocessor.
WF_CPU286 System CPU is an 80286.
WF_CPU386 System CPU is an 80386.
WF_CPU486 System CPU is an i486.
WF_ENHANCED Windows is running in 386-enhanced mode. The WF_PMODE
flag is always set when WF_ENHANCED is set.
WF_PAGING Windows is running on a system with paged memory.
WF_PMODE Windows is running in protected mode. In Windows 3.1,
this flag is always set.
WF_STANDARD Windows is running in standard mode. The WF_PMODE
flag is always set when WF_STANDARD is set.
WF_WIN286 Same as WF_STANDARD.
WF_WIN386 Same as WF_ENHANCED.
NOTE: When running in Windows NT, WF_WINNT will also be returned to tell
the 16-bit Windows-based application that you are running in Windows NT.
Example:
The following example uses the GetWinFlags() function to display
information about the current Windows system configuration:
Sample Code
int len;
char szBuf[80];
DWORD dwFlags;
dwFlags = GetWinFlags();
len = sprintf(szBuf, "system %s a coprocessor",
(dwFlags & WF_80x87) ? "contains" : "does not contain");
TextOut(hdc, 10, 15, szBuf, len);
len = sprintf(szBuf, "processor is an %s",
(dwFlags & WF_CPU286) ? "80286" :
(dwFlags & WF_CPU386) ? "80386" :
(dwFlags & WF_CPU486) ? "i486" : "unknown");
TextOut(hdc, 10, 30, szBuf, len);
len = sprintf(szBuf, "running in %s mode",
(dwFlags & WF_ENHANCED) ? "enhanced" : "standard");
TextOut(hdc, 10, 45, szBuf, len);
len = sprintf(szBuf, "%s WLO",
(dwFlags & WF_WLO) ? "using" : "not using");
TextOut(hdc, 10, 60, szBuf, len);
Modification Type: | Minor | Last Reviewed: | 7/11/2005 |
---|
Keywords: | KB101893 |
---|
|