[C] CreateFile OPEN_ALWAYS doet raar

Pagina: 1
Acties:

  • SWfreak
  • Registratie: Juni 2001
  • Niet online
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:
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?

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Is volgens de docs idd incorrect gedrag, maar heb je al gechecked of het op local filesystem ook foutgaat? Via netwerk kan ik me namelijk voorstellen dat dat soort informatie ergens wordt ingeslikt...

Professionele website nodig?


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

www.madwizard.org


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Hmmm wazige shit ik heb gegoogled op "error_already_exists open_always" en kwam geen artikelen uit de KB tegen... :?

Professionele website nodig?


  • madwizard
  • Registratie: Juli 2002
  • Laatst online: 26-10-2024

madwizard

Missionary to the word of ska

Google groups heeft meestal meer effect :) : zoeken op "ERROR_ALREADY_EXISTS OPEN_ALWAYS network", enige hit openen, KB link in de 3e reply.

[ Voor 6% gewijzigd door madwizard op 08-04-2003 21:40 ]

www.madwizard.org


  • SWfreak
  • Registratie: Juni 2001
  • Niet online
Ok, dat is dat weer lekker wazig. Wel grappig dat t een bug in het OS is. Maar goed, ik kan het nu fixen.
En voortaan behalve Google ook Google groups gebruiken dus :)
Pagina: 1