Datei erzeugen und daten schreiben mit WriteFile
-
Hallo zusammen,
ich habe ein Programm geschrieben das mir eine Datei erzeugt und Daten rein schreiben soll.
Das erzeugen der Datei Funktioniert, jedoch das Schreiben nicht.
hier ist der Code:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { char Buffer[]="hello"; LPDWORD lpNumberOfBytesWritten; // TODO: Place code here. HANDLE hFile= CreateFile( TEXT("test.txt"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (!hFile) printf("Fehler beim erzeugen der Datei"); if(!WriteFile( hFile, (LPCVOID) Buffer[0], 5, lpNumberOfBytesWritten, NULL )) { printf("Fehler beim schreiben in die Datei"); } if(!CloseHandle(hFile)) { printf("Fehler beim schließen der Datei"); } Sleep(1000); return 0; }WriteFile gibt 0 zurück also Fehler, wer weis wie ich es richtig mache.
Gruß
spacehelix
-
If the function fails, the return value is zero. To get extended error information, call GetLastError.
-
LPDWORD lpNumberOfBytesWritten = new DWORD;
-
Mit GetLastError(), habe ich es versucht, doch leider ist dann mein Programm beim debuggen abgeschmiert.
-
LPDWORD lpNumberOfBytesWritten=new DWORD;
hilft auch nicht.
Gruß
spacehelix
-
Jetzt Funktioniert es,
hier ist der Code zur Info wie es geht:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { char Buffer[]="hello"; LPDWORD lpNumberOfBytesWritten=new DWORD; HANDLE hFile=0; // TODO: Place code here. hFile= CreateFile( TEXT("\\ffsdisk/test.txt"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (!hFile) printf("Fehler beim erzeugen der Datei"); if(!WriteFile( hFile, (LPCVOID) Buffer, 5, lpNumberOfBytesWritten, NULL )) { printf("Fehler beim schreiben in die Datei"); } if(!CloseHandle(hFile)) { printf("Fehler beim schließen der Datei"); } Sleep(1000); return 0; }Es darf nicht "(LPCVOID) Buffer[0]", sondern muss "(LPCVOID) Buffer" heißen.
danke für eure hilfe
-
Versuch mal:
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { char szBuffer[] = "hello"; DWORD dwNumberOfBytesWritten; // TODO: Place code here. HANDLE hFile= CreateFile( TEXT("test.txt"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (!hFile) printf("Fehler beim erzeugen der Datei"); if(!WriteFile( hFile, szBuffer, 5, &dwNumberOfBytesWritten, NULL )) { printf("Fehler beim schreiben in die Datei"); } if(!CloseHandle(hFile)) { printf("Fehler beim schließen der Datei"); } Sleep(1000); return 0; }
-
normalerweise macht man aber
DWORD numberOfBytesWritten;
und dann bei WriteFile &numberOfBytesWritten

-
der normalo schrieb:
normalerweise macht man aber
DWORD numberOfBytesWritten;
und dann bei WriteFile &numberOfBytesWritten

Jupp, eben
.
-
Oh man bin ich dumm.
Ich werde mich nochmal mit den Grundlagen beschäftigen bevor ich mit Winapi weitermache.Gruß
spacehelix