AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CD Extra

Ein Thema von Garfield · begonnen am 17. Apr 2006 · letzter Beitrag vom 24. Nov 2006
Antwort Antwort
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

CD Extra

  Alt 17. Apr 2006, 13:05
In der Library gibt es den Artikel "Prüfen ob sich eine Audio-CD im Laufwerk befindet". Die Function funktioniert nur mit CD-DA (Red Book).

Neben den CD-DA gibt es die CD-DA Extra (Blue Book). Dort sind Audiotracks und "computerlesbare" Daten in zwei Sessions enthalten. Siehe IsoBuster-Bild.

Wie kann man auf beide Sessions zugreifen? Mit meinem Testprojekt kann ich nur auf die Datensession zugreifen.
Miniaturansicht angehängter Grafiken
cdextra_524.png   projekt1_233.png  
Angehängte Dateien
Dateityp: 7z cdda_640.7z (3,9 KB, 48x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#2

Re: CD Extra

  Alt 17. Apr 2006, 13:44
Hmm... Ich fürchte, dafür gibt es keinen API - Befehl. Vllt. versuchst du, die TOC der Disc auszulesen. Nichts anderes macht ISO-Buster.

Sollte es doch einen Befehl geben, büdde korrigieren.
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#3

Re: CD Extra

  Alt 17. Apr 2006, 14:48
Zitat von Garfield:
IDie Function funktioniert nur mit CD-DA (Red Book).
Nein. Die funktion überprüft, ob Dateien mit der Dateiendung "cda" im Root-Verzeichnis des angegebenen Laufwerks liegen. Mehr nicht. Eine RedBook-Verifikation findet nicht statt. Ich kann dir auch eine Diskette mit einer cda-Datei drauf zusenden. In einem CD-Player wirst du die dennoch nicht abspielen können.

Zitat von Garfield:
Wie kann man auf beide Sessions zugreifen? Mit meinem Testprojekt kann ich nur auf die Datensession zugreifen.
Highlevel gar nicht. Das tolle daran ist ja, daß Windows das Dateisystem auf der CD erkennt. Mit der Highlevel Filesystem API wirst du da nicht weit kommen. Wie Daniel G schon richtig sagte, wirst du die Informationen der CD selber auslesen und interpretieren müssen. ASPI wäre da mal ein Suchwort
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#4

Re: CD Extra

  Alt 17. Apr 2006, 15:27
Zitat von Daniel G:
Hmm... Ich fürchte, dafür gibt es keinen API - Befehl. Vllt. versuchst du, die TOC der Disc auszulesen. Nichts anderes macht ISO-Buster.
Ich benutze in anderen Projekten bereits die Units AspiCD und SptiCD aus dem Projekt cddbcomp. Da gibt es auch was zur TOC. Vielleicht lässt sich da was machen.
___

@ Frickeldrecktuxer_TM

Leicht gereizt?

Zitat von Frickeldrecktuxer_TM:
Zitat von Garfield:
IDie Function funktioniert nur mit CD-DA (Red Book).
Nein. Die funktion überprüft, ob Dateien mit der Dateiendung "cda" im Root-Verzeichnis des angegebenen Laufwerks liegen. Mehr nicht. Eine RedBook-Verifikation findet nicht statt. Ich kann dir auch eine Diskette mit einer cda-Datei drauf zusenden. In einem CD-Player wirst du die dennoch nicht abspielen können.
Wie bekomme ich nur die Diskette in das CD/DVD-Laufwerk?

Spass beiseite: Ob eine Red Book Überprüfung vorgenommen wird oder nicht, ist unerheblich. Fakt ist, dass diese Überprüfung bei Red Book funktioniert und bei Blue Book nicht. Der Standalone-CD-Player spielt den Audioteil im übrigen klaglos ab.

Zitat von Frickeldrecktuxer_TM:
Zitat von Garfield:
Wie kann man auf beide Sessions zugreifen? Mit meinem Testprojekt kann ich nur auf die Datensession zugreifen.
Highlevel gar nicht. Das tolle daran ist ja, daß Windows das Dateisystem auf der CD erkennt. Mit der Highlevel Filesystem API wirst du da nicht weit kommen. Wie Daniel G schon richtig sagte, wirst du die Informationen der CD selber auslesen und interpretieren müssen. ASPI wäre da mal ein Suchwort
Jo. Aspi und Spti. Darüber findet man nur so umheimlich viel.
____

Vielen Dank Euch beiden. Da werde ich noch einiges im Internet wälzen müssen. Wenn ich was finde, werde ich berichten.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#5

Re: CD Extra

  Alt 17. Apr 2006, 16:06
Zitat von Garfield:
Leicht gereizt?
Nö, wieso?

Zitat von Garfield:
Wie bekomme nur die Diskette in das CD/DVD-Laufwerk?

Die Funktion von Daniel B, die du verlinkt hast, hat ja nicht das geringste mit CD zu tun, das ist ja der Witz an der Sache
Es ist nur eine Überprüfung, ob bestimmte Dateien auf einem bestimmten Volume zu finden sind. Diese Datei kann auch das letzte Urlaubsfoto sein, das jemand nach foto.cda umbenannt hat, und das Volume kann auch eine Diskette sein. Oder sogar ein Netzlaufwerk.

Zitat von Garfield:
Der Standalone-CD-Player spielt den Audioteil im übrigen klaglos ab.
Jupp, der kriegt von der Daten-Session nichts mit. Die Audio-Session ist die erste, der Audioplayer guckt auf die CD, sieht, daß da 'ne Audio-Session ist und spielt die ab. Für die zweite und alle weiteren Sessions interessiert er sich nicht die Bohne. Umgekehrt beim CD-ROM-Laufwerk des PCs. Der liest (normalerweise) die letzte Session aus, die er findet, das ist eine Datensession, und Windows "sieht" nur die Daten. Wenn Windows in irgendeinem Eigenschaften-Menü zusätzlich angibt, daß es sich um eine CDextra handelt, und nicht um eine reine CDDA, ist das nur ein Service von Windows, das vorher selbst noch auf der CD rumgestöbert hat, was es denn sonst noch so für Sessions findet.

Zitat von Garfield:
Aspi und Spti. Darüber findet man nur so umheimlich viel.
Ist doch schön. In letzter Zeit finde ich zu meinen Problemen leider viel zu wenig, wenn ich suche...
Hier berichtet einer von einer "ASPI Library for Delphi", keine Ahnung ob das noch aktuell ist. Dort will jemand auch den ASPI-Treiber benutzen und wird zu Torry geschickt. Andernorts will jemand Medientypen erkennen, vielleicht gelingt dir mit der genannten Klasse auch das erkennen des Medienformats. Und hier und dort liest man sogar, daß zum blockweisen Auslesen des Mediums nichtmal der Zugriff über den ASPI-Layer notwendig ist, sondern man das Ganze auch über //./[volume] hinkriegt.

HTH
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#6

Re: CD Extra

  Alt 17. Apr 2006, 20:31
Einiges wissenswertes über das SCSI Passthrough Interface (SPTI) findest du im WinDDK. Das kannst du Online bei

http://www.osronline.com/ddkx/ddk.htm

einsehen.


Hast du die genauen Specs des CD-XA Standards denn zur Hand?
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#7

Re: CD Extra

  Alt 17. Apr 2006, 21:19
Zitat von Frickeldrecktuxer_TM:
Zitat von Garfield:
Leicht gereizt?
Nö, wieso?
Kam irgendwie so rüber.

Zitat von Frickeldrecktuxer_TM:
Es ist nur eine Überprüfung, ob bestimmte Dateien auf einem bestimmten Volume zu finden sind. Diese Datei kann auch das letzte Urlaubsfoto sein, das jemand nach foto.cda umbenannt hat, und das Volume kann auch eine Diskette sein. Oder sogar ein Netzlaufwerk.
Bei einem alternativen CDFS.VXD werden keine CDA sondern gleich WAVE angezeigt.

Zitat von Frickeldrecktuxer_TM:
Wenn Windows in irgendeinem Eigenschaften-Menü zusätzlich angibt, daß es sich um eine CDextra handelt, und nicht um eine reine CDDA, ist das nur ein Service von Windows, das vorher selbst noch auf der CD rumgestöbert hat, was es denn sonst noch so für Sessions findet.
Wenn genügend Dateien auf dem Datenträger sind, wird auch ein Window mit den Dateien, welche gerade gescant werden, angezeigt.

Zitat von Frickeldrecktuxer_TM:
Zitat von Garfield:
Aspi und Spti. Darüber findet man nur so umheimlich viel.
Ist doch schön. In letzter Zeit finde ich zu meinen Problemen leider viel zu wenig, wenn ich suche...
Das Problem ist allerdings, dass das wenigste das ist, was man gebrauchen kann.

Zitat von Frickeldrecktuxer_TM:
Andernorts will jemand Medientypen erkennen, vielleicht gelingt dir mit der genannten Klasse auch das erkennen des Medienformats.
Das ist bereits in meinem Projekt oben enthalten und funktioniert auch soweit ich es beurteilen kann. Leider ist hier noch keine Unterscheidung für CD-DA und CD-DA Extra enthalten. Die Infos dort stammen aus der von Daniel angesprochenen WinDDK.

Zitat von Daniel G:
Einiges wissenswertes über das SCSI Passthrough Interface (SPTI) findest du im WinDDK.
Da habe ich übernächstes Wochenende einiges zu stöbern. Denn nachher muss ich wieder auf Montage fahren.

Zitat von Daniel G:
Hast du die genauen Specs des CD-XA Standards denn zur Hand?
Habe ich nicht. Ich wollte mich auch nicht allzutief einarbeiten, sondern "nur" die Tracks und Videos in einer Liste anzeigen und abspielen können.

In den letzten beiden Tagen habe ich einiges an Material eingesammelt. Vielleicht reicht es, um mein Ziel zu erreichen. Ich verabschiede mich jetzt erst mal bis zum 28. April.

Nachtrag: Da findet man auch eiiniges http://www.dancemammal.com/
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Frickeldrecktuxer_TM
(Gast)

n/a Beiträge
 
#8

Re: CD Extra

  Alt 17. Apr 2006, 21:37
Zitat von Garfield:
Bei einem alternativen CDFS.VXD werden keine CDA sondern gleich WAVE angezeigt.
Mag sein, das Feature kenne ich nicht. Ein weiterer Grund, warum die von dir verlinkte Funktion von vorne bis hinten nicht stimmt ;o)

