AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi unverständliches Verhalten von ReadFile
Thema durchsuchen
Ansicht
Themen-Optionen

unverständliches Verhalten von ReadFile

Offene Frage von "p80286"
Ein Thema von p80286 · begonnen am 30. Okt 2009 · letzter Beitrag vom 3. Nov 2009
Antwort Antwort
Seite 1 von 2  1 2      
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
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 12:14
Zitat von p80286:
.. aber unter Vista alles problemlos funktioniert schiebe ich mal auf unterschiedliche Zugriffsrechte.
Verwendet deine Exe eine erweiterte Vista-Manifest? Ansonsten wird der Zugriff direkt auf C:\ u.U. virtualisiert.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 12:23
Hallo Bernhard,

ein bitte was??
Aber interressante Idee muß ich im Hinterkopf behalten.
Es geht aber vor allem auf die Zugriffe auf die CD-ROM (ist auf den Rechnern verschieden, E: und F:, darum hatte ich keine Laufwerksbuchstaben angegeben)

Gruß
K-H
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 15:45
eine Audio-CD kann nicht einfach via ReadFile gelesen werden
sonst könnte sich ja jeder ein Audio-/Video-Rippingprogramm schreiben


Zitat:
PHYSICALDRIVE0
CD/DVD-Laufwerke heißen anders (aber ich glaub das sollte wohl beachtet worden sein)

Und CDs/DVDs haben eine andere Sektorgröße.
$2B or not $2B
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 15:52
Was soll denn FILE_SHARE_WRITE+FILE_SHARE_WRITE werden?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 16:06
Ja, das ist für Festplatten wichtig, aber bei CDs sollte es egal sein, die sind ja sowieso nur Read-Only.

PS: auf Festplatten zuzugreifen wird ab Vista schwierig (in XP zwar auch, aber da ist man oftmals ja eh schon ADMIN)

Und, wie gesagt, so geht es eben nur mit der aktuellen "Session" bei Multisessiondatenträgern und mit Daten-CDs/DVDs.
für alles andere muß man sozusagen direkt den IDE-Controler ansprechen
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.201 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 16:14
Zitat von p80286:
ein bitte was??
Meinst du jetzt Vista-Manifest oder virtualisiertes Dateisystem?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 16:20
@ Bernhard
Entschuldige! das Vista-Manifest!
In meiner Vorstellung ist alles was bunt ist und runde Ecken hat ganz viel bäh. Darum bin ich der Meinung das ich so etwas nicht benötige. Oder irre ich da?

Vielen dank für die Antworten!

Zitat von himitsu:
eine Audio-CD kann nicht einfach via ReadFile gelesen werden
sonst könnte sich ja jeder ein Audio-/Video-Rippingprogramm schreiben
ok, das erklärt den Fehler 0 mit 0 gelesenen Bytes!

(mit DOS und ASPI ging das noch *grummel*)

Zitat von himitsu:
Und CDs/DVDs haben eine andere Sektorgröße.
Ja und? wenn ich nur die ersten 512 Bytes lesen will? oder muß die Anzahl der zu lesenden Bytes der Physischen Sektorgröße entsprechen? Wenn Ja dann aber nur unter Vista wo dann der Fehler 87 Ungültiger Parameter gekommen ist.

Ach ja unter Vista hab ich es auch als Admin versucht : immer noch die 87.

Gruß
K-H

P.s. das brauch ich um an den CD-Text zu kommen, warum noch einmal erfassen was es schon gibt.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 16:24
Ich glaube Apollonius wollte darauf hinaus, dass er statt:

FILE_SHARE_WRITE+FILE_SHARE_WRITE wahrscheinlich

FILE_SHARE_READ or FILE_SHARE_WRITE meint/will/braucht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

Re: unverständliches Verhalten von ReadFile

  Alt 30. Okt 2009, 16:32
OK
'll try it!

Gruß
K-H
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz