高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先



DV 28 - シリアルフロー制御のバグ

(更新日: 97 年 3 月 14 日)

Q: シリアルドライバを呼び出して XON/XOFF フロー制御をクリアしようとしましたが、フロー制御が解除されません。これはどういうことなのですか。

A: これは、すでに報告されている Apple システムソフトウェアのバグ (ID 1635221) です。File System Manager では、serdClrXOff (csCode = 22) がブロックデバイス "Return Media Icon" (csCode = 22) 呼び出しと間違われないように、_Control にパッチをあてています。これが原因となって、serdClrXOff 呼び出しがシリアルドライバで正常に動作しません。

最も簡単な対処方法は、serdClrXOff を呼び出す前に ioVRefNum をクリアすることです。次のコード例は、このテクニックを具体的に示しています。

OSErr DoClearXOff(short serialOutDrvrRefNum)
{
  CntrlParam pb;

  pb.ioCRefNum = serialOutDrvrRefNum;
  pb.csCode = serdClrXOff;
  pb.ioVRefNum = 0;
  // システムソフトウェアにバグがあるため
  // 上の行が必要。このバグが将来のシステムで
  // フィックスされれば、ioVRefNum をクリアする
  // という対処方法は必要なくなる

  return ( PBControlSync( (ParmBlkPtr) &pb ) );
}



--Quinn "The Eskimo!"
devsupport@apple.com

[ Technical Q&A's : Devices : DV28 ]