Bei den Suchergebnissen, die ich dir genannt habe, ist mir ein Fehler unterlaufen. Ich ging davon aus, daß bereits auf ISO9660-Ebene eine Unterscheidung von Sessions möglich ist, dem ist aber nicht so. Ich weiß daher auch nicht, ob der Vorschlag, es über \\.\[volume] zu machen, das gewünschte Ergebnis erzielt, weil ich nicht weiß, ob dabei dennoch nur auf das aktuelle Dateisystem (also die aktuellste Session) zugegriffen wird, oder tatsächlich auf die Rohdaten, die das CD-Laufwerk zur Verfügung stellt. Mein Hinweis auf die ISO-Klasse war damit natürlich auch Mist
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#9

Re: CD Extra

  Alt 29. Apr 2006, 11:28
So, nun bin ich wieder daheim.

Der alternative CDFS-Treiber ist, wie ich gerade gesehen habe, für Win9x. Man kann ihn zum Beispiel bei der PC Welt bekommen.

Ich habe jetzt folgendes ausprobiert:

Freeburner
Der Freeburner enthält auch eine ISO9660-Kopmponente. Allerdings scheint diese nur mit Singlesession klarzukommen. Als ein ISO von der CD mit den beiden Sessions angefertigt werden sollte, blieb er (vermutlich) nach der ersten Session hängen.

