私のUSBドライブに直接データを書き込むためのC++ WinAPIプログラムは、ボリューム数{GUID}とWriteFile
によって、CreateFile
で直接実行されます。備考にhereを述べたように:ボリューム外のセクタへのUSBドライブWriteFile
ボリュームが マウントされたファイルシステムを持っていない場合、ボリュームハンドル上の書き込みが成功するか、次の条件のいずれかに該当する場合:
- 部門書き込まれるのはブートセクタです。
- ファイルシステムスペースの外部に存在するように書き込まれるセクタ。
FSCTL_LOCK_VOLUME
またはFSCTL_DISMOUNT_VOLUME
を使用して、ボリュームを明示的にロックまたは解除しました。- ボリュームには実際のファイルシステムはありません。 (言い換えれば、それはRAWファイルシステムがマウントされている。)
私はアンマウントせずにスムーズにUSB上のデータの100Mbのを書きたいと思います。だから私は上記の2つのケースを試しました。
- 秒ケース:ファイルシステムの外を書く(私はFAT32テーブルを延長せずにパーティションあたりのセクタ数を拡張しました)、それはアンマウントせずに動作しません!
- 4番目のケース:ファイルシステムを使用しないでボリュームに書き込む(フォーマットされていない)。しかし、アンマウントしなければ動作しません!
また、私はファイルシステムの有無にかかわらず、第2パーティション(Windowsでは見えません)を作成しようとしましたが、最初のパーティションの終わりからのオフセットによって直接そこに書き込もうとしましたが、またはそこに書き込む。
だから、誰もが少なくとも質問の中への答えを知っている場合:
- どのように私は ファイルシステム外パーティション内のセクタを作成することができますか?
- USBにスムーズに書き込む機能はありますか?
- ドライバ、NTCreateFile、その他の深い機能を持たずに、USB上の2番目のパーティションにWindowsで書き込むこともできますか?
これはマルウェアにのみ該当する可能性があります。 –
@DavidHeffernanいいえ、それは学問目的のためだけです:)私はちょうどUSBとFAT32形式に分割し、msdnの発言が正しいかどうかをチェックしようとしました。 – heyjohnnyfunt