KsWaitCommEvent

此函式是否可用依装置支援项目而定。

等待指定通讯装置发生事件,此函式所监视的事件集包含在与装置控制代码关联的事件遮罩中。

语法

BOOL KsWaitCommEvent(
     HANDLE hFile,
     LPDWORD lpEvtMask,
     LPOVERLAPPED lpOverlapped
);

参数

hFile:通讯装置的控制代码,KsCreateComm 函式回传此控制代码。

lpEvtMask:接收变数的指标,该变数指出发生之事件类型的遮罩,若发生错误,则值为零,否则为以下其中之一值:

说明

EV_BREAK

0x0040

输入侦测到中断。

EV_CTS

0x0008

清除发送 (clear-to-send, CTS) 讯号状态改变。

EV_DSR

0x0010

资料集备妥 (data-set-ready, DSR) 讯号状态改变。

EV_ERR

0x0080

发生线路状态错误。线路状态错误为 CE_FRAME、CE_OVERRUN 与CE_RXPARITY。

EV_RING

0x0100

侦测到振铃指示器。

EV_RLSD

0x0020

接收线路讯号检测 (receive-line-signal-detect, RLSD ) 讯号状态改变。

EV_RXCHAR

0x0001

字元已接收且置于输入缓冲区。

EV_RXFLAG

0x0002

事件字元已接收且置于输入缓冲区,事件字元在装置的 DCB 结构中指定,其使用 KsSetCommState 套用至串联埠。

EV_TXEMPTY

0x0004

输出缓冲区的最后一个字元已传送。

 

lpOverlappedOVERLAPPED 结构的指标,用 FILE_FLAG_OVERLAPPED 开启 hFile 时需此结构。

若使用 FILE_FLAG_OVERLAPPED 开启 hFilelpOverlapped 参数不得为 NULL,且必须指向有效的 OVERLAPPED 结构;若用 FILE_FLAG_OVERLAPPED 开启 hFilelpOverlapped 为 NULL,函式可能错误回报此作业已完成。

若用 FILE_FLAG_OVERLAPPED 开启 hFile lpOverlapped 非 NULL, KsWaitCommEvent 会如重叠作业般运作,如此,OVERLAPPED 结构须包含手动重置事件物件的控制代码(使用 CreateEvent 函式创建)。

若非用 FILE_FLAG_OVERLAPPED 开启 hFileKsWaitCommEvent 在指定事件或错误发生前不会回传。

回传值

若函式执行成功将回传 TRUE;失败将回传 FALSE。欲获取延伸错误资讯请呼叫 GetLastError

备注

KsWaitCommEvent 函式为指定的通讯资源监控一组事件,欲设定及查询通讯资源的当前事件遮罩,请使用 KsSetCommMaskKsGetCommMask 函式。

若重叠作业无法立即完成,函式将回传 FALSE 而 GetLastError 函式将回传 ERROR_IO_PENDING,表示作业正在背景执行,发生此情况时,系统会在 KsWaitCommEvent 回传之前将 OVERLAPPED 结构的 hEvent 成员设置为非信号状态,然后在指定事件或发生错误时将其设置为有信号状态,呼叫过程可使用 wait 内其中一个函式来确定事件物件的状态,然后使用 KsGetOverlappedResult 函式来确定 KsWaitCommEvent 运作的结果,KsGetOverlappedResult 将回报运作成功与否,而lpEvtMask 参数指向的变数将设定来指示发生的事件。

若处理序在重叠的 KsWaitCommEvent 操作正在进行时,尝试使用 KsSetCommMask 函式更改装置控制代码的事件遮罩,则 KsWaitCommEvent 将立即转回,lpEvtMask 参数指向的变数设定为零。

范例

N/A

使用需求

  RT Win32
最低支援版本 4.0 4.0
标头档 kscom.h kscom.h
程式库 KsApi_Rtss.lib ksapi.h

参见

KsCreateComm

KsGetCommMask

KsSetCommMask

KsSetCommState