CDDB Komponente
Mit der CDDB-Komponente konnte ich die TOC mit SPTI nicht einlesen, was wohl darauf zurückzuführen ist, dass ich eine Personal Edition verwende.

TIsoLib
Aus der TIsoLib habe ich etwas Source herausgenommen. Damit kann man die Anzahl der Sessions und Tracks auslesen, wenn man als Administrator angemeldet ist. (Habe derzeit kein ASPI installiert). Die Datensession ist dabei ein Track. Die Eigenschaften wie Lese- und Schreibgeschwindigkeit habe ich auch kopiert. Die bekomme ich allerdings nur beim virtuellen Laufwerk ausgelesen.

Nachtrag: Auf einem anderen Rechner funktioniert das Auslesen der Lese- und Schreibgeschwindigkeiten.

AKRip
In der API-Dokumentation zu AKRip ist eine Funktion angegeben, mit welcher man den Disctype bestimmen können soll. Dafür ist die AKRip.DLL notwendig, weshalb ich diese nicht nutzen möchte.

Bass/BassCD.Dll
In einer Demo zur Bass.Dll/BassCD.Dll werden die Audiotracks sowie ein Datentrack angezeigt.

Foreneintrag bei derkeiler.com
In dem Thread ist eine Unit, mit welchem sich per SPTI die Anzahl der Tracks bestimmen lässt. Wenn man Administratorrechte besitzt, kann man auch die Trackdaten auslesen. Zuerst kommen die Audiotracks, dann der Datentrack und noch ein Datentrack, welcher vermutlich das LeadOut ist.

