2012-02-07 85 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