0

もともとハードディスクの画像を分析するために考えられていたツールを書きました。現在、このツールをコンピューターシステムのライブ分析に使用しようとしています。つまり、ツールが物理ドライブにアクセスしようとしています。

QFileクラスを使用して画像にアクセスするQTにツールを実装しました。画像の代わりに、物理ドライブを渡します。ウィンドウの下では、\。\PHYSICALDRIVE0です。

私は最初にエラーが発生しなかったのだろうかと思っていました。デバイスを開くことができ、シークして位置を取得することができます。ほとんどすべてです。私が問題を抱えているのは、size()を使用してドライブサイズを取得することだけです。

いくつかのコード例:

QFile file( "\\.\PHYSICALDRIVE0" );
file.open( QIODevice::ReadOnly );

file.size(); //returns 0

私はQTにあまり深くは入っていません。おそらく、これは簡単なことです。その理由を知っている皆さんに感謝します。

前もって感謝します!

4

1 に答える 1

0

QFileInfoあなたを助けることができるかもしれません。Windowsパーティションのその部分で読み取り専用ファイルを開くことは、存在しない場合でも許可されているようです。の呼び出しによりGetLastError()、ファイル サイズ 0 が返された理由についてより多くの情報が得られる可能性があります。

を使用QFileInfoすると、開く前に存在することを確認できます。

物理ドライブを操作できるようにするには、プラットフォーム固有の呼び出しが必要になる場合があります。

物理ドライブへのボリューム

SourceForgeにPartModでパーティションを見るサンプルコードがあるようです。

ファイル フォルダーのサイズをクエリする際の注意点として、オペレーティング システムによってどこかにキャッシュされている必要があるか、多くの場合、クエリ時に計算する必要があると考えていました。Windows でフォルダーのプロパティを見たり、OSX で情報を取得したりすると、そのように見えることがわかります。

また、ボリュームから物理ドライブへの回答を見ると、エクステントの長さのフィールドがあります。これがあなたが探しているものだと思います。

それが役立つことを願っています。

于 2013-02-24T20:17:22.677 に答える