Win DDK
Daniels Hinweis zu Win DDK ist gut. Denn es gibt dort eine Beschreibung zum TRACK_MODE_TYPE, welcher YellowMode2, XAForm2 und CDDA sein kann. Diese Richtung müsste die richtige sein.

Nachtrag: Eben bin ich auf diese Seite gestossen.
Angehängte Dateien
Dateityp: 7z exe_205.7z (186,4 KB, 41x aufgerufen)
Dateityp: 7z source_118.7z (19,9 KB, 43x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#10

Re: CD Extra

  Alt 24. Nov 2006, 13:13
Ich habe eine Lösung gefunden:

Delphi-Quellcode:
 // CDROM Type
//==============================================================================
function CDROM_Type(const CDHandle : THandle) : String;
const
  CDROM_DISK_AUDIO_TRACK = $00001;
  CDROM_DISK_DATA_TRACK = $00002;
  IOCTL_CDROM_DISK_TYPE = $20040;
type
  CDROM_DISK_DATA = Record
    DiskData : ULONG;
  end;
var
  cdd : CDROM_DISK_DATA;
  rb : DWord;
begin
  Result := '';

  rb := 0;

  if DeviceIoControl(CDHandle,
                     IOCTL_CDROM_DISK_TYPE,
                     Nil,
                     0,
                     @cdd,
                     sizeof(cdd),
                     rb,
                     Nil)
  then
    case cdd.DiskData and $03 of
      CDROM_DISK_DATA_TRACK:
        Result := 'DatenCD';

      CDROM_DISK_AUDIO_TRACK:
        Result := 'AudioCD';

      CDROM_DISK_DATA_TRACK + CDROM_DISK_AUDIO_TRACK:
        Result := 'MixedCD';
    end
  else
    Result := GetLastErrorMsg;
end;
Delphi-Quellcode:
 // Letzte Fehlermeldung
//==============================================================================
function GetLastErrorMsg: String;
var
  Fehler : PChar;
begin
  GetMem (Fehler, 255);
  FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER or
                 FORMAT_MESSAGE_FROM_SYSTEM,
                 nil,
                 GetLastError,
                 0,
                 @Fehler,
                 255,
                 nil);
  Result := Trim(Fehler);
end;
Der Function wird das mit CreateFile erhaltene Handle übergeben und man erhält einen String zurück. Im Beispielprojekt auch eine Zahl,
Miniaturansicht angehängter Grafiken
cdromtype_898.png  
Angehängte Dateien
Dateityp: 7z source_207.7z (3,8 KB, 58x aufgerufen)
Dateityp: 7z cdromtype_967.7z (168,9 KB, 48x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:42 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