2012-02-07 77 views
0

我正在使用WriteFile写入文件。这工作正常。它只是一个简单的字符串:无法从我刚刚写入的文件中读取ReadFile

“测试字符串,测试窗口功能”。

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

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

但它对我来说是虚假的。 hFile是写入文件时使用的句柄。可以对可能发生的事情有任何想法?

编辑(从评论更新):

我从GetLastError()越来越E_ACCESSDENIED。下面是我如何得到hFile

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

你能张贴初始化'hFile'的代码? 'ReadFile()'失败后'GetLastError()'返回什么? – hmjd 2012-02-07 16:30:05

+1

检查'GetLastError()',请显示如何获取'hFile'。 – 2012-02-07 16:30:57

+1

您是否寻求回到文件的开头? – 2012-02-07 16:33:02

回答

1

hFile已经开通仅GENERIC_WRITE。它需要与GENERIC_READ被打开,如果你想从中读取以及写入到它:

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

干杯。尽管如此,我遇到了更多的问题。 buff充满了威尼斯人的经验。我从来没有遇到LPVOID之前,所以我不知道它是否有什么或什么。基本上我有上面的字符串,我想通过一个buff来测试字符串和什么im从文件读取是相同的。有没有办法做到这一点? – discodowney 2012-02-07 16:53:40

+0

你在你的例子中赋予了buff []它的未初始化,看看@ http://msdn.microsoft.com/en-us/library/windows/desktop/bb540534(v=vs.85).aspx – 2012-02-07 16:58:04

+0

@ user1100102,我会问另一个问题。它会得到更多的关注,并且更容易回应试图在评论中解决它的问题。 – hmjd 2012-02-07 16:59:24