CreateFile liefert einen ungültigen Handle
-
Hallo brauch dringend Hilfe wenn ich eine Datei mit CreateFile erzeugen will schlägt das immer fehl. Mit getlasterror erhalte ich immer eine 6. Woran liegt das bin schon am verzweifeln deshalb wende ich mich jetzt an Euch.
Bitte helft mir
danke schon mal
-
Bist du sicher, dass du zwischen CreateFile und GetLastError nicht noch versuchst, irgendwas mit dem Handle zu tun?
Zeig mal den Code.
-
CreateFile("C:\\Test\\test.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); int err = GetLastError();danke das Du mir hilfst

-
Kann das ein alter fehlercode sein? Verwende mal
SetLastError(0); CreateFile("C:\\Test\\test.txt", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); int err = GetLastError();Was gibt denn CreateFile zurück? INVALID_HANDLE_VALUE ( == (HANDLE)(void *)-1 )
-
ja INVALID_HANDLE_VALUE bekomme ich zurück (6)
Weis nicht ob der alt ist was macht den setlasterror genau ?
-
Es gibt einen Unterschied zwischen ERROR_INVALID_HANDLE (6) und INVALID_HANDLE_VALUE. Es geht um den Rückgabewert von CreateFile, nicht von GetLastError. GetLastError darfst du nur aufrufen, wenn etwas nicht geklappt hat. Ob CreateFile geklappt hat, erkennst du an dessen Rückgabewert, den dein Code aber gar nicht verwendet. Das ist umso schlimmer, als du ohne diesen Wert ohnehin nicht viel mit der Datei machen kannst.
Also:
HANDLE hWasWeissIch = CreateFile(...
if(INVALID_HANDLE_VALUE == hWasWeissIch) // jetzt erst ist ein Fehler aufgetreten...
-
Als Handle bekomme ich einen 00000x zurück habe ich im debugger gesehen daran habe ich es auch erkannt. Aber stimmt schon das getlasterror nicht hier sinn macht. Was kann ich noch probieren ?
-
SetLastError(0) löscht den letzten error code.
0 ist per definition ein gültiger Wert für ein Handle - sollte aber eigentlich nicht auftreten.
Hm. Bin ich überfragt.
-
ich probier das mal morgen ind er Firma danke dir für deine Hilfe
