Canceling WaitCommEvent() with SetCommMask()

Last reviewed: December 11, 1996
Article ID: Q105302
The information in this article applies to:
  • Microsoft Win32 Application Programming Interface (API) included with:

        - Microsoft Windows NT versions 3.1 and 3.5
    

If a serial port is in nonoverlapped mode (without FILE_FLAG_OVERLAPPED) and SetCommMask() is called, the call does not return until any pending WaitCommEvent() calls return. This apparently contradicts the following statement from the SetCommMask() Help

   If SetCommMask() is called for a communications resource while a wait
   is pending for that resource, WaitCommEvent() returns an error.

and the following statement from the WaitCommEvent() Help:

   If a process attempts to change the device handle's event mask by
   using the SetCommMask() function while a WaitCommEvent() operation
   is in progress, WaitCommEvent() returns immediately.

However, this is the expected behavior. If you open a serial port in the nonoverlapped mode, then you can do only one thing at a time with the serial port. SetCommMask() must block while the WaitCommEvent() call is blocking.

If the serial port was opened with FILE_FLAG_OVERLAPPED, WaitCommEvent() will return after SetCommEvent() has been called.

The SDK 3.51 docs have been corrected.


Additional reference words: 3.10 3.50 com1 com2
KBCategory: kbprg
KBSubcategory: BseCommapi


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: December 11, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.