![]() |
SPTI - CD-Laufwerk steuern (lesen) und CD/DVD auslesen
Moin ihr,
ich hab jetzt zwar schon seit Wochen gesucht und auch Unmassen von Webseiten, Foren, OpenSource-Brennerkomponenten und dergleichen durchgeforstet, aber so richtig fündig bin ich dennoch nicht geworden. Vorallem da viele der Komponenten mit ASPI arbeiten, oder ASPI und SPTI mischen, so daß ich da einfach nicht durchseh. :wall: So, was ich nun will ist erstmal die möglichen Lesegeschwindigkeiten auslesen und dann selber die mininmale und maximale Lesegeschwindigkeit setzen. Wenn möglich noch die Fehlererkennung/korrektur des Laufwerks beeinflussen. Außerdem die Sektoren welche auf "normalem" Wege nicht lesbar sind nochmals nochmals über 'nen RAW-Zugriff, notfalls auch die fehlerhaften Daten auszulesen. Und am liebsten hätte ich dann beim Auslesen noch gern einen Status über den Zustand des ausgelesenen Sectors. Beim RAW-Auslesen hänge ich leider noch ... alle Beispiele im Netz (welche ich fand) handelten nur von AudioCDs. Ich möchte einfach nur die Daten der letzten/aktuellen Session einer Daten/Mixed-CD/DVD auslesen können. 'nen kleinen unstoppbaren Kopierer hab ich derzeit als Programmchen geschrieben, welcher auch recht gut arbeitet, nur daß halt das CD-Laufwerk nicht direkt beeinflußt werden kann. Die Geschwindigkeit wird automatisch geregelt und das wollte ich abstellen, da ich eh in mehreren Schritten auslese und da sowas etwas störend ist. (dat Programmchen häng ich gern heut abend/montag früh noch an ... wenn ich es nicht wieder vergesse mitzunehmen ._.) |
Re: SPTI - CD-Laufwerk steuern (lesen) und CD/DVD auslesen
Moin,
Was hast du denn schon an Code? Damit man sehen kann, inwiefern man darauf aufbauen kann. Im Prinzip brauchst du nur eine Tabelle mit SCSI-Befehlen, die du in einer vorhandenen Funktion einbauen könntest. So gibt es zum Lesen z.B. den Befehlscode 28 (hex). |
Re: SPTI - CD-Laufwerk steuern (lesen) und CD/DVD auslesen
Liste der Anhänge anzeigen (Anzahl: 2)
Das ist ja das Problem, im Prinzip hab ich noch nichts.
Vermutlich geht es ja irgendwie mit DeviceIoControl und IOCTL_SCSI_PASS_THROUGH*, aber welche Parameter ich da übergeben muß und vorallem wie, das weiß ich halt nicht. Wie gesagt, ich bin zwar noch am suchen (hab daheim halt nur kein INet und hier nicht unbedingt all zuviel Zeit, daher hab ich mir einige vorallem OpenSourceProjekte runtergeladen und schau dort drin nach. Allerdings setzten viele da ja nur auf ASPI (was ich nicht möchte/will) und die Anderen verwenden Beides, also ASPI und SPTI gemischt, wobei die anscheinend erstmal ASPI verwenden und wenn das nicht geht, dann versuchen auf SPTI auszuweichen. Leider haben die dann allerdings intern alles so verschachtelt, daß es dann z.B. nur einen Befehl gibt, womit die z.B. 'nen Sektor auslesen und dieses dann über für mich noch total wirre Wege dann an die entsprechende Stelle leiten, so daß ich einfach noch nicht rausfinden konnte was wirklich für SPTI nötig ist. Ich brauche also erstmal irgendeinen Einstieg und wenn es auch nur ein "gutes" Suchwort ist, welcher sich am Besten mal nur mit SPTI beschäftig. Ach ja, warum unbedingt SPTI, weils Windows (NT...) von Haus aus unterstützt und nicht erst ein ASPI-Treiber benötigt wird. In meinem Programm ist davon jedenfalls noch nichts drin ... drum suche ich ja schließlich. Und mal sehn ob ich die Sourcen zum Programm später mit freigebe. (es wird dann also ... wenn es mal fertig ist ... unter Freeware, oder OpenSource nochmals richtig erscheinen) Aber erstmal muß ich irgendwie noch mit SPTI klarkommen. :wall: Zitat:
|
Re: SPTI - CD-Laufwerk steuern (lesen) und CD/DVD auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
so, ich hab zwar heut früh mal angefangen die Grundlagen zu legen/zusammenzustellen, aber dennoch fehlen mir einfach die Befehle.
'ne Liste, wie du schon sagtest, wäre da wirklich hilfreich. Der Grundaufbau ist ja schon fast klar, aber welche Werte für welche Funktion gesetzt werden müssen ... :gruebel:
Delphi-Quellcode:
SPTDWB.Length := SizeOf(SCSI_PASS_THROUGH);
SPTDWB.CdbLength := 10; SPTDWB.SenseInfoLength := SizeOf(SPTDWB.SenseBuf); SPTDWB.DataIn := SCSI_IOCTL_DATA_IN; SPTDWB.DataTransferLength := SizeOf(TDeviceConfigHeader); SPTDWB.TimeOutValue := 120; SPTDWB.DataBuffer := @DCH; SPTDWB.SenseInfoOffset := SizeOf(SCSI_PASS_THROUGH) + SizeOf(SPTDWB._fill); SPTDWB.Cdb[0] := $46; SPTDWB.Cdb[1] := $02; SPTDWB.Cdb[3] := $00; SPTDWB.Cdb[7] := HiByte(SizeOf(TDeviceConfigHeader)); SPTDWB.Cdb[8] := LoByte(SizeOf(TDeviceConfigHeader)); If DeviceIoControl(Handle, IOCTL_SCSI_PASS_THROUGH_DIRECT, @SPTDWB, SizeOf(SCSI_PASS_THROUGH), @SPTDWB, SizeOf(SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER), W, nil) Then |
Re: SPTI - CD-Laufwerk steuern (lesen) und CD/DVD auslesen
Vielleicht findest du in der Version 0.03a noch was nützliches:
![]() |
Re: SPTI - CD-Laufwerk steuern (lesen) und CD/DVD auslesen
Liste der Anhänge anzeigen (Anzahl: 2)
isolib kannte ich schon, aber ich glaub langsam entsteht was Brauchbares :nerd:
Na ja, hab das zwar noch nicht eingebaut/aktiviert, aber hier dennoch erstmal was "Neues". Hatte da oben ja noch ein/zwei (schwerwiegende) Fehler und Verbesserungswürdiges entdeckt. :shock: Vorallem die ![]() Es können nun mehrere Dateien (nicht mehr nur jeweils Eine) auf einmal kopiert werden. Quelle mit Platzhaltern und Ziel als Pfad > Quelldatei > D:\*.* > Zieldatei > C:\Ziel\ Möglich natürlich auch Quellangaben wie "D:\a*.*", oder "D:\*.txt" ... wo dann jeweils nur Dateien/Verzeichnisse, welche auf diese Masken passen im Verzeichnis gesucht werden. Auf die Maske passende Unterverzeichnisse werden immer abgearbeitet. Dann wurden noch Fehler in den Logdaten behoben, einige weitere Optimierungen beim Auslesen und weitere Dinge eingebaut/überarbeitet. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz