Q:
私のアプリケーションは、SCSIAction API や IOSCSIUserClient API を使ってスキャナやプリンタなどの SCSI パラレルデバイスとやり取りします。10.2 以前の Mac OS X では、どのバージョンでも問題はなかったのですが、Mac OS X 10.2 では SCSIAction を呼び出すと opWrErr(-49)が発生します。または、IOSCSIDeviceInterface->open を呼び出すと、kIOReturnExclusiveAccess エラー(0xE00002C5 または -536870203)が発生します。なぜうまく行かなくなってしまったのでしょう?
A:
IOSCSIUserClient と SCSIAction は、Mac OS X 10.2 では推奨されていない API です。この 2 つの API は、ユーザが Mac OS X 10.2 に含まれている新しい IOSCSIParallelFamily に対応するように書かれた SCSI HBA ドライバをインストールするまで、以前のリリースと同様に機能し続けることを意図したものです。この 2 つの API は、手違いで動作不可能になっており、Mac OS X 10.2 の最初のソフトウェアアップデート (rr. 3006423 および 3026125) の 1 つでは復元される予定です。それまでは、IOSCSIDeviceInterface に対して open を呼び出すと、kIOReturnExclusiveAccess が戻されます。
SCSIAction は、内部的には同じ関数を呼び出して I/O Kit エラー kIOReturnExclusiveAccess を OSErr opWrErr にマップします。
SCSITaskUserClient が、IOSCSIUserClient と SCSIAction に取って代わる API です。アップルでは、旧版との最大限の互換性を持たせたいと考えているデベロッパの方には、SCSITaskUserClient と SCSIAction/IOSCSIUserClient を使ってデバイスを検出し、その後、この API とやり取りするデバイスを見つけた API を使うことをお勧めします。
[2002 年 9 月 13 日]
|