WaitCommEvent 関数 (winbase.h)
指定した通信デバイスでイベントが発生するまで待機します。 この関数によって監視されるイベントのセットは、デバイス ハンドルに関連付けられているイベント マスクに含まれています。
構文
BOOL WaitCommEvent(
[in] HANDLE hFile,
[out] LPDWORD lpEvtMask,
[in] LPOVERLAPPED lpOverlapped
);
パラメーター
[in] hFile
通信デバイスへのハンドル。 CreateFile 関数は、このハンドルを返します。
[out] lpEvtMask
発生したイベントの種類を示すマスクを受け取る変数へのポインター。 エラーが発生した場合、値は 0 です。それ以外の場合は、次のいずれかの値になります。
値 | 説明 |
---|---|
|
入力時にブレークが検出されました。 |
|
CTS (送信クリア) シグナルの状態が変更されました。 |
|
DSR (データ セット対応) シグナルの状態が変更されました。 |
|
行状態エラーが発生しました。 行の状態エラーは 、CE_FRAME、 CE_OVERRUN、 およびCE_RXPARITY。 |
|
リング インジケーターが検出されました。 |
|
RLSD (receive-line-signal-detect) シグナル変更状態。 |
|
文字が受信され、入力バッファーに格納されました。 |
|
イベント文字が受信され、入力バッファーに配置されました。 イベント文字は、SetCommState 関数を使用してシリアル ポートに適用される、デバイスの DCB 構造体で指定されます。 |
|
出力バッファーの最後の文字が送信されました。 |
[in] lpOverlapped
OVERLAPPED 構造体へのポインター。 この構造体は、 hFile が FILE_FLAG_OVERLAPPED で開かれた場合に必要です。
hFile が FILE_FLAG_OVERLAPPEDで開かれた場合、lpOverlapped パラメーターは NULL にすることはできません。 有効な OVERLAPPED 構造体を指す必要があります。 hFile が FILE_FLAG_OVERLAPPED で開き、lpOverlapped が NULL の場合、関数は操作が完了したことを誤って報告する可能性があります。
hFile が FILE_FLAG_OVERLAPPED で開かれたが lpOverlapped が NULL でない場合、WaitCommEvent は重複した操作として実行されます。 この場合、 OVERLAPPED 構造体には、( CreateEvent 関数を使用して作成された) 手動リセット イベント オブジェクトへのハンドルが含まれている必要があります。
hFile がFILE_FLAG_OVERLAPPEDで開かれていた場合、WaitCommEvent は、指定されたイベントのいずれかが発生するか、エラーが発生するまで戻りません。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
WaitCommEvent 関数は、指定された通信リソースの一連のイベントを監視します。 通信リソースの現在のイベント マスクを設定してクエリするには、 SetCommMask 関数と GetCommMask 関数を使用します。
重複した操作をすぐに完了できない場合、関数は FALSE を 返し、 GetLastError 関数は ERROR_IO_PENDINGを返し、操作がバックグラウンドで実行されていることを示します。 この場合、システムは、WAITCommEvent が返される前に OVERLAPPED 構造体の hEvent メンバーを非シグナル状態に設定し、指定されたイベントまたはエラーのいずれかが発生したときにシグナル状態に設定します。 呼び出し元のプロセスでは、 待機関数 のいずれかを使用してイベント オブジェクトの状態を確認し、 GetOverlappedResult 関数を使用して WaitCommEvent 操作の結果を確認できます。 GetOverlappedResult は操作の成功または失敗を報告し、 lpEvtMask パラメーターが指す変数は、発生したイベントを示すように設定されます。
重複する WaitCommEvent 操作の進行中に SetCommMask 関数を使用してデバイス ハンドルのイベント マスクを変更しようとすると、WaitCommEvent は直ちに返されます。 lpEvtMask パラメーターが指す変数は 0 に設定されます。
例
例については、「 通信イベントの監視」を参照してください。
要件
サポートされている最小のクライアント | Windows XP [デスクトップ アプリ | UWP アプリ] |
サポートされている最小のサーバー | Windows Server 2003 [デスクトップ アプリのみ | UWP アプリ] |
対象プラットフォーム | Windows |
ヘッダー | winbase.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |