Ik heb een programmaatje dat ik uit een bestand wil laten lezen en het moet er daarna ook weer iets in schrijven. Daartoe gebruik ik:
Het rare wil nu dat ik dit onder WinXP prima aan de praat krijg, maar op een Win2000 computer (in een netwerk) niet. Daar is GetLastError namelijk altijd 0, ookal bestaat de file overduidelijk wel. Ik heb MSDN al nageplozen over CreateFile, maar ik doe het toch echt goed (getuige de correct werking onder XP). Maar onder Win2000 gaat dat dus niet. Deze Win2000 pc staat in een netwerk met wat beveiliging, maar dat zou niets uit moeten maken denk ik. Ik heb geprobeerd om OPEN_EXISTING ipv OPEN_ALWAYS te doen in de CreateFile, en dan wordt de file gewoon correct geopend. Ik snap er dus niet veel van. Iemand een idee?
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| DWORD read; char *buf = (char *) calloc( 25, sizeof(char) ); HANDLE hFile = CreateFile( FILENAME, GENERIC_WRITE | GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); if( hFile == INVALID_HANDLE_VALUE ) { ExitProcess( 1 ); } //probleem: GetLastError() is altijd 0 en nooit ERROR_ALREADY_EXISTS if( GetLastError() == ERROR_ALREADY_EXISTS ) { ReadFile(hFile, buf, 24, &read, NULL); //doe wat met buf } else { //er staat nog niets in file, doe wat met buf } SetFilePointer(hFile, 0, NULL, FILE_BEGIN); WriteFile(hFile, buf, 24, &read, NULL); CloseHandle( hFile ); |
Het rare wil nu dat ik dit onder WinXP prima aan de praat krijg, maar op een Win2000 computer (in een netwerk) niet. Daar is GetLastError namelijk altijd 0, ookal bestaat de file overduidelijk wel. Ik heb MSDN al nageplozen over CreateFile, maar ik doe het toch echt goed (getuige de correct werking onder XP). Maar onder Win2000 gaat dat dus niet. Deze Win2000 pc staat in een netwerk met wat beveiliging, maar dat zou niets uit moeten maken denk ik. Ik heb geprobeerd om OPEN_EXISTING ipv OPEN_ALWAYS te doen in de CreateFile, en dan wordt de file gewoon correct geopend. Ik snap er dus niet veel van. Iemand een idee?