2012-12-01 27 views
-1

您好我有如下代碼:WINAPI - 創建文件INVALID_HANDLE_VALUE

LPSTR Bufor; 
DWORD dwRozmiar, dwPrzeczyt; 
HANDLE hPlik; 

LRESULT CALLBACK WndProc (HWND hwnd, UINT msg,WPARAM wParam, LPARAM lParam) 
{ 

hPlik = CreateFile("test.txt", GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); 
if(hPlik == INVALID_HANDLE_VALUE) { 
    MessageBox(NULL, "Cant open a file", "Error1!", MB_ICONEXCLAMATION); 
    PostQuitMessage(0); 
} 



Bufor[ dwRozmiar ] = 0; 
SetWindowText(hwnd, Bufor); 

} 

我也得到INVALID_HANDLE_VALUE?爲什麼? 程序顯示第一個消息框:無法打開文件。

當我撥打GetLastError時,返回值32。

+0

*如果函數失敗,則返回值爲INVALID_HANDLE_VALUE * ***要獲取擴展錯誤信息,請調用GetLastError。*** – chris

+3

嘗試給文件名指定完全限定的路徑,因爲您爲如果找不到文件,調用將會失敗。 – johnathon

+0

特別是如果你是從IDE內部運行這個,很可能是因爲當前目錄不是你所期望的。由於您尚未指定文件的路徑,因此它需要位於進程當前目錄才能成功打開。 –

回答

1

Windows錯誤代碼32是ERROR_SHARING_VIOLATION。這意味着文件已被其他實體使用拒絕進程訪問的共享模式打開。

該另一個實體似乎是你自己的程序。您打開該文件,然後無法關閉它。

你的窗口過程也完全破壞了。現在該退一步,掌握基礎知識。

+0

但是,test.txt沒有在任何地方打開,所以如何解決它? –

+0

顯然是這樣。如何解決它?找出哪個其他實體打開它。這很可能是你自己的程序。我現在回答你的問題了嗎? –

+0

我把這個文件移到了另一臺電腦上,第一次打開後我得到了同樣的錯誤。如果我將FILE_SHARE_READ程序停止工作:/ –