2017-10-20 9 views
0

libusbライブラリのサンプルファイルxusb.cを使用して、フラッシュドライブと通信し、test_mass_storage関数のread(10)のコマンドディスクリプタブロックを変更し、論理ブロックを設定するためにバイト2-5を設定しますアドレスパラメータ。ディスクのセクタ/ブロックアドレス1を返すxusb.cのサンプルコードを使用して、libusbの論理ブロックアドレスのオフセットを検出しますか?

cdb[2] = 0x00; 
cdb[3] = 0x00; 
cdb[4] = 0x00; 
cdb[5] = 0x61; 

は、0x62はセクター2、など私が見つけることができるドキュメントの何もないです。しかし、私は、返されたセクタ/ブロックアドレスで奇妙な結果を得ています0x60または96のオフセットが必要であることを示唆しています。このデバイス固有、コード内のエラー、または仕様内の何か?

read(10) structure

+0

ほとんどのUSBブロックデバイスには、パーティションテーブルが含まれています。最初のパーティションのオフセットとして0x60ブロックがあるとします。 –

+0

それは意味があります、ありがとうございます。したがって、ソフトウェアを変更して再フォーマットすると、最初のパーティションのオフセットが変更される可能性があります。 –

+0

ほとんどのツールは、書式設定時にはパーティション分割を変更しませんが、YMMVは変更しません。 –

答えて

0

今、私はFAT32ファイルシステムに踏み込んだことを、問題が明らかになりました。私はxusb.c出力との比較の方法として使っていたHxDを使ってドライブを論理ディスクとしてオープンしていました。これにより、物理ドライブの開始ではなく、ボリュームの先頭でセクタカウントが開始されました。 [物理ディスク]タブでドライブを開くと、問題が解決されました。

関連する問題