win32ClearCommErrorおよびCOMSTAT構造体



Win32 Clearcommerror



URL:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa363180

通信エラーに関する情報を取得し、通信デバイスの現在のステータスを報告します。
通信エラーが発生した場合、この関数を呼び出すと、デバイスのエラーフラグがクリアされ、他の入出力操作が有効になります。



BOOL WINAPI ClearCommError( _In_ HANDLE hFile, _Out_opt_ LPDWORD lpErrors, _Out_opt_ LPCOMSTAT lpStat )

パラメータ:

hFile [in]

扱う
通信デバイスへのハンドル。 CreateFile関数はこのハンドルを返します。



lpErrors [out、オプション]

発生したエラーの種類
エラーのタイプを示すマスクを受け取る変数へのポインター。このパラメーターは、次の1つ以上の値にすることができます。

意味
CE_BREAK 0x0010 ハードウェアが破損状態を検出しました。
CE_FRAME 0x0008 ハードウェアがフレーミングエラーを検出しました。
CE_OVERRUN 0x0002 文字バッファオーバーランが発生しました。次のキャラクターは失われます。
CE_RXOVER 0x0001 入力バッファオーバーフローが発生しました。入力バッファーにスペースがないか、ファイルの終わり(EOF)文字の後に文字が受信されました。
CE_RXPARITY 0x0004 ハードウェアがパリティエラーを検出しました。

次の値はサポートされていません。
CE_DNS
CE_IOE
CE_MODE
CE_OOP
CE_PTO
CE_TXFULL

lpStat [出力、オプション]

デバイスのステータス情報が返されるCOMSTAT構造体へのポインタ。このパラメーターがNULLの場合、ステータス情報は返されません。



戻り値

成功、ゼロ以外を返す
失敗しました、0を返します
詳細については、GetLastErrorを使用してください。

備考

通信インターフェースがDCB構造体のfAbortOnErrorメンバー変数をTRUEに設定する場合、
通信エラーが発生すると、通信ドライバは通信インターフェイスでのすべての読み取りおよび書き込み操作を終了します。
アプリケーションソフトウェアがClearCommError関数を使用して通信エラーを処理するまで、新しい読み取りまたは書き込み操作は受け入れられません。
ClearCommErrorは、hFileパラメーターが指す通信デバイスの現在の状態とlpStatパラメーターが実行する状態バッファーを埋めます。

COMSTAT構造

通信デバイスに関する情報が含まれています。この構造体にはClearCommError関数が入力されています

typedef struct _COMSTAT { DWORD fCtsHold :1 DWORD fDsrHold :1 DWORD fRlsdHold :1 DWORD fXoffHold :1 DWORD fXoffSent :1 DWORD fEof :1 DWORD fTxim :1 DWORD fReserved :25 DWORD cbInQue DWORD cbOutQue } COMSTAT, *LPCOMSTAT

メンバー変数

fCtsHold

このメンバーがTRUEの場合、送信はCTS(送信可)信号が送信されるのを待機しています。

fDsrHold

このメンバーがTRUEの場合、送信はDSR(データセット対応)信号が送信されるのを待機しています。

fRlsdHold

このメンバーがTRUEの場合、送信はRLSD(受信ライン信号検出)信号が送信されるのを待機しています。

fXoffHold

このメンバーがTRUEの場合、XOFF文字を受信したため、送信は待機中です。

fXoffSent

このメンバーがTRUEの場合、XOFF文字が送信されたため、送信は待機中です。 (XOFF文字が、実際の文字に関係なく、次の文字をXONとして受け取るシステムに送信されると、送信は停止します。)

fEof

このメンバーがTRUEの場合、ファイルの終わり(EOF)文字が受信されています。

フィクシキ

このメンバーがTRUEの場合、TransmitCommChar関数を介して通信デバイスに送信のためにキューに入れられた文字があります。通信デバイスは、そのような文字をデバイスの出力バッファ内の他の文字よりも先に送信します。

f予約済み

予約済みは使用しないでください。

cbInQue

シリアルポート受信バッファのバイト数。ReadFile操作でまだ読み取られていません。

cbOutQue

すべての書き込み操作で送信される残りのユーザーデータのバイト数。重複しない書き込みの場合、この値はゼロになります。