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

Вниз

ФЛОППИ ДИСК   Найти похожие ветки 

 
Timon ©   (2003-02-04 23:29) [0]

Уважаемые мастера!!! Как записать определённую инфу в 10 сектор испорченной дискеты используя WinAPI.


 
bak ©   (2003-02-05 08:18) [1]

звучало пару месяцев назад в этом форуме про чтение из сектора
(имя автора не помню - надеюсь не обидится)

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: Integer;
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;



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
8-6615
Nhu
2002-12-24 22:14
2003.04.03
как полность вырубить звук? как его вкл??


1-6462
Sergey_
2003-03-24 11:15
2003.04.03
в чём отличие TEdit.text и string ?


1-6609
Beastie
2003-03-14 11:44
2003.04.03
Как вывести на печать содержимое TStringGrid


6-6633
MikeFW
2003-02-10 14:49
2003.04.03
Как организовать мгновенную рассылку писем по e-mail?


3-6365
oss
2003-03-14 13:03
2003.04.03
сложение полей