Knowledge Base

PRB: COMM (TTY) Sample Does Not Work on Windows 95

Article ID: 128787

Article Last Modified on 11/21/2006


APPLIES TO


This article was previously published under Q128787

SYMPTOMS

The Win32 COMM (old TTY) sample that ships with Visual C++ version 2.x and the Windows 95 SDK (pre-release) does not work correctly under Windows 95 M8 builds and later. The problem involves assigning values to the Offset member of the OVERLAPPED structure which is one of the arguments to the WriteFile function call.

The observed behavior is that the COMM sample writes only one byte to the serial port. No other data is transmitted after the first byte.

CAUSE

The documentation for the OVERLAPPED structure explicitly states that the Offset and OffsetHigh members must be set to 0 when reading from or writing to a named pipe or communications device. This was not done in the sample.

RESOLUTION

  1. Delete the following line from the WriteCommByte() function in the sample:
       WRITE_OS( npTTYInfo ).Offset += dwBytesWritten ;
    						
  2. Add the following lines to the CreateTTYInfo() function:
       WRITE_OS( npTTYInfo ).Offset = 0 ;
       WRITE_OS( npTTYInfo ).OffsetHigh = 0 ;
    						

STATUS

This is a problem with the sample, not with Windows 95. Windows 95 correctly implements WriteFile() and use of the OVERLAPPED structure.

Additional query words: 4.00

Keywords: KB128787