次の方法で共有


読み取り操作と書き込み操作

Windows では、シリアル通信リソースに対する同期および非同期 (重複) ファイル I/O 操作の両方がサポートされています。 操作が重複すると、呼び出し元のスレッドは、操作がバックグラウンドで実行されている間に他のタスクを実行できます。 スレッドは、ReadFile または ReadFileEx 関数を使用して通信リソースから読み取りを行い、WriteFile または WriteFileEx関数をして通信リソースに書き込みます。 ReadFile と writeFile は、同期的または非同期的に実行できます。 ReadFileEx と WriteFileEx は非同期でのみ実行できます。

これらの読み取りおよび書き込み関数の動作は、関数が重複する操作として実行されるかどうか、タイムアウト パラメーターがハンドルに関連付けられているかどうか、およびフロー制御パラメーターがハンドルに関連付けられているかどうかによって影響を受けます。

スレッドは、TransmitCommChar 関数を使用して通信リソースに書き込むこともできます。この関数は、指定した文字を出力バッファー内の保留中のデータの前に送信します。 この機能は、優先度の高い信号文字を受信システムに送信する場合に便利です。 優先度の高い文字の送信は、フロー制御と書き込みタイムアウトの影響を受け、操作は同期的に実行されます。

スレッドは、PurgeComm 関数を使用して、デバイスの出力バッファーまたは入力バッファー内のすべての文字を破棄できます。 PurgeComm は、操作が完了していない場合でも、保留中の読み取りまたは書き込み操作を終了することもできます。 スレッド PurgeComm を使用して出力バッファーをフラッシュする場合、削除された文字は送信されません。 内容が確実に送信されるように出力バッファーを空にするには、スレッドは FlushFileBuffers 関数 (同期操作) を呼び出すことができます。 ただし、FlushFileBuffers はフロー制御の対象ですが、書き込みタイムアウトは行われず、保留中のすべての書き込み操作が送信されるまで戻りません。