1

ドライバーを作成していて、いくつかのファイルを読みたいと思っています。「ZwReadFile()」または同様の関数を使用して、ファイルの内容を 1 行ずつ読み取り、ループで処理できるようにする方法はありますか。

MSDN のドキュメントには、次のように記載されています。- ZwReadFile は、指定された ByteOffset または現在のファイル位置から、指定された Buffer への読み取りを開始します。次のいずれかの条件で読み取り操作を終了します。

  1. Length パラメーターで指定されたバイト数が読み取られたため、バッファーがいっぱいです。したがって、オーバーフローしない限り、これ以上データをバッファに入れることはできません。
  2. 読み取り操作中にファイルの終わりに達したため、ファイルにはバッファに転送するデータがありません。

ありがとう。

4

2 に答える 2

1

いいえ、ありません。必要なものを実現するには、ラッパーを作成する必要があります。

ただし、カーネル モード コードは、実行中のプロセスではなくシステムをクラッシュさせる可能性があるため、非常に長い行を含むユーザー モードで既知の問題などによって問題が発生しないことを確認する必要があります。

データの量が、保持できるレジストリ値のしきい値を下回っている (そして今後も維持される) 場合は、代わりにそれを使用する必要があります。特にREG_MULTI_SZ、探しているプロパティを持っているもの (「行ごとの」データのストレージ)。

于 2011-04-26T11:17:00.793 に答える
0

この状況では、パフォーマンスが重要でない限り (「リアルタイム」など)、フィルタリングをユーザー モード サービスまたはアプリケーションに渡します。ファイル名をアプリケーションに送信して処理します。ユーザー モード アプリケーションは、テストとデバッグが容易です。ブルースクリーンになったり、ボックスがハングしたりすることはありません。

于 2011-06-14T23:33:35.187 に答える