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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> производитель CD 
:(
    Опции темы
Snowy
Дата 7.12.2005, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Если этот код работает, то так:
http://forum.vingrad.ru/index.php?showtopi...ndpost&p=347230
PM MAIL   Вверх
offline
Дата 7.12.2005, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: нет
Всего: 7



а VB кто нибудь знает?
вот я нашел кусок кода программки

Код

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CDROMDrive")
For Each objItem in colItems
    Wscript.Echo "Availability: " & objItem.Availability
    For Each strCapability in objItem.Capabilities
        Wscript.Echo "Capability: "& strCapability
    Next
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "Device ID: " & objItem.DeviceID
    Wscript.Echo "Drive: " & objItem.Drive
    Wscript.Echo "Manufacturer: " & objItem.Manufacturer
    Wscript.Echo "Media Loaded: " & objItem.MediaLoaded
    Wscript.Echo "Media Type: " & objItem.MediaType
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "PNP Device ID: " & objItem.PNPDeviceID
    Wscript.Echo "SCSI Bus: " & objItem.SCSIBus
    Wscript.Echo "SCSI Logical Unit: " & objItem.SCSILogicalUnit
    Wscript.Echo "SCSI Port: " & objItem.SCSIPort
    Wscript.Echo "SCSI Target ID: " & objItem.SCSITargetId
Next


подскажите, что он делает?
PM MAIL   Вверх
Snowy
Дата 7.12.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Так это ж WMI. Ты опять же узнаешь производителя драйва, но никак не диска.
PM MAIL   Вверх
offline
Дата 8.12.2005, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: нет
Всего: 7



все что нужно узнал smile тема закрыта
PM MAIL   Вверх
Snowy
Дата 8.12.2005, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Цитата(kirilllius @ 8.12.2005, 17:40)
все что нужно узнал  тема закрыта

Нет уж, сначала доложи, что узнал.
PM MAIL   Вверх
offline
Дата 8.12.2005, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 474
Регистрация: 7.2.2005

Репутация: нет
Всего: 7



ну тогда две банки сгущенки для востоновления умственной деятельности smile

Есть такой компонент как Magic CD Burner (BinaryMagic) вот он и читает это. Только его приручить нужно, тяжел он в освоении.

Это сообщение отредактировал(а) kirilllius - 9.12.2005, 11:57
PM MAIL   Вверх
MetalFan
Дата 24.1.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



если это кому еще интересно,
вот пример, позволяющий считывать ATIP, в частности ID производителя, которым является "длительность" диска.
Код

  const
    CDROM_READ_TOC_EX_FORMAT_ATIP= $4;
    IOCTL_CDROM_READ_TOC_EX = $24054;
  type
    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: string ): Boolean;
  var
    hCDDevice : THandle;
    in_data: CDROM_READ_TOC_EX;
    out_size: DWORD;
    out_data: CDROM_TOC_ATIP_DATA ;
  begin

    AID := '';
    G_LAST_ERROR := '';
    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
         AID := Format( '%.2d%.2d%.2d', [ out_data.Descriptors[0].LeadInMsf[0],
                                          out_data.Descriptors[0].LeadInMsf[1],
                                          out_data.Descriptors[0].LeadInMsf[2]])
       else
         G_LAST_ERROR := SysErrorMessage( GetLastError );

      CloseHandle( hCDDevice );
   end
   else
     G_LAST_ERROR := SysErrorMessage( GetLastError )
  end;

думаю разобраться в коде не сложно.
глобальная строковая переменная исполользуется для получения сообщения об ошибке.
пример кода подсмотрен на delphikingdom, причесан и адаптирован под собственные нужды)


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


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 22.2.2007

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



Скажите, пожалуйста, а почему IOCTL_CDROM_READ_TOC_EX = $24054?
PM MAIL   Вверх
MetalFan
Дата 25.2.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



beginner2, а чему оно должно быть равно?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0529 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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