我使用WriteFile写入文件。很好它只是一个简单的字符串:


  “测试字符串,测试Windows函数”。


我正在尝试从文件中读取并与我编写的字符串进行比较,以确保其正常工作。我有:

DWORD dwBytesRead;
char buff[128];
ReadFile(hFile, buff, 128, &dwBytesRead, NULL)


但是它对我来说是错误的。 hFile是我在写入文件时使用的句柄。对可能发生的事情有什么想法吗?

编辑(从评论更新):

我正在从E_ACCESSDENIED获得GetLastError()。这是我得到hFile的方法:

hFile = CreateFile (TEXT(movedFileName.c_str()),
                    GENERIC_WRITE,
                    0,
                    NULL,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    NULL);

最佳答案

hFile仅针对GENERIC_WRITE打开。如果要读取和写入它,则需要使用GENERIC_READ打开它:

hFile = CreateFile (TEXT(movedFileName.c_str()),
                    GENERIC_WRITE | GENERIC_READ,
                    0,
                    NULL,
                    OPEN_EXISTING,
                    FILE_ATTRIBUTE_NORMAL,
                    NULL);

10-08 11:55