在内核模式下读取文件

时间:2011-04-26 08:21:32

标签: visual-c++ driver device-driver wdk nt-native-api

我正在构建一个驱动程序,我想阅读一些文件。 有没有办法使用“ZwReadFile()”或类似的功能来阅读 文件的内容逐行,以便我可以循环处理它们。

MSDN中的文档指出: - ZwReadFile开始从给定的ByteOffset或当前文件位置读取到给定的Buffer中。它在以下条件之一下终止读操作:

  1. 缓冲区已满,因为已读取Length参数指定的字节数。因此,没有溢出就不能将更多数据放入缓冲区。
  2. 在读取操作期间到达文件末尾,因此文件中没有更多数据要传输到缓冲区。
  3. 感谢。

2 个答案:

答案 0 :(得分:1)

不,没有。你必须创建一个包装来实现你想要的东西。

但是,鉴于内核模式代码有可能使系统崩溃而不是运行它的进程,您必须确保诸如从具有很长行的usermode等已知的问题不会导致问题。

如果数据量(并且将保持)低于可以容纳的注册表值的阈值,则应该使用该数据量。特别是REG_MULTI_SZ,它具有您正在寻找的属性(“按行”存储数据)。

答案 1 :(得分:0)

在这种情况下,除非性能是关键的(如'实时'),否则我会将过滤传递给用户模式服务或应用程序。将文件名发送到要处理的应用程序。用户模式应用程序更易于测试且更易于调试。它不会出现蓝屏或挂起你的盒子。