NTVDM 16-Bit Program Does Not Run If the Window Does Not Have Focus (812681)



The information in this article applies to:

  • Microsoft Windows XP Professional
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Home Edition SP1
  • Microsoft Windows XP Professional SP1

SYMPTOMS

Many MS-DOS-based Video Electronics Standard Association (VESA) games start in windowed mode and call VESA BIOS functions to switch to SVGA mode. Because the Virtual DOS Machine (NTVDM) does not emulate VESA BIOS calls, such game programs had to start in full-screen mode in the past. Users had to manually switch to full-screen mode and then start the game. To better manage this behavior, NTVDM was enhanced to detect when a program calls a VESA BIOS function, and to automatically switch to full-screen mode to run the BIOS function without emulation.

However, if a program is started without focus and the program calls a VESA BIOS function, NTVDM cannot switch to full-screen mode to let the VESA BIOS handle the request. Instead, NTVDM waits for the window to have focus to make the switch.

CAUSE


In full-screen mode, programs have full access to the video hardware and do not run under emulation. NTVDM does not emulate VESA BIOS function calls in windowed mode or in full-screen mode. Therefore, if a program calls VESA BIOS functions in windowed mode, the program receives an error. If a program calls VESA BIOS functions in full-screen mode, the call succeeds if VESA hardware and software are present.

The problem occurs if a program is started without focus and a VESA BIOS function is called. In this case, NTVDM cannot switch to full-screen mode to let the VESA BIOS handle the request. NTVDM waits for the window to gain focus.

RESOLUTION

Programs must have the window focus before they can make VESA BIOS function calls.

Modification Type:MajorLast Reviewed:1/28/2003
Keywords:kbprb KB812681