我正在构建一个驱动程序,我想读取一些文件。有什么方法可以使用“ZwReadFile()”或类似的函数逐行读取文件的内容,以便我可以循环处理它们。
MSDN 中的文档指出:- ZwReadFile 开始从给定的 ByteOffset 或当前文件位置读取到给定的 Buffer 中。它在以下条件之一终止读取操作:
- 缓冲区已满,因为已读取 Length 参数指定的字节数。因此,在没有溢出的情况下,不能再将数据放入缓冲区。
- 在读取操作期间到达文件末尾,因此文件中没有更多数据要传输到缓冲区中。
谢谢。
我正在构建一个驱动程序,我想读取一些文件。有什么方法可以使用“ZwReadFile()”或类似的函数逐行读取文件的内容,以便我可以循环处理它们。
MSDN 中的文档指出:- ZwReadFile 开始从给定的 ByteOffset 或当前文件位置读取到给定的 Buffer 中。它在以下条件之一终止读取操作:
谢谢。
不,那里没有。您必须创建一个包装器来实现您想要的。
然而,考虑到内核模式代码有可能使系统崩溃而不是它运行的进程,你必须确保诸如从用户模式知道的那些很长的行等问题不会引起问题。
如果数据量(并将保持)低于注册表值可以保存的阈值,则应改为使用该值。特别REG_MULTI_SZ
是具有您正在寻找的属性(“逐行”数据存储)。
在这种情况下,除非性能很关键(例如“实时”),否则我会将过滤传递给用户模式服务或应用程序。将文件名发送给应用程序进行处理。用户模式应用程序更容易测试和调试。它也不会蓝屏或挂起你的盒子。