タイムアウトが発生していない場合でも、要求された文字数よりも少ない文字数で読み取りまたは書き込み操作を完了できる状況は他にもあります。 いくつかの例を次に示します。
- 一部のドライバーでは、特殊文字の使用がサポートされています。これは、受信時点まで読み取られた文字のみで、読み取り操作をすぐに完了します。
- PurgeComm 関数を呼び出して、保留中の読み取りまたは書き込み操作を途中で終了できます。 この関数は、出力バッファーまたは入力バッファーの内容、またはその両方を削除することもできます。
- 読み取り操作または書き込み操作中に通信エラーが発生した場合、通信リソースに対するすべての I/O 操作は終了します。 このようなエラーの例としては、ブレーク条件、パリティ エラー、フレーミング エラーがあります。 エラーが発生した場合、プロセスは、ClearCommError 関数を呼び出してエラー フラグをクリアしてから、追加の I/O 操作を開始する必要があります。 ClearCommError は、発生した特定のエラーとデバイスの現在の状態を報告します。