【发布时间】:2017-10-12 21:13:42
【问题描述】:
我需要读取 txt 文件的每一行并将这一行作为参数传递给方法。
我找到了这个例子:
LARGE_INTEGER byteOffset;
ntstatus = ZwCreateFile(&handle,
GENERIC_READ,
&objAttr, &ioStatusBlock,
NULL,
FILE_ATTRIBUTE_NORMAL,
0,
FILE_OPEN,
FILE_SYNCHRONOUS_IO_NONALERT,
NULL, 0);
if(NT_SUCCESS(ntstatus)) {
byteOffset.LowPart = byteOffset.HighPart = 0;
ntstatus = ZwReadFile(handle, NULL, NULL, NULL, &ioStatusBlock,
buffer, BUFFER_SIZE, &byteOffset, NULL);
if(NT_SUCCESS(ntstatus)) {
buffer[BUFFER_SIZE-1] = '\0';
DbgPrint("%s\n", buffer);
}
ZwClose(handle);
}
但这会读取文件的所有内容,而不是逐行读取。
关于如何做到这一点的一些想法?
【问题讨论】:
-
这是你研究的一个例子。你为这个问题做了什么尝试?
-
@Mani,上面这个例子逐行读取一个txt文件?当然不是,对吧?那怎么办呢?一些代码示例等?
-
这是一个非常简单的编程问题,将缓冲区的内容解析为单独的行。在寻求帮助之前,您至少应该尝试自己解决。
-
如果您遇到了不小的问题,但是tiny 问题,您的代码不应该在内核模式下运行。除此之外,如果您确实在使用 C++,请使用
<iostream>库。你可能不是,所以你需要更新你的标签。 -
无法从文件中只读取一行。在用户模式和内核模式中都是如此。您可以做的是从文件中读取一大块数据,然后将其解析为单独的行。但在这种情况下,您需要自己完成,因为内核中没有运行时库可以为您完成。 (好吧,there is a runtime library,但它没有那种功能。)您是否考虑过让您的驱动程序成为用户模式而不是内核模式?
标签: c++ winapi driver kernel-mode