CreateFile Problem



  • char buf[1024] = {0};
    
    HANDLE hd = CreateFile("\\\\.\\PhysicalDrive0", GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, NULL);
    bool r = ReadFile (hd ,buf , 512  , 0 , 0 );
    cout<<"R-> " << r << endl;
    
    cout<<buf[0]<<endl ;
    

    Ich hab gelesen das man hier immer in 512 Byte Blöcken lesen muss da ansonsten ReadFile fehlschlägt.

    Immer wenn ich 512 Byte lesen will stürtzt das Programm ab. 😕

    Was mache ich da falsch?



  • Vermutlich machst Du was falsch... auch solltest Du immer Rückgabewerte prüfen...



  • Ich würde es mit FILE_SHARE_READ|FILE_SHARE_WRITE versuchen. Zudem braucht die Anwendung höchstwahrscheinlich erhöhte rechte. Die Richtige Sektorgröße kann man mit DeviceIoControl(...,IOCTL_CDROM_GET_DRIVE_GEOMETRY,..) ermitteln.



  • Benutze mal GetLastError() nach kritischen Funktionen wie CreateFile und ReadFile. Alternativ kannst du in Visual Studio im Watch-Fenster @err und @err,hr eintragen und schrittweise debuggen, was etwas komfortabler ist.


Log in to reply