我正在使用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 );
答案 0 :(得分:1)
您正在使用标记FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET
,它告诉您在读取文件后不会更新当前文件位置(通常会发生这种情况)。
如果设置了此标志,则offset
参数建议在文件中按offset
从指定位置读取。
因此,在您的情况下,您已指定offset=0
和length=1024
,它正确地读取 - 1 to 1024
- 来自文件的1KB字节。如果在不更改offset
参数的情况下再次进行相同的调用,它将读取相同的1KB字节。
来自FltReadFile的文档查看 ByteOffset 参数文档。
ByteOffset [in,optional]指向调用者分配的变量的指针 指定读取文件中的起始字节偏移量 操作即将开始。
如果提供了此偏移量,或者在此处指定了FLTFL_IO_OPERATION_DO_NOT_UPDATE_BYTE_OFFSET标志 Flags参数,FltReadFile不更新文件对象 CurrentByteOffset字段。