WinAPI ReadFile 在到达 null 时停止

WinAPI ReadFile stops when reaching null

我正在尝试编写一个非常简单的 win32 程序。我使用 CreateFile() 打开一个文件进行读取,然后使用 ReadFile()

读取它的内容
HANDLE hfile=CreatFileW(L"Capturejpg.jpg", GENERIC_READ, 0,
              NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL);
bReadResult=ReadFile(hFile, ReadBuff, BUFFERSIZE-1, &dwBytes, &OL);

例如,当我正在读取 .txt 文件时,这工作得很好,问题是当我正在读取的文件包含 NULL(大多数文件都是这种情况)然后 ReadFile 函数在到达第一个 NULL 时停止读取(或者可能将字节写入 ReadBuff)。 在询问之前我搜索并找到了两个答案。

  1. 使用 char 数组和 char * 以外的东西:为此,我不知道我还能使用什么,因为我的目标是读取文件并搜索文件扩展名(例如,如果它是 .gif,则前 3 个字符为 "Gif")
  2. 更改DCB:这个的问题是我不知道DCB到底是什么,如何更改它,以及更改其中的内容。

编辑: 其他有相同问题的帖子:this one and this one

ReadFile 一点也不关心它读取的内容。它会非常愉快地读取零字节并继续读取文件中的那个点之后。做不到这一点也没用。

您刚刚误诊了问题。你读入了一个字符数组 ReadBuffer 然后像这样打印:

printf("%s", ReadBuffer);

现在,printf确实会在到达零字节时停止。您将需要找到一些其他方式来输出此文件的内容。