Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.23;
Скачать: CL | DM;

Вниз

Чтение запись сектора диска   Найти похожие ветки 

 
Ice   (2002-10-08 22:39) [0]

Как прочитать записать сектор HDD


 
Polox ©   (2002-10-10 17:24) [1]

Чтение/запись диска осуществляется прерыванием 13h(или 21h но это лажа).
Так-что если сидишь под виндами или досом ...
А вообще в вопросе файл-систему уточнять надо и.т.д


 
Pumpkin   (2002-10-11 10:40) [2]

На torry была компонента. diskio вроде бы (с vxd драйвером int13h).


 
Pumpkin   (2002-10-11 10:44) [3]

Эррорчик вышел. Вот она:
http://www.torry.net/vcl/filedrv/diskaccess/diskacc.zip


 
Ihor Osov'yak ©   (2002-10-11 16:58) [4]

2 Pumpkin (11.10.02 10:44)

Я, кажись смотрел когда-то эту вещь. Там несколько ошибок есть.
Во первых, по разному интерпритирует номер диска под NT и 98,
во вторых, больше чем четыре сектора за раз под 98 работает также некорректно.

Да, вполне возможно, что я видел более старую версию. Но в любом случае - отнеситесь к этому изделию очень осторожно.




 
Pumpkin   (2002-10-11 17:07) [5]

2 Ihor Osov"yak © (11.10.02 16:58)
> Да, вполне возможно, что я видел более старую версию. Но в любом случае - отнеситесь к этому изделию очень осторожно.

Нет Вы видели именно эту, других версий нет. Осторожно? - согласен. Я когда в свое время искал (может плохо искал), ничего лучше не нашел и кое-что подправив использовал (нужно было только чтение). Работает, не жужжит.



 
Геннадий   (2002-10-12 22:04) [6]

Странно... Я уж думал, что это под Win невозможно...

Сколько ни пытался - ничего не получалось с прерываниями. Народ! Поделитесь знаниями - в какие регистры что писать перед вызовом прерывания?


 
Pumpkin   (2002-10-12 22:57) [7]

2 Геннадий (12.10.02 22:04)
скачай и смотри. На торри таких компонент не одна штука (в этом разделе).


 
vodoley   (2002-10-18 15:05) [8]

Попробывал по ХР, работает, это кульно...


 
Карлсон ©   (2002-10-18 18:46) [9]

извините, что вмешиваюсь, просто мне немного не понятно "Чтение запись сектора диска".
может кто-нибудь объяснить, что это такое?


 
Nick N A   (2002-10-20 08:53) [10]

Смотрите winioctl.h или DeviceIOControl


 
Rouse_ ©   (2002-10-20 09:24) [11]

Вот правда не проверял

implementation

{$R *.DFM}
type

pDIOCRegs = ^TDIOCRegs;
TDIOCRegs = packed record
rEBX, rEDX, rECX, rEAX, rEDI, rESI, rFlags : DWORD;
end;

const
VWIN32_DIOC_DOS_IOCTL = 1;
VWIN32_DIOC_DOS_INT13 = 4; // Prforms Interrupt 13h commands
SectorSize = 512;

function ReadSector(Head, Track, Sector: Integer; buffer: pointer;
Floppy: char):Boolean;
var
hDevice: THandle;
Regs: TDIOCRegs;
DevName: string;
nb: Cardinal;
begin
if WIN32PLATFORM <> VER_PLATFORM_WIN32_NT then
begin {Win95/98}
hDevice := CreateFile("\\.\vwin32",GENERIC_READ, 0, nil, 0,
FILE_FLAG_DELETE_ON_CLOSE, 0);
if (hDevice = INVALID_HANDLE_VALUE) then
begin
Result:=False;
Exit;
end;
Regs.rEDX := head * $100 + Ord(Floppy in ["b","B"]);
Regs.rEAX := $201; // код операции read sector
Regs.rEBX := DWORD(buffer);
Regs.rECX := Track * $100 + Sector;
Regs.rFlags := $0;
Result := DeviceIOControl(hDevice, VWIN32_DIOC_DOS_INT13,
@Regs, sizeof(Regs), @Regs, sizeof(Regs), nb, nil)
and ((Regs.rFlags and $1)=0);
CloseHandle(hDevice);
end {Win95}
else
begin // Windows NT
DevName := "\\.\A:";
if Floppy in ["b","B"] then DevName[5] := Floppy;
hDevice := CreateFile(pChar(DevName), GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
if (hDevice = INVALID_HANDLE_VALUE) then
begin
Result:=False;
Exit;
end;
SetFIlePointer(hDevice, (Sector-1) * SectorSize,
nil, FILE_BEGIN ); {нумерация с 1}
Result := ReadFile(hDevice, buffer^, SectorSize, nb, nil) and
(nb=SectorSize);
CloseHandle(hDevice);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Bt : Array [1..512] of Byte;
PBt : PByte; i:integer;
begin
PBt:=@Bt;
ReadSector(2, 1,1,PBt,"a");
for i:= 1 to 512 do
begin
ListBox1.Items.Add(inttohex(bt[i],2));
end;
end;


Желаю успехов



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
4-75044
Cosmic
2002-11-10 16:45
2002.12.23
Как убрать консоль?


1-74667
Supreme
2002-12-13 09:59
2002.12.23
Как загрузить все значения из INI-файла в Listbox1?


1-74749
Tik
2002-12-14 15:45
2002.12.23
TreeView


1-74675
Nazira
2002-12-13 11:08
2002.12.23
Как начать программировать на Delphi


14-74956
Сатир
2002-12-02 21:04
2002.12.23
предложение добавить к правилам