UPDATEDマニュアル通りでは設定できない通常、VBやVCから通信ポートを初期化する場合、Win32のSetCommStateをDCB構造体から初期値を与えて初期化すると思われるが、うまい値を設定してあげないと正しく設定することができない。何で?下記はDeviceIoControlからIOCTL_SERIAL_SET(GET)_BAUD_RATEを使って変更する例であるヘッダ部分は、DDKのntddser.hからの抜粋である。そのままファイルをインクルードすると、二重定義エラーがわんさか出てしまうので、必要なところだけを使っている。METHOD_BUFFERED,FILE_ANY_ACCESS)GET_BAUDで同じボーレートが返ってくれば、新しい値でボーレートがセットできたことを意味する。115200/divからの値になることである。11520ボーとなってしまう。11となる値を入力せねばならない。この場合、10472をセットすると、実ボーレートを、おおよそ10472.7ボーとすることができる。sSB.BaudRate;}だからどうするのSetCommStateも内部でIOCTLを呼んでいるわけで、変なボーレートを与えて設定に失敗してしまう原因は、デバイダ値が切り捨てられて処理されるので、値によっては入力ボーレートと実設定ボーレートの差が大きくなってしまい、それが検出されてハネられてしまっているというわけである。115200/(int)(115200/baud)が正しい値になるものを与えてあげれば良いと言うことになる。WinMe/95/98での強引技こいつらは、勝手にディバイダレジスタを触ることができるので、強引に設定値を変えてしまうこともできる。