![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CD и нулевая дорожка [D7, Win2k, WinXP]
CCCP © (2005-12-04 18:21:00)Подскажите, как считать данные с нулевой дорожки CD?
CCCP (2005-12-07 21:58:00) [1]Спасибо за помощь, все отлично работает!!!
А такой вопрос, что еще можно считать с помощью этого компонента с CD,
я имею в виду те данные, которые не копируются?
MTsv DN (2005-12-07 20:04:00) [2]Ах, да... Забыл... Переведи: "ХХ:YY:ZZ" => "ХХ:YY:Z0".
MTsv DN (2005-12-07 20:03:00) [3]А потом TOC_ATIP, вида "ХХ:YY:ZZ", смотришь по таблице и получаешь производителя CD.
С Уважением MTsv DN
MTsv DN (2005-12-07 19:56:00) [4]Значится так...
Я все делал динамически, поэтому первой строчке не удивляйся:
uses mbDrvLib, mbCDBC, mbASPI;
var
Burner: TBurner;
TOC_ATIP : string;
fTOC100: TTOCPMATIP0100;
begin
Burner := TBurner.Create(nil); // Создаю Burner
Burner.InitializeASPI(True); // Инициализация ASPI/SPTI
if not Burner.ASPIInitialized then
begin
ShowMsg( 'Ошибка инициализации SPTI/ASPI...', MB_OK);
exit;
end;
if (Burner.Devices <> nil) and (Burner.Devices.Count > 0) then
for i := 1 to Burner.Devices.Count do
begin // Здесь заносишь найденные устройства в память, например в ComboBox
Burner.Device := Burner.Devices[i - 1];
cboxBurners.Insert(cboxDevices.Count, Burner.Devices[i - 1]);
end;
if cboxBurners.Count = 0 then
begin
ShowMsg('CDROM отсутствуют...', MB_OK);
exit;
end;
Burner.Device := cboxDevices.Items[cboxDevices.CurIndex]; // Устанавливаешь необходимый
fillchar(fTOC100, sizeof(fTOC100), 0); // Считывание ATIP информации
if Burner.ReadTOC(4, @fTOC100, Sizeof(fTOC100), 0, True) then
begin
if fTOC100.StFrame < 10 then
TOC_ATIP := intTostr(fTOC100.StMin) + ':' + intTostr(fTOC100.StSec) + ':0' + intTostr(fTOC100.StFrame)
else TOC_ATIP := intTostr(fTOC100.StMin) + ':' + intTostr(fTOC100.StSec) + ':' + intTostr(fTOC100.StFrame);
end;
ShowMsg(TOC_ATIP, MB_OK);
Вроде так...
С Уважением MTsv DN
CCCP (2005-12-07 19:22:00) [5]>MTsv DN
я нашел и установил. А не подскажите, в каком направлении теперь работать, что смотреть, какие свойства?
MTsv DN (2005-12-07 19:13:00) [6]Magic CD/DVD Burner была с сурсами в сети в свое время
Она и сейчас в сети есть... В Astalavista.sk поищи... Если не найдешь, пиши мне у меня есть...
С Уважением MTsv DN
CCCP (2005-12-07 18:59:00) [7]нашел у азиатов, сейчас посмотрю
CCCP (2005-12-07 18:43:00) [8]Magic CD Burner v.1.21 находится, но все ссылки на него битые :(
OldNaum (2005-12-07 18:41:00) [9]Magic CD/DVD Burner была с сурсами в сети в свое время. до сих пор даже где-то валялась, советую. У меня утеряна безвозвратно ) но в свое время почерпнул много интересного.
CCCP (2005-12-07 18:32:00) [10]>MTsv DN
это та, что www.binarymagics.com?
MTsv DN (2005-12-07 18:11:00) [11]Привет...
Если Delphi используете, то советую с сети поискать Magic CD Burner v.1.21 (BinaryMagic)... НЕ НА САЙТЕ, А ИМЕННО В СЕТИ... Можно найти "интересную" версию и не надо будет заморачиваться с переводом с С++...
С Уважением MTsv DN
CCCP (2005-12-07 17:16:00) [12]так?
type
CDROM_TOC_ATIP_DATA_BLOCK =record
a1 : byte ;
a2 : byte;
a3 : byte;
Reserved7 : UCHAR ;
LeadInMsf : array[0..2]of UCHAR;
Reserved8 : UCHAR;
LeadOutMsf : array[0..2]of UCHAR;
Reserved9 : UCHAR ;
A1Values : array[0..2]of UCHAR;
Reserved10 : UCHAR ;
A2Values : array[0..2]of UCHAR;
Reserved11 : UCHAR ;
A3Values : array[0..2]of UCHAR;
Reserved12 : UCHAR;
end;
CCCP (2005-12-07 14:47:00) [13]а как весь struct _CDROM_TOC_ATIP_DATA_BLOCK на Delphi перевести, что бы в нем работало?
umbra (2005-12-07 14:42:00) [14]
UCHAR == byte
UCHAR A1Values[3] == array[1..3] of UCHAR == array[1..3] of byte
CCCP (2005-12-07 14:17:00) [15]а как это
typedef struct _CDROM_TOC_ATIP_DATA_BLOCK {
UCHAR CdrwReferenceSpeed : 3;
UCHAR Reserved3 : 1;
UCHAR WritePower : 3;
UCHAR True1 : 1;
UCHAR Reserved4 : 6;
UCHAR UnrestrictedUse : 1;
UCHAR Reserved5 : 1;
UCHAR A3Valid : 1;
UCHAR A2Valid : 1;
UCHAR A1Valid : 1;
UCHAR DiscSubType : 3;
UCHAR IsCdrw : 1;
UCHAR True2 : 1;
UCHAR Reserved7;
UCHAR LeadInMsf[3];
UCHAR Reserved8;
UCHAR LeadOutMsf[3];
UCHAR Reserved9;
UCHAR A1Values[3];
UCHAR Reserved10;
UCHAR A2Values[3];
UCHAR Reserved11;
UCHAR A3Values[3];
UCHAR Reserved12;
} CDROM_TOC_ATIP_DATA_BLOCK, *PCDROM_TOC_ATIP_DATA_BLOCK;
на Delphi перевести и получить
UCHAR A1Values[3];
UCHAR A2Values[3];
UCHAR A3Values[3];
CCCP (2005-12-06 19:15:00) [16]Спасибо, попробую, может что получится :)
MTsv DN (2005-12-06 18:41:00) [17]В догонку:
www.cdgraber.narod.ru - здесь маленькая библиотека (~50 кб) в ней тоже есть функция ReadTOC... Это для C++. Думаю самый оптимальный вариант...
А здесь таблица для расшифровки ATIP:
http://www.replikator.ru/context.php?a_ID_CONTEXT=416&a_ID_MENU=10&ID_SITE=1
С Уважением MTsv DN
MTsv DN (2005-12-06 18:32:00) [18]Привет...
Вообще, по-хорошему, это надо делать через прямое обращение к приводу, т.е. либо через ASPI Layer, либо через SPTI... Другой вопрос, что отдельно примеров я не видел (правда и не искал :) )
Delphi
http://www.binarymagics.com- там есть платный компонент для записи дисков... Ограничения ТОЛЬКО на запись... Т.е. считывать инфу можно без ограничений (права не нарушите)...
http://sourceforge.net/projects/freeburner- бесплатный компонент, чуть "сырой", но считать думаю можно...
http://maxivamoto.narod.ru/DelphiComponents/diskinfo.htm- здесь набор компонентов для Delphi...
http://www.torry.net- здесь надо найти aspilib.
C&Delphi
"навскидку"...я просто больше в Delphi работаю...
http://www.hpcde.com- здесь набор библиотек
http://www.rocketdivision.com- и здесь набор библиотек
С Уважением MTsv DN
WondeRu (2005-12-06 17:46:00) [19]к сожалению, знаю не больше вашего
CCCP (2005-12-06 17:40:00) [20]А есть какие либо примеры :)?