2011-04-26 9 views
1

私はドライバをビルドしていますが、いくつかのファイルを読んでいます。 "ZwReadFile()"または類似の関数を使用してファイルの内容を 行ごとに読み取ってループで処理できる方法はありますか。カーネルモードでファイルを読む

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

  1. Lengthパラメータで指定されたバイト数が読み取られたため、バッファがいっぱいです。したがって、バッファにオーバーフローなしでデータを追加することはできません。
  2. 読み取り処理中にファイルの終端に達したため、バッファに転送されるデータはファイル内になくなります。

ありがとうございます。

答えて

1

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

しかし、カーネルモードのコードは、実行されるプロセスではなくシステムをクラッシュさせる可能性があるので、非常に長い行などでわかっているusermodeの問題は問題を引き起こさないことを確認する必要があります。

データ量が保持できるレジストリ値のしきい値より低い場合は、その値を使用する必要があります。特にREG_MULTI_SZはあなたが探しているプロパティを持っています(データの "ラインワイズ"ストレージ)。

0

パフォーマンスが重要でない限り(「リアルタイム」のような)、フィルタリングをユーザーモードのサービスまたはアプリケーションに渡します。処理するアプリケーションにファイル名を送信します。ユーザーモードアプリケーションは、テストが容易でデバッグが容易です。それは青い画面がないか、あなたの箱のいずれかをハングアップします。