Microsoft KB Archive/177677

= TSR Applications Hang While Login.exe Is Running =

Article ID: 177677

Article Last Modified on 11/1/2006

-

APPLIES TO


 * Microsoft Windows NT Server 4.0, Terminal Server Edition
 * Microsoft Windows NT Server 3.51
 * Microsoft Windows NT Server 4.0 Standard Edition
 * Microsoft File and Print Services for Netware 3.51
 * Microsoft Windows Services for Netware 4.0

-



This article was previously published under Q177677



SYMPTOMS
In your enterprise, you have Novell NetWare servers and Windows NT domains. Your clients are running MS-DOS-based redirectors by Novell. In addition, you use MS-DOS Terminate and Stay Resident (TSR) tools to enhance your environment.

For example, you have software that pulls print jobs off a Novell NetWare print queue for output on a printer attached locally.

When you run Login.exe from your Autoexec.bat or other scripts without parameters it will wait, prompting you for a user name. You notice that during this time the TSR application does not perform any work and appears to stop responding (hang).

You do not experience this behavior when you use Novell's version of Login.exe.



CAUSE
In MS-DOS, TSR applications are only allowed to do work in the Interrupt Service Routine (ISR) when the so-called InDOS flag is not set. This flag can be retrieved through the MS-DOS call INT 21H function 34H.

The Microsoft versions of Login.exe, Attach.exe, Capture.exe, and Map.exe use INT 21H function 3FH (Read File or Device) to get the user or server name from the user by means of the keyboard. This function sets the InDOS flag while it is active.

When the TSR application wakes up because of a timer or another interrupt, it checks the InDOS flag, sees that it is set and returns without any action. So, the TSR application cannot do anything while Login.exe waits for the user name. This problem will happen with any software using INT21H function 3FH.

Both applications are programmed according to the guidelines of the MS-DOS operating system. The problem is because of a limitation in the MS-DOS programming paradigm and, thus, by design.

Novell's version of Login.exe uses INT 21H function 08H (Read Keyboard without Echo). This is a low-level function (callable from an ISR) that does not set the InDOS flag and, hence, does not cause the TSR application to stop responding.



RESOLUTION
To resolve this problem, do one of the following:

Windows NT 3.51
In your scripts, before you call Login.exe, you can either add an echo and pause statement or a CHOICE call.

Example:

CHOICE Do you want to logon to the company network IF errorlevel 2 GOTO end LOGIN :end

This will prevent the computer from waiting in Login.exe.

Windows NT 4.0
To resolve this problem, obtain the latest service pack for Windows NT 4.0 or Windows NT Server 4.0, Terminal Server Edition. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

152734 How to Obtain the Latest Windows NT 4.0 Service Pack



STATUS
Microsoft has confirmed this to be a problem in Windows NT version 3.51. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

Microsoft has confirmed that this is a problem in Windows NT 4.0 and Windows NT Server 4.0, Terminal Server Edition. This problem was first corrected in Windows NT 4.0 Service Pack 4.0 and Windows NT Server 4.0, Terminal Server Edition Service Pack 4.

Keywords: kbhotfixserver kbqfe kbbug kbfix KB177677

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.