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