次の方法で共有


通信リソースの設定の変更

CreateFile 関数がシリアル通信リソースへのハンドルを開くと、システムはリソースを初期化し、リソースが前回開かれたときに設定された値に従ってリソースを構成します。 前の設定を保持すると、デバイスが再度開かれたときに、mode コマンドを通じて指定された設定を保持できます。 前の開く操作から継承された値には、デバイス制御ブロック (DCB 構造) の構成設定と、I/O 操作で使用されるタイムアウト値が含まれています。 デバイスが開かれていない場合、システムの既定値で構成されます。

シリアル通信リソースの初期構成を決定するため、プロセスは GetCommState 関数を呼び出します。この関数は、シリアル ポート DCB 構造に現在の構成設定を入力します。 この構成を変更するため、プロセスは SetCommState 関数の呼び出しで DCB 構造を指定します。

DCB 構造のメンバーは、ボー レート、バイトあたりのデータ ビット数、バイトあたりのストップ ビット数などの構成設定を指定します。 他の DCB メンバーは特殊文字を指定し、パリティ チェックおよびフロー制御を有効にします。 これらの構成設定の一部のみを変更する必要があるプロセスでは、まず GetCommState を呼び出し、DCB 構造に現在の構成を入力する必要があります。 その後、プロセスは、SetCommState を呼び出して、変更された DCB 構造を指定することにより、DCB 構造の重要な値を調整し、デバイスを再構成することができます。 この手順により、DCB 構造の変更されていないメンバーに適切な値が含まれていることが保証されます。 たとえば、一般的なエラーとして、構造の XonChar メンバーが XoffChar メンバーと等しい DCB 構造を持つデバイスを構成することがあります。

BuildCommDCB 関数は、DCB 構造を変更する別の方法を提供します。 BuildCommDCB では、mode コマンドのコマンド ライン引数と同じ形式の文字列を使用し、ボー レート、パリティ スキーム、ストップ ビット数、データ ビット数を指定します。 DCB の残りのメンバーは、この関数によって変更されません。ただし、該当するメンバーが、XON/XOFF およびハードウェア フロー制御を無効にするように設定されています。 BuildCommDCB では、DCB 構造のみ変更されます。デバイスは再構成されません。

プロセスでは、GetCommProperties 関数を使用して、サポートされている構成設定に関する情報をデバイス ドライバーから取得することにより、通信リソースを再構成できます。 このプロセスでは、この情報を使用して、サポートされていない構成の指定を回避することができます。

SetCommState 関数は通信リソースを再構成しますが、指定されたドライバーの内部出力および入力バッファーには影響を与えません。 バッファーはフラッシュされず、保留中の読み取りおよび書き込み操作は途中で終了しません。

プロセスは、次のタスクを実行する SetupComm 関数を使用することにより通信リソースを再初期化します。

  • 保留中の読み取りおよび書き込み操作は、完了していない場合でも終了します。
  • 未読文字を破棄し、指定されたリソースに関連付けられているドライバーの内部および入力バッファーを解放します。
  • 内部出力および入力バッファーを再割り当てします。

SetupComm を呼び出すプロセスは必要ありません。 そうでない場合、リソースのドライバーは、通信リソース ハンドルが初めて使用されるときに、デバイスを既定の設定で初期化します。