Форум: "WinAPI";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
ВнизКак программно замедлить скорость вращения CD-ROMа Найти похожие ветки
← →
delpher_g (2007-11-27 14:43) [0]Ув. мастера!
Подскажите как можно в Дельфи программно замедлить скорость вращения CD-ROM"а до минимума, а потом восстановить до максимума.
Если возможно с примерами.
Спасибо.
← →
Rouse_ © (2007-11-27 15:30) [1]
uses ASPI; // в инете где-то лежит
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;
← →
slow!alfamoon!com (2007-11-27 17:14) [2]инклуды искать например на http://delphi-jedi.org/
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.152 c