Реферат: Как сделать чтобы запущеный exe сам себя удалил 2

Srb.SRB_Cmd := SC_EXEC_SCSI_CMD;

Srb.SRB_Flags := SRB_DIR_IN or SRB_EVENT_NOTIFY;

Srb.SRB_Target := Target;

Srb.SRB_HaId := Host;

Srb.SRB_Lun := Lun;

Srb.SRB_BufLen := sizeof(buffer);

Srb.SRB_BufPointer := @buffer;

Srb.SRB_SenseLen := SENSE_LEN;

Srb.SRB_CDBLen := $0A; // это десятибайтная команда

Srb.SRB_PostProc := Pointer(hEvent);

Srb.CDBByte[0] := $5A; // код команды MODE SENSE(10)

// код страницы CD Capabilities and Mechanical Status Page

Srb.CDBByte[2] := $2A;

Srb.CDBByte[7] := HIBYTE(sizeof(buffer));

Srb.CDBByte[8] := LOBYTE(sizeof(buffer));

ResetEvent(hEvent);

dwASPIStatus := SendASPI32Command(@Srb);

if dwASPIStatus=SS_PENDING then

WaitForSingleObject(hEvent,INFINITE);

if Srb.SRB_Status<>SS_COMP then

// если ошибка, обнуляем структуру TCDSpeeds

FillChar(Result,sizeof(TCDSpeeds),0);

else begin

// почему сумма байт делится на 176? 176 – это скорость передачи

// данных, равная одному килобайту в секунду.

Result.MaxSpeed := ((buffer[16] shl 8) + buffer[17]) div 176;

Result.CurrentSpeed := ((buffer[22] shl 8) + buffer[23]) div 176;

Result.MaxWriteSpeed := ((buffer[26] shl 8) + buffer[27]) div 176;

Result.CurrentWriteSpeed := ((buffer[28] shl 8) + buffer[29]) div 176;

К-во Просмотров: 448
Бесплатно скачать Реферат: Как сделать чтобы запущеный exe сам себя удалил 2