READ BUFFER CAPACITY の使い方については、cdrteach や cdm-fix のソースコードなどがこの記事よりもためになります。
READ BUFFER CAPACITY コマンドの CDB は次のとおりです。
BYTE\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
0 | Operation Code = 0x5C | ||||||||||
1 | 予約 | 予約 | BLOCK | ||||||||
2 | 予約 | ||||||||||
3 | 予約 | ||||||||||
4 | 予約 | ||||||||||
5 | 予約 | ||||||||||
6 | 予約 | ||||||||||
7 |
|
||||||||||
8 | |||||||||||
9 | Control |
BLOCK が 0 であれば、容量はバイト単位で得られます。 1 ならば、ブロック単位で得られますが、 こちらをサポートしていないドライブもあります。
Allocation Length には用意したデータバッファの容量をセットします。 12 以上であればきちんと結果が返ってきますが、 それ以下(0を含む)でもエラーにはなりません。
READ BUFFER CAPACITY で得られるデータは、BLOCK が 0 と 1 とで異なります。 BLOCK = 0 では次のとおりです。
BYTE\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
0 |
|
||||||||||
1 | |||||||||||
2 | 予約 | ||||||||||
3 | 予約 | ||||||||||
4 |
|
||||||||||
5 | |||||||||||
6 | |||||||||||
7 | |||||||||||
8 |
|
||||||||||
9 | |||||||||||
10 | |||||||||||
11 |
Length of the Buffer がドライブの持つバッファの全容量
Blank Length of Buffer が未使用量=使用可能な量
です。
BLOCK = 1 は使ったことがありませんので、表だけ載せておきます。
BYTE\bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |||
0 |
|
||||||||||
1 | |||||||||||
2 | 予約 | ||||||||||
3 | 予約 | Block = 1 | |||||||||
4 | 予約 | ||||||||||
5 | 予約 | ||||||||||
6 | 予約 | ||||||||||
7 | 予約 | ||||||||||
8 |
|
||||||||||
9 | |||||||||||
10 | |||||||||||
11 |