Реферат: Как сделать чтобы запущеный exe сам себя удалил 2
// четвёртый байт уникальных параметров определяет максимальное
// количество объектов SCSI
maxTgt := sh.HA_Unique[3];
// если этот байт равен 0, тогда присваиваем переменной максимально
// возможное значение (константа MAXTARG=7)
if maxTgt=0 then maxTgt := MAXTARG;
for T := 0 to maxTgt-1 do // начинаем перебирать все объекты SCSI
begin
for L := 0 to MAXLUN-1 do // и все логические номера устройств
begin
// инициализируем структуру TSRB_GDEVBlock
FillChar(sd,sizeof(sd),0);
// команда запрашивает тип устройства для объекта SCSI (константа
// SC_GET_DEV_TYPE = $01)
sd.SRB_Cmd := SC_GET_DEV_TYPE;
sd.SRB_HaID := H;
sd.SRB_Target := T;
sd.SRB_Lun := L;
SendASPI32Command(@sd); // посылаем ASPI-команду
// если выполнено без ошибок, и устройство является CD-ROM,
// заполняем переменную Cdroms.
if (sd.SRB_Status=SS_COMP) and (sd.SRB_DeviceType=DTYPE_CDROM) then
begin
Cdroms.Cdroms[Cdroms.CdromCount].HaID := H;
Cdroms.Cdroms[Cdroms.CdromCount].Target := T;
Cdroms.Cdroms[Cdroms.CdromCount].Lun := L;
// получаем информацию об этом CD-ROM
CdromInfo(Cdroms.CdromCount);
// увеличиваем счётчик количества устройств CD-ROM