問題タブ [usb-mass-storage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - USB OTGマスストレージデバイスのファイル削除
スマートフォンに接続された mp3 プレーヤーがあります。
(以前の質問のデバッグ ログを参照してください: USB OTG ファイルの削除)
奇妙な理由で、Android で利用できる唯一の動作するアプリは OTG Disk Explorer Pro です。ただし、ファイルの削除機能はありません。
あなたは今までにそのような問題を抱えたことがありますか?接続されたストレージ デバイスで適切に動作する Android 用のアプリはありますか?
そうでない場合、ATAPI For Rewritable Media (INF-8070.PDF) に従ってファイル削除を実装する方法を教えてください。
編集:
大丈夫。239 ページの書籍「USB Mass Storage: Designing and Programming Devices and Embedded Hosts」で、FAT16 内のファイルを削除する方法に関する適切な説明を見つけました。
わかった。私のmp3プレーヤーで動作するようにマッサージできるAndroid用のオープンソースプロジェクトまたはファイルマネージャーをお勧めしますか?
c - 大容量記憶装置をファームウェアから Windows に対して読み取り専用にする方法
USB インターフェイスを備えたハードウェアのファームウェアを使用しています。デバイスが USB ポートに接続されている場合、CDC と MSC の 2 つのクラスとして列挙されます。
MSC 部分の場合、デバイスを書き込み保護できるように、デバイスをユーザーが構成できます。そのため、ユーザーは、デバイスが読み取り専用か、読み取り/書き込み機能を持つかを選択できます。
2 つのインターフェイスでデバイスを列挙できる、事前に作成された USB ライブラリを使用しています。私が苦労している部分は、デバイスが読み取り専用であるかのようにファームウェアを動作させる方法です。
マイクロコントローラは STM32L4 シリーズです。ほとんどのコードは、STM32CubeMX ソフトウェアから生成されます。
調査の結果、SCSI Write10 と SCSI Request Sense コマンドを併用すると、MSC が書き込み保護されているかどうかを確認できることがわかりました。現在の実装は次のとおりです。
IsWriteProtected()
デバイスが書き込み保護として構成されている場合に、ゼロ以外の値を正しく返すことをデバッグして確認しました。はSCSI_SenseCode()
循環リストにエラー コードをプッシュしています。Windows は Request Sense SCSI コマンドを送信してエラー コードを取得するはずですが、Windows がこのコマンドを送信していないことをブレークポイントで確認しました。
デバイスを書き込み禁止に構成すると、PC でのディスク ドライブの列挙に非常に長い時間がかかり、ファイル エクスプローラーが非常に長い間ビジー状態になります。列挙の後、ディスク ドライブを開くことができます。ディスクに書き込もうとすると、Windows はディスク I/O が発生し、書き込みが失敗したことを報告します。ディスクが読み取り専用であると Windows が通知することを期待していました。
デバイスを書き込み可能に構成すると、通常のペン ドライブを接続した場合と同様に、ディスク ドライブの列挙に一定の時間がかかります。
- Windows が Request Sense SCSI コマンドを送信しなかったのはなぜですか?
- Write10 コマンドからの書き込み保護が原因で -1 が返されると、ディスク列挙に非常に長い時間がかかるのはなぜですか? 書き込み禁止の有無にかかわらず、ディスクをすばやく列挙する必要があります。
android - Android Studio で転送ファイルと転送写真 (USB MASS ストレージ) を検出するためのインテント フィルター
レシーバーでインテント フィルターを使用しています
BroadcastReceiver クラス
}
私の MainActivity onCreateMethod で
MainActivity にレシーバーを登録する -
このコード ブロードキャストは、ユーザーが USB をモバイルに接続することです。しかし、ユーザーがファイルの転送/写真の転送を無効にしていない場合にのみ、ブロードキャストレシーバーが検出するようにします。充電専用オプションの USB 接続を検出したくありません。どうすればいいですか?