Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как читать ATIP 
:(
    Опции темы
СССР
Дата 6.6.2005, 17:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите, возможно ли в Delphi прочитать информацию ATIP (Absolute Time In Pregroove), если да, то как?

Заранее спасибо
  Вверх
Quadr0
Дата 6.6.2005, 17:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 21:10
  Вверх
СССР
Дата 6.6.2005, 19:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Воспользуйтесь для этого CDR API oт Nero, например, которое сейчас на языке Паскаля стало доступно на всеобщее обозрение


А где это найти можно? На http://www.torry.net, что то не удалось отыскать smile
  Вверх
Quadr0
Дата 6.6.2005, 19:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 1.7.2011, 15:05
  Вверх
СССР
Дата 6.6.2005, 19:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо, буду капать smile
  Вверх
p0s0l
Дата 6.6.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



Один человек уже начинал это дело, не знаю, довел ли он его до конца, но можешь либо начать с этого, либо спросить у него лично:
http://forum.vingrad.ru/index.php?showtopic=42563&view=all


--------------------
С уважением, г-н Посол.
PM   Вверх
СССР
Дата 7.6.2005, 22:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











а вот как это можно на Delphi перевести smile

Код

CDROM_READ_TOC_EX cd_toc = { 0 };
cd_toc.Format = CDROM_READ_TOC_EX_FORMAT_ATIP; //Query the device for absolute time in pregroove (ATIP) data. 
cd_toc.Msf = 1; //Msf member must be set to 1.
CDROM_TOC_ATIP_DATA atip_data = { 0 };
res = DeviceIoControl(cd_device, IOCTL_CDROM_READ_TOC_EX, &cd_toc, sizeof(cd_toc), &atip_data, sizeof(atip_data), &bytes_returned, NULL);
CDROM_TOC_ATIP_DATA_BLOCK* atip_block = &atip_data.Descriptors[0];

  Вверх
Quadr0
Дата 7.6.2005, 22:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











...

Это сообщение отредактировал(а) Quadr0 - 14.7.2011, 21:12
  Вверх
СССР
Дата 8.6.2005, 09:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Скачать то скачал, но там я ничего не нашел, а именно как получить информацию о диске smile
  Вверх
p0s0l
Дата 8.6.2005, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 14
Всего: 112



СССР, ты ходил по ссылке, что я дал ? Там как раз этот код и есть (не в начале темы, а ближе к концу)... Только он не всегда работает, или вообще не работает smile




--------------------
С уважением, г-н Посол.
PM   Вверх
СССР
Дата 8.6.2005, 14:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да, он действительно не работает, выдает ошибку 97 smile

Мне тут сказали, что нужно

ASPI - SendASPI32Command
+MMC3

попробовать. Правдв я еще смутно представляю, что это такое, но посмотрим. А вообще сказали что с DDK работать нужно. А что это за монстр такой DDK?
  Вверх
СССР
Дата 8.6.2005, 14:19 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











MMC (Multi Media Commands)
smile
  Вверх
Guest
Дата 9.6.2005, 18:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Я нашел кучу pdf по SendASPI32Command и MMC3, но во-первых они на английском, а во-вторых ничего не понятно smile
А вот можно ли чужую программу разобрать? У меня есть программка на С++ CDR_Identifier_1.63
  Вверх
СССР
Дата 10.6.2005, 10:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











DVD Disc Manufacturing Information

table - Read DVD structure Data Format (Format field = 04h)

-----------------------------------------------------------------------------
| Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|Byte | | | | | | | | |
|---------------------------------------------------------------------------|
| 0 |(MSB) DVD STRUCTURE Data Length |
|-----------| |
| 1 | (LSB)|
|-----------|---------------------------------------------------------------|
| 2 | Reserved |
|-----------|---------------------------------------------------------------|
| 3 | Reserved |
|-----------|---------------------------------------------------------------|
| | |
|-----------|---------------------------------------------------------------|
| 0 | |
|-----------| |
| ... | |
|-----------| |
| ... | |
|-----------| Disc Manufacturing Information |
| ... | |
|-----------| |
| 2047 | |
-----------------------------------------------------------------------------

The DVD STRUCTURE Data Length specifies the length in bytes of the following
DVD STRUCTURE data that is available to be transferred to the Initiator.
The DVD STRUCTURE Data Length value does not include the DVD STRUCTURE Data
Length field itself.
The Disc Manufacturing Information is taken from the DVD media Lead-in.
In the case of DVD-R/-RW multi session disc, this information is taken from
the last Border-in.

Вот такую информацию я нашел. Вот скорее всего Disc Manufacturing Information
это и есть те данные о производителе и о типе слоя. Вот как обратиться к этой
области диска?



  Вверх
MetalFan
Дата 2.10.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(Guest @  9.6.2005,  18:56 Найти цитируемый пост)
У меня есть программка на С++ CDR_Identifier_1.63

вот бы где раздобыть... сорцы пусть и на c++


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
bems
Дата 15.10.2006, 03:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 21
Всего: 88



Цитата(СССР @  8.6.2005,  14:08 Найти цитируемый пост)
А что это за монстр такой DDK? 
Как СДК, только для писателей дров. Там сам черт ногу сломит smile 



--------------------
Обижено школьников: 8
PM MAIL   Вверх
MetalFan
Дата 5.3.2007, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



на всякий случай приведу свою модификацию способа получения ATIP, в частности ID производителя CD.
Код

 const
    CDROM_READ_TOC_EX_FORMAT_ATIP= $4;
    IOCTL_CDROM_READ_TOC_EX = $24054;
  type
    TCDID = array [0..2] of byte;
    CDROM_TOC_ATIP_DATA_BLOCK =record
      a1:  byte ;
        //UCHAR  CdrwReferenceSpeed : 3;
        //UCHAR  Reserved3          : 1;
        //UCHAR  WritePower        : 3;
        //UCHAR  True1              : 1;
      a2:  byte;
          //UCHAR  Reserved4      : 6;
          //UCHAR  UnrestrictedUse : 1;
          //UCHAR  Reserved5      : 1;
      a3:  byte;
          //UCHAR  A3Valid  : 1;
          // UCHAR  A2Valid  : 1;
          //UCHAR  A1Valid  : 1;
          //UCHAR  Reserved6 : 3;
          //UCHAR  IsCdrw    : 1;
          //UCHAR  True2    : 1;
      Reserved7:Byte;
      LeadInMsf:array[0..2]of Byte;
      Reserved8:Byte;
      LeadOutMsf:array[0..2]of Byte;
      Reserved9:Byte ;
      A1Values:array[0..2]of Byte;
      Reserved10:Byte ;
      A2Values:array[0..2]of Byte;
      Reserved11:Byte ;
      A3Values :array[0..2]of Byte;
      Reserved12:Byte;
    end;
    CDROM_READ_TOC_EX = record
      par1: byte;
      //Format : UCHAR:4 ;
      // Reserved1 : UCHAR:3;
      // Msf : UCHAR:1 ;
      SessionTrack:Byte;
      Reserved2:Byte ;
      Reserved3:Byte;
    end;
    CDROM_TOC_ATIP_DATA =record
        Length:array [0..1] of Byte;
        Reserved1:Byte;
        Reserved2:Byte;
        Descriptors: array [0..0] of CDROM_TOC_ATIP_DATA_BLOCK;
    end;

  function GetCDDiskManufactureID( ADriveLetter: Char; var AID: TCDID ): Boolean;
  var
    hCDDevice : THandle;
    in_data: CDROM_READ_TOC_EX;
    out_size: DWORD;
    out_data: CDROM_TOC_ATIP_DATA ;
  begin

    ZeroMemory(@AID, SizeOf(TCDID));
    Result := False;

    FillChar( in_data,SizeOf(in_data),0);
    FillChar( out_data,SizeOf(out_data),0);
    in_data.par1 := CDROM_READ_TOC_EX_FORMAT_ATIP or (1 shl 7);
    in_data.SessionTrack :=  0;
    hCDDevice := CreateFile( PChar( '\\.\'+ADriveLetter+':'),
                                    GENERIC_READ,
                                    FILE_SHARE_READ or FILE_SHARE_WRITE,
                                    nil,
                                    OPEN_EXISTING,
                                    FILE_ATTRIBUTE_NORMAL, 0 );
    if hCDDevice <> INVALID_HANDLE_VALUE then
    begin
       Result := DeviceIoControl( hCDDevice,
                                  IOCTL_CDROM_READ_TOC_EX,
                                  @in_data,
                                  sizeof(in_data),
                                  @out_data,
                                  sizeof(out_data),
                                  out_size,
                                  nil );

       if Result then
       begin
         move( out_data.Descriptors[0].LeadInMsf[0], AID[0], 3 )
//         AIDstr := Format( '%.2d%.2d%.2d', [ out_data.Descriptors[0].LeadInMsf[0],
//                                          out_data.Descriptors[0].LeadInMsf[1],
//                                          out_data.Descriptors[0].LeadInMsf[2]])
       end ;
      CloseHandle( hCDDevice );
   end;
  end;



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0922 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.