ReadFile liest nicht mehr als 668 bytes (998 - ERROR_NOACCESS)



  • Ich möchte eine Textur mit einem sehr simplen Format aus einer Datei lesen.
    Das öffnen dieser Datei mit

    HANDLE f = CreateFile(file, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    

    funktioniert. Dann lese ich 2x4 bytes für die Breite und Höhe aus. Mit

    unsigned char* rgbadata = (unsigned char*)malloc(size.cx * size.cy * 4);
    

    Reserviere ich ein Array für die Texturdaten. Als nächstes lese ich per

    DWORD read;
    ReadFile(f, &rgbadata, size.cx * size.cy * 4, &read, NULL);
    

    die Daten ein. Allerdings wird solange die Anzahl der Bytes die gelesen werden soll über 668 Bytes liegt nichts gelesen und GetLastError gibt 998 (ERROR_NOACCESS) zurück.

    Jemand eine Idee, wieso das so ist und/oder wie ich das umgehen kann?



  • Du sollst einen Zeiger auf Deinen Lese-Puffer im zweiten Parameter übergeben. Du übergibst aber einen Zeiger auf den Zeiger auf den Lese-Puffer. Probiere es mal so:

    DWORD read;
    ReadFile(f, rgbadata, size.cx * size.cy * 4, &read, NULL);
    


  • lol
    Wie ein Zeichen ein ganzes Programm kaputtmacht, und den Programmierer stundenlang suchen und verzweifeln lässt.
    Danke x1000



  • Kann geschlossen werden



  • openglfreak schrieb:

    lol
    Wie ein Zeichen ein ganzes Programm kaputtmacht, und den Programmierer stundenlang suchen und verzweifeln lässt.
    Danke x1000

    Du solltest auf die Warnungen deines Compilers achten!



  • Der Compiler (MinGW-w64 gcc) hat mir keine Warnung ausgegeben



  • openglfreak schrieb:

    Der Compiler (MinGW-w64 gcc) hat mir keine Warnung ausgegeben

    Auch nicht mit -Wall -Wextra ?


Anmelden zum Antworten