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

Тема в разделе "Delphi - Система", создана пользователем kalexi, 29 сен 2007.

  1. kalexi

    kalexi Гость

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

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

    alexBlack Гость

    Попробуй вот это

    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-файл.
     
Загрузка...

Поделиться этой страницей