6

私は現在、FindFirstFile、FindNextFile APIを使用して、指定された基準に基づいてファイルを検索するためにディレクトリを再帰的に反復しています。「dir/s」コマンドの方がプログラムよりもパフォーマンスが良いことに気づきました。プロセスモニターでイベントをチェックしてみましたが、cmd.exe/dirコマンドがディスクデバイスドライバーに直接クエリを実行しているようです。DeviceIOControl()と同様のことを実現する方法はありますか?プログラミングは初めてではありませんが、デバイスドライバは初めてです。参照用のprocmon出力の添付:

代替テキスト

よろしく、

4

5 に答える 5

3

とを使用FindFirstFileFindNextFileます。これがAPIであり、DeviceIOControl直接使用することは混乱しているか不可能です(正確にはわかりません)。

あなたは試しましたかFindFirstFileEx、それはFIND_FIRST_EX_LARGE_FETCH旗とFindExInfoBasic情報レベルですか?

于 2010-08-30T20:11:14.467 に答える
2

「dir/s」はFindFirst/Nextを使用しています。ファイルを列挙するための特別な魔法はありません。

QueryDirectoryは、Procmonがファイルシステムからデータを取得するためにFindFirst/Nextが行うことを公開する方法のようです。

于 2010-08-30T20:21:54.900 に答える
1

ZwQueryDirectoryFileを直接呼び出すことができます。さらにドライバーレベルに進むには、大量のIRPを送信する必要があり、おそらくやり過ぎでしょう。

于 2010-08-30T20:12:19.817 に答える
1

http://ntfs-search.sourceforge.net/

それはうまくいきます。そしてより速く。
ボリュームを開き、直接解析します。

ただし、NTFSでのみ機能します。

于 2010-08-30T23:09:21.947 に答える
1

アプリのプロファイルを作成してください。ボトルネックは他の場所にある可能性があります。これらのオプションのいくつかは、ハエを撃つためにショットガンを取り出すようなものです...

-スコット

于 2010-09-02T15:41:42.137 に答える