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.