0

ファイルの読み取りに WDK の FltReadFile 関数を使用しています。1kbのファイルしか読めません。1kb以上のファイルを読むには?? ありがとうございました。

offset.QuadPart = bytesRead = 0;
    status = FltReadFile( Instance,
                          FileObject,
                          &offset,
                          length,
                          buffer,
                          FLTFL_IO_OPERATION_NON_CACHED |
                          FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET,
                          &bytesRead,
                          NULL,
                          NULL );
4

1 に答える 1

1

FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSETファイルを読み取った後に現在のファイル位置を更新しないように指示するフラグを使用しています (これは通常発生します)。

このフラグが設定されている場合、offsetパラメーターは、ファイル内の指定された位置から読み取ることを提案しoffsetます。

したがって、あなたの場合、offset=0andを指定しました。ファイルから 1KB バイトをlength=1024正しく読み取っています。1 to 1024パラメータを変更せずに同じ呼び出しを再度行うとoffset、同じ 1KB バイトが読み取られます。

FltReadFileのドキュメントでは、ByteOffsetパラメータのドキュメントを参照してください。

ByteOffset [入力、オプション] 読み取り操作を開始するファイル内の開始バイト オフセットを指定する、呼び出し元が割り当てた変数へのポインター。

このオフセットが指定されている場合、または FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET フラグが Flags パラメータで指定されている場合、FltReadFile はファイル オブジェクトの CurrentByteOffset フィールドを更新しません。

于 2013-04-29T05:04:09.983 に答える