ReadFile() nur mit Heap-Speicher ?



  • Ich will ein File in Speicher einlesen. Das funktioniert wenn ich den Speicher
    vom Heap mit der Funktion HeapAlloc() allokiere. Wenn ich virtuellen Speicher über die Funktion VirtualAlloc() allokiere , liefert die Funktion ReadFil() den Wert 0.



  • Zeig doch mal etwas mehr Code.

    Normalerweise ist es der Funktion ReadFile() egal, woher sie ihren Speicher bekommt - wichtig ist nur, daß du ihr genug Platz zur Verfügung stellst.

    Edit: Übrigens werden Doppel-Postings gar nicht gerne gesehen 😉



  • PointerAllocPuff=VirtualAlloc(NULL,FileInLaenge+5,
    MEM_COMMIT,PAGE_READWRITE);
    if (PointerAllocPuff==0) // kein Speicher am HEAP
    {
    Meldung1->Caption ="Zu wenig virtuellen Speicher";
    goto Fehler;
    }
    FileLesenStatus=ReadFile(InDateiHandle,(char*) PointerAllocPuff,
    FileInLaenge,&AnzahlGelesenenByte,0);
    if (FileLesenStatus==0)
    {
    Meldung1->Caption ="Fehler beim Dateilesen";
    goto Fehler;
    }



  • Das was...



  • Eine Möglichkeit wäre es, den Fehler mit GetLastError() genauer einzugrenzen (falls dir die Fehlernummer nichts sagt - FormatMessage() kann sie dir erklären).

    PS: sfds

    PPS:

    skorpionx schrieb:

    Das was...

    Was soll dieser Beitrag aussagen?



  • Die FehlerMeldung war:
    „Unzulässiger Zugriff auf einen Speicherbereich“

    Nur warum ist dieser Zugriff unzulässig?



  • mea culpa, mea culpa, mea maxima culpa:

    Ich wollte eine Änderung einführen. Die Grösse vom Speicher habe ich dabei falsch
    eingeschätzt...


Log in to reply