Реферат: Как сделать чтобы запущеный 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
|