2006年09月27日

SYNCHRONIZE CACHE

SYNCHRONIZE CACHE コマンドは、メディアへの書き込みを終える時に使用します。 メディアへ書き込む時、送ったデータはいったんドライブのバッファメモリに蓄えられ、 ドライブ側がタイミングを計りつつ書き込んでゆくのですが、 SYNCHRONIZE CACHE コマンドを送信すると、バッファ内のデータが無くなるまで 書き込みを行います。また、リードアウトのデータをこちらから送らない場合には、 リードアウトを自動的に作成して書き込んでくれます。 ですから、このコマンドは結構時間がかかることがあります。

SYNCHRONIZE CACHE コマンドの CDB は次のとおりです。

BYTE\bit 7 6 5 4 3 2 1 0
0Operation Code = 0x35
1予約IMMED廃止
2
(MSB)

論理ブロックアドレス
(LSB)
3
4
5
6予約
7
(MSB)
ブロック数
(LSB)
8
9Control

IMMED (Immediate) を 0 に設定すると、このコマンドが完了するまで 帰ってきません。1 に設定すると取り合えず処理が手元に戻るので、 コマンドの終了は CDB の値を確認しつつ行うのですが、 使ったことがありません。

"論理ブロックアドレス" と "ブロック数" は無視されます。

書き込みの最後には、必ずこの SYNCHRONIZE CACHE コマンドを送信するようにしましょう。


書き込みの途中にエラーで終了する場合にも、すぐ終わるのではなくこのコマンドを通しておけば、 ディスクを一応閉じてくれます。でないと、書き込んであるのに書き込んでいない、 あるいはその逆と誤認されるディスクが出来ます。 (RWメディアでそうなった場合には、強制的にフォーマットする アプリケーションを使いましょう。)

posted by 七癖 at 16:34| Comment(0) | TrackBack(0) | Multimedia Commands | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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

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