本文作者:邱朋飞
在用ZwReadFile内核函数读取文件时,读取出的一直是乱码,这里记录一下我的代码中的问题。
原因:之前没有使用过ZwReadFile函数,所以用的时候是参考网上的代码写的,但是有些代码将该函数的倒数第二个参数ByteOffset设置成了NULL,该参数是要读取的偏移位置,也就是从这个位置开始读,如果设置为NULL的话,ZwReadFile可能不知道从哪个地方开始读文件中的内容,所以读出来的可能就是乱码了。
解决方法:
参考微软对ZwReadFile函数中的ByteOffset的介绍,我们可以定义一个变量LARGE_INTEGER ,假如定义的变量为ByteOffset,然后我们将其设置为0,ByteOffset.QuadPart = 0,然后将ByteOffset作为参数传递给ZwReadFile函数,ZwReadFile函数就会从头开始读文件了。
以下是微软对ZwReadFile函数的介绍的页面:
对ByteOffset的介绍如下:
ByteOffset
Pointer to a variable that specifies the starting byte offse