DOCERR: How CN_RECEIVE Events Are GeneratedLast reviewed: July 23, 1997Article ID: Q101415 |
3.10
WINDOWS
kbprg kbdocerr
The information in this article applies to:
SUMMARYWM_COMMNOTIFY messages with CN_RECEIVE notifications are enabled when EnableCommNotification() is called with any number but -1 in the cbWriteNotify parameter. CN_TRANSMIT notifications are enabled when the cbOutQueue parameter is any number but -1. The CN_RECEIVE notifications are generated when either the number of characters in the receive queue exceeds cbWriteNotify, or a time-out occurs. Similarly, CN_TRANSMIT notifications are generated when the number of characters in the output queue drops below the cbOutQueue parameter.
MORE INFORMATIONWhen the COMM.DRV is loaded, it calls CreateSystemTimer() to create a 100 millisecond timer. When the timer goes off, COMM.DRV loops through all open ports, and does the "time-out check." The timer period is not configurable. A CN_RECEIVE notification is generated if at receive interrupt time the following are true:
Similarly, a WM_COMMNOTIFY message in which the CN_RECEIVE flag is set is sent only when the output queue is larger than the number of bytes specified in the cbOutQueue parameter.This should be replaced by:
Similarly, a WM_COMMNOTIFY message in which the CN_TRANSMIT flag is set is sent only when the number of bytes in the output queue first exceeds and then falls below the number of bytes specified in the cbOutQueue parameter.COMM.DRV has a bug that can generate extra CN_RECEIVE or CN_TRANSMIT notifications. For additional information, please see the following article in the Microsoft Knowledge Base:
ARTICLE-ID: Q101420 TITLE : BUG: Extra CN_RECEIVE/CN_TRANSMIT Events |
Additional reference words: 3.10 docerr
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |