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

end;

ScsiPassThroughWithBuffers=TScsiPassThroughWithBuffers;

PScsiPassThroughWithBuffers=^TScsiPassThroughWithBuffers;

Как видите, эта структура содержит тип TScsiPassThrough и два буфера. Для удобства мы будем использовать структуру TScsiPassThroughWithBuffers.

Теперь постараюсь объяснить принцип использования интерфейса SPTI.

Сначала, с помощью функции CreateFile, создаём хэндл для доступа к устройству. Затем заполняем данными структуру TScsiPassThroughWithBuffers. И, наконец, с помощью функции DeviceIoControl, посылаем устройству управляющий код.

Выглядит это примерно так:

procedure GetSPTIDrives; // Процедура получает информацию о CD-ROM

var

j : integer;

s : string;

len, returned : DWORD;

sptwb : TScsiPassThroughWithBuffers;

Cdroms : TCdroms; // Структура Tcdroms описана в предыдущей статье

const

SCSI_IOCTL_DATA_IN = 1;

IOCTL_SCSI_PASS_THROUGH = ($00000004 shl 16)

or (($0001 or $0002) shl 14) or ($0401 shl 2) or (0);

begin

// Кроме строки '\\.\E : ', можно использовать, 'cdrom0', 'cdrom1' и т.д.

// в зависимости от количества устройств

hDevice := CreateFile('\\.\E : ', GENERIC_READ or GENERIC_WRITE,

FILE_SHARE_READ or FILE_SHARE_WRITE,

nil, OPEN_EXISTING, 0, 0);

if hDevice=INVALID_HANDLE_VALUE then

ShowMessage('INVALID_HANDLE_VALUE');

sptwb.Spt.Length := sizeof(TSCSIPASSTHROUGH);

sptwb.Spt.CdbLength := 6; // Шестибайтная команда

sptwb.Spt.SenseInfoLength := 24;

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