Article ID: 101631 - View products that this article applies to.
This article was previously published under Q101631
This article has been archived. It is offered "as is" and will no longer be updated.
The text below describes how Windows NT supports serial communications in 16-bit Windows-based and in MS-DOS-based applications.
16-Bit Windows-Based ApplicationsWindows NT supports serial communications in 16-bit Windows-based applications in the same manner that 16-bit Windows 3.1 does, through communications functions in the Windows application programming interface (API). From the application standpoint, Windows NT provides COMM.DRV, the communications driver in 16-bit Windows 3.1, because a mapping exists between the Windows 3.1 and Windows NT functions. This mechanism emulates the EventWord and shadow modem status register (MSR) to support the GetCommEventMask() function. It also sends WM_COMMNOTIFY messages to support the EnableCommNotification() function.
If a 16-bit Windows-based application uses any extended functionality provided by a third-party communications driver, it may not communicate reliably because Windows NT may not support the extended functionality.
MS-DOS-Based ApplicationsMost MS-DOS-based communication applications do not use any serial port functions; instead, they directly access the serial port hardware. Windows NT supports these applications by simulating the standard hardware serial adapters, COM1 through COM4; the application never directly controls the serial port hardware. Modems that are setup for non standard irq's like irq 5 will not work with dos applications in Windows NT. Win32 applications like DUN and Hyperterminal will work correctly though.
Windows NT simulates four 16450 UARTs at the standard serial I/O addresses and interrupt numbers used in IBM PC-compatible hardware. When each virtual MS-DOS machine (VDM) starts, the simulated UARTs are dormant. When an application accesses a simulated UART, Windows NT connects the simulated UART to the corresponding Windows NT serial port, even if it uses a different address, interrupt number, or a completely different interface. If the corresponding serial port is not present of if it is already in use, Windows NT displays an error dialog box to inform the user of the problem.
Some applications have an "idle curiosity" about serial ports that they do not otherwise use. When you run one of these applications in Windows NT, it may cause spurious error messages and/or prevent another application from using the serial ports. At this time, if the software does not provide a method to disable this behavior, there is no method to work around this behavior. Contact your software supplier for a corrected, or Windows NT-specific, version of the application.
NOTE: Serial communications is not emulated perfectly because of fundamental differences between the preemptive and nonpreemtive multitasking environments. If an application uses real-time hardware interrupts, it may experience problems caused by preemptive multitasking in Windows NT. Timing serial events in Windows NT may be different than in 16-bit Windows 3.1. Also, the ability to directly access hardware is not available in Windows NT. If your application directly accesses hardware, contact your vendor for a Windows NT-specific version of the application.