WaitCommEvent

【勇芳软件工作室】汉化HomePreviousNext

WaitCommEvent功能等待指定通信设备发生事件。由该函数监视的事件集包含在与设备句柄相关联的事件掩码中。

BOOL WaitCommEvent(

HANDLE 【HFILE】,//通讯设备的句柄
LPDWORD 【lpEvtMask】,//发生事件变量的地址
LPOVERLAPPED 【lpOverlapped的】,//重叠结构的地址
); 

参数

【HFILE】

识别通信设备。CreateFile函数返回此句柄。

【lpEvtMask】

指向一个32位变量,接收一个指示发生的事件类型的掩码。如果发生错误,则该值为零;否则,它是以下值之一:

含义
EV_BREAK输入时检测到中断。
EV_CTSCTS(清除发送)信号改变状态。
EV_DSRDSR(数据设置就绪)信号改变状态。
EV_ERR发生线路状态错误。线路状态错误是CE_FRAME,CE_OVERRUN和CE_RXPARITY。
EV_RING检测到环形指示器。
EV_RLSDRLSD(接收线路信号检测)信号改变状态。
EV_RXCHAR收到一个字符并放在输入缓冲区中。
EV_RXFLAG事件字符被接收并放置在输入缓冲器中。事件字符在设备的DCB结构中指定,该结构通过使用SetCommState功能应用于串行端口。
EV_TXEMPTY输出缓冲区中的最后一个字符已发送。

【lpOverlapped的】

指向OVERLAPPED结构。如果使用FILE_FLAG_OVERLAPPED打开【HFILE】,则此结构是必需的。

如果使用FILE_FLAG_OVERLAPPED打开【HFILE】,则【lpOverlapped的】参数不能为NULL。它必须指向一个有效的OVERLAPPED结构。如果使用FILE_FLAG_OVERLAPPED打开【HFILE】,并且【lpOverlapped的】为NULL,则该函数可能会错误地报告操作是否完成。

如果使用FILE_FLAG_OVERLAPPED打开hFile,并且【lpOverlapped的】不为NULL,则WaitCommEvent作为重叠操作执行。在这种情况下,OVERLAPPED结构必须包含手动重置事件对象的句柄(使用CreateEvent函数创建)。

如果【HFILE】句柄未使用FILE_FLAG_OVERLAPPED打开,WaitCommEvent不会返回,直到指定的事件之一或发生错误。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

WaitCommEvent功能监视指定通信资源的一组事件。要设置和查询通信资源的当前事件掩码,请使用SetCommMaskGetCommMask函数。

如果重叠操作无法立即完成,则函数返回FALSE,GetLastError函数返回ERROR_IO_PENDING,表示操作在后台执行。发生这种情况时,系统将在WaitCommEvent返回之前将OVERLAPPED结构的活动成员设置为未发信号的状态,然后在其中一个指定的事件或错误发生时将其设置为信号状态。调用进程可以使用等待功能之一来确定事件对象的状态,然后使用GetOverlappedResult函数确定WaitCommEvent操作的结果。GetOverlappedResult报告操作的成功或失败,并且【lpEvtMask】参数指向的变量被设置为指示发生的事件。

如果进程尝试通过使用SetCommMask函数来更改设备句柄的事件掩码,而WaitCommEvent操作正在进行中,WaitCommEvent将立即返回。【lpEvtMask】参数指向的变量设置为零。

也可以看看

CreateFile, DCB, GetCommMask, GetOverlappedResult, OVERLAPPED, SetCommMask, SetCommState