Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Изменение скорости привода CD-ROM

Delphi , Технологии , CD-ROM

Изменение скорости привода CD-ROM

Находим в интернете файл ASPI.pas (еще есть wnaspi32.pas), подключаем его к проекту, пишем следующий код:

Code:

function SetCDSpeed(Host,Target:byte;Speed:integer):BOOL;

 
var
dwASPIStatus: DWORD;
hEvent: THandle;
srbExec: SRB_ExecSCSICmd;
begin
if Speed<176 then result:=false
else
begin
hEvent:=CreateEvent(nil, true, false, nil);
Fillchar(srbExec,sizeof(SRB_ExecSCSICmd),0);
srbExec.SRB_Cmd:= SC_EXEC_SCSI_CMD;
srbExec.SRB_Flags:= SRB_DIR_OUT or SRB_EVENT_NOTIFY;
srbExec.SRB_Target:= Target;
srbExec.SRB_HaId:= Host;
srbExec.SRB_Lun:= 0;
srbExec.SRB_SenseLen:= SENSE_LEN;
srbExec.SRB_CDBLen:= 12;
srbExec.SRB_PostProc:=Pointer(hEvent);
srbExec.CDBByte[0]:= $BB; // команда изменения скорости привода
srbExec.CDBByte[2]:= Speed shr 8;
srbExec.CDBByte[3]:= Speed;
srbExec.CDBByte[4]:= $FF;
srbExec.CDBByte[5]:= $FF;
ResetEvent(hEvent);
dwASPIStatus:= SendASPI32Command(@srbExec);
if dwASPIStatus=SS_PENDING
then
begin
   WaitForSingleObject(hEvent,INFINITE);
end;
if srbExec.SRB_Status<>SS_COMP
then
begin
   MessageBox(0,'Error processing the SRB.','Error',MB_OK);
   result:=false;
end
else
result:=true;
end;
end;

Какие параметры передавать - написано в том же ASPI.pas

Автор Rouse_

Взято из http://forum.sources.ru

Функция SetCDSpeed используется для настройки скорости CD-ROM привода с помощью библиотеки ASPI (Advanced SCSI Programming Interface). Библиотека ASPI предоставляет способ общения с SCSI-устройствами, включая CD-ROM приводы.

Вот разбивка кода:

  1. Функция принимает три параметра:
    • Host: байтовое значение, представляющее ID хоста SCSI-устройства.
    • Target: байтовое значение, представляющее ID цели SCSI-устройства.
    • Speed: целочисленное значение, представляющее желаемую скорость CD-ROM привода (в единицах 4KB/с).
  2. Функция проверяет, является ли запрошенная скорость меньше 176 (что соответствует скорости приблизительно 704KB/с). Если это так, функция возвращает false.
  3. В противном случае функция создает новый обрабатываемый объект с помощью CreateEvent.
  4. Затем она заполняет структуру srbExec данными для SCSI-команды:
    • SRB_Cmd: указывает тип команды (в этом случае, выполнение команды).
    • SRB_Flags: указывает флаги для команды (включая направление и уведомление о событии).
    • SRB_Target: указывает ID цели устройства.
    • SRB_HaId: указывает ID хоста устройства.
    • SRB_Lun: указывает логическое номер единицы (LUN) устройства (в этом случае, 0).
    • SRB_SenseLen: указывает длину буфера sense данных.
    • SRB_CDBLen: указывает длину буфера command block данных (12 байт в этом случае).
    • SRB_PostProc: указывает адрес процедуры, которая будет вызвана после обработки команды.
  5. Функция устанавливает содержимое массива CDBByte, который содержит данные command block CD-ROM привода:
    • Первый байт ($BB) указывает тип команды (в этом случае, команда mode sense).
    • Следующие два байта указывают скорость CD-ROM привода.
  6. Функция сбрасывает обрабатываемый объект с помощью ResetEvent.
  7. Затем она отправляет ASPI-команду на устройство с помощью SendASPI32Command, которая возвращает код ошибки (dwASPIStatus).
  8. Если команда ожидается, функция ждет ее завершения с помощью WaitForSingleObject.
  9. Если команда не была успешной (т.е., srbExec.SRB_Status не равен SS_COMP), функция отображает сообщение об ошибке и возвращает false. В противном случае она возвращает true.

Документация ASPI предоставляет более информации о параметрах и структурах, используемых в этом коде.

Обратите внимание, что этот код предполагает, что вы уже установили и настроили библиотеку ASPI на вашем системе. Кроме того, будьте-aware, что настройка скорости CD-ROM привода может не работать на всех устройствах или системах.

предлагается код на Delphi, позволяющий изменить скорость чтения/записи с помощью функции SetCDSpeed.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: CD-ROM ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-11-30 11:42:55
2024-12-11 00:28:55/0.0036840438842773/1