Р а з д е л ы
Новости
Гостевая
Форум
Чат
Учебники
Программы
Статьи по Delphi
Статьи по Html
Компьютерные статьи
Java скрипты
Приколы
Отправить SMS
Мои разработки
 
К о н т а к т ы

ICQ: 445511525
e-mail: ZORBI@bk.ru

c o p y r i g h t
p r o g r a m m i n g
d e s i g n e d
by ZORBI

Т р о и ц к   г

 
С с ы л к и


 
С ч е т ч и к и
Rambler's Top100
 
..:: Статьи ::..
Изменение скорости привода CD-ROM

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

   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
	             		

Источник: www.sources.ru  

Hosted by uCoz