Обратится к диску и счиатать побайтно информацию с него...

  • Автор темы kalexi
  • Дата начала
K

kalexi

Гость
#1
Сабж.
Пример: сделать полный образ диска.

Слышал, что можно через WinAPI
А можно ли обратится похожими средствами, что используются в работе с файлами (Assign, BlockRead и и.п.)???
Или как обратится через API ?
 
A

alexBlack

Гость
#2
Попробуй вот это

var Buf : array [0..2048] of byte;
xSec : integer;
dwSize : DWORD;
hCD:HWND;
x_read:integer;
F:TFileStream;
begin
//xTo := Last;
xSec := SecPerBlock;
//xFrom := First;

dwSize := xSec * 2048;
F := TFileStream.Create(FileName, fmOpenRead);
try
// Открываем устройство
hCD := CreateFile(PChar('\\.\'+CDDevice), GENERIC_WRITE, 0, nil, OPEN_ALWAYS, 0, 0);
if hCD = INVALID_HANDLE_VALUE then begin
ShowMessage('Can''t open device');
exit;
end;

While true do begin
x_read := F.Read(Buf, dwSize);
if x_read = 0 then exit;

// nPos := SetFilePointer(hCD, xFrom * 2048, nil, FILE_BEGIN);
// if nPos <> xFrom * 2048
// then ShowMessage('incorrect position '+IntToStr(nPos));
//
if WriteFile(hCD, Buf, x_read, x_read, nil) then begin
end else begin
ShowMessage(IntToStr(GetLastError));
exit;
end;
end;

finally
F.Free;
end;

Пробовал для CD. Получается обычный ISO-файл.