Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.01.16;
Скачать: [xml.tar.bz2];

Вниз

Физический доступ к носителю   Найти похожие ветки 

 
Koster   (2002-11-04 09:31) [0]

Как получить доступ (прочитать, записать) определенный сектор скажем на дискете?


 
Marcus   (2002-11-04 16:34) [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.01.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.009 c
14-49285
klon2003
2002-12-27 16:41
2003.01.16
помогите боже мой


14-49213
Igor_thief
2002-12-28 19:50
2003.01.16
Как утсановить свойство TopItem у ListView?


6-49194
NONAME00
2002-11-16 13:23
2003.01.16
Как узнать по локальной сети...


1-49152
MAN-IN-RED
2003-01-05 18:05
2003.01.16
Можно ли как-нибудь в Memo выделить несколько частей текста?


1-49018
Song
2003-01-07 12:53
2003.01.16
Проблема: на событии onCreate формы1 надо отобразить





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский