Einzelnen Beitrag anzeigen

Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 12:05
Hallo zusammen,

ich bastele z.Zt. nebenbei an einer Möglichkeit eine CD-ROM zulesen. Dafür hab ich mich an einer Leseroutine für denm MBR bedient.

Delphi-Quellcode:
var
  nBytesRead ,
  fHandle : Cardinal;
  
  errc : dword;
  vbuffer : array of byte;
begin
  fHandle := CreateFile(PChar('\\.\'+lw), // ...PHYSICALDRIVE0 <--<< first Harddisk ( Primary Master )
                        GENERIC_READ, // ...read only
                        FILE_SHARE_WRITE+FILE_SHARE_WRITE, // ...Wichtig, nicht das es Probleme gibt
                        nil,
                        OPEN_EXISTING, // ...ist klar warum
                        0,
                        0);

  if fHandle = INVALID_HANDLE_VALUE then
  begin
    errc:=GetLastError;
    ShowMessage('CreateFile - Error: Invalid Handle'#13#10'LastErrcode:'+inttostr(errc)+' '+syserrorMessage(errc));
    exit;
  end;
  { secsize ist mit 512 vorbelegt }
  SetLength(vBuffer,secsize);
  if not ReadFile(fHandle,vBuffer[0],secsize,nBytesRead,nil) then .....
Wenn ich diesen code unter XP Prof/Vista home loslasse, dann wird der Zugriff auf C: mit dem Fehler 5 (Zugriff verweigert) belohnt, was ja zu erwarten ist. Das es unter XPProf beim Zugriff auf USB-Sticks eine 5 gibt, aber unter Vista alles problemlos funktioniert schiebe ich mal auf unterschiedliche Zugriffsrechte.

Beim Zugriff auf die CD-ROM (daten sind vorhanden und lesbar!) erhalte ich folgende Ergebnisse:
XPProf
Audio-CD Fehler: 0 GeleseneBytes: 0
Daten-CD Fehler: 0 GeleseneBytes: 512

Vista Home
in beiden Fällen Fehler 87 (ungültiger Parameter)

zum einen frage ich mich warum auf einmal ein "ungültiger Parameter" auftaucht, (und welcher bitte ist es??)

zum anderen, warum werden von einer Daten-CD auch Daten gelesen und von einer Audio-CD nicht?

Habt Ihr eine Erklärung für mich?

Gruß
K-H
  Mit Zitat antworten Zitat