2006年06月13日

返り値とエラーコード

SC_EXEC_SCSI_CMD の実行結果は、戻り値の他に SRB_Status メンバを確認することでも出来ます。その値は戻り値と同じで、

SS_PENDING 0x00 // 送られたコマンドを実行中
SS_COMP 0x01 // 正常終了
SS_ERR 0x04 // コマンド実行がエラーで終了した

などです。
SS_PENDING の場合は、時間がかかるということなので、待ちます。待っている間に別の (ドライブを使用しない) 処理をしておくのも良いでしょう。
SS_COMP は成功なので、次の処理に移ります。
それ以外は、とりあえず全てエラーとみなします。

さらに、より詳細なエラーの内容が SenseArea メンバの次の位置に格納されます。

BYTE SK = cmd.SenseArea[2] & 0x0f; //Sense Key
BYTE ASC = cmd.SenseArea[12]; //Additional Sense Code
BYTE ASCQ = cmd.SenseArea[13]; //Additional Sense Code Qualifier

この (SK, ASC, ASCQ) の組みが、それぞれのコマンド毎にあって、ここでは書ききれないほどの量があります。せんべえ焼きでこれらのエラーが表示された場合には、報告をお願いします。開発途中で発見された場合、MMCの仕様書にある表から探すのですが、pdfの検索が遅くてなかなか大変です。
posted by 七癖 at 17:45| Comment(0) | TrackBack(0) | Multimedia Commands | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は90日以上新しい記事の投稿がないブログに表示されております。