DrvNumber := 255;
GetDiskNumber := DrvNumber;
end; {GetDiskNumber} /——_-——_————-.———;
Function GetFATItem(Disk: Byte;Item: Word): Word;
fBosBpastae'r содержимое указанного элемента FAT} var
DI : TDisk;
k,j,n: Integers-Fat : record case Byte of 0: (w: array [0..255] of Word);
1: (b: array [0..512*3-1] of Byte);
end;
begin
GetDiskInfo(Disk,DI) ;
if not Dislc_Error then with DI do begin
if (Item > MaxClus) or (Item < 2) then
Item := $FFFF {Задан ошибочный номер кластера) else begin
if FAT 16 then begin
k := Item div 256; {Нужный сектор FAT} j := Item mod 256; {Смещение в секторе} n := 1 {Количество читаемых секторов) end else begin
k :° Item div 1024; {Нужная тройка секторов FAT} j :~ (3*Item) аЪх 1-)t*1536; {Смещение в секторе} п := 3 {Количеетво читаемых секторов/ end;
{Чихаем 1 или 3 сектора FAT} ReadSector (Disk, FATLock+lc*n, n, Fat) ;
it not Disk_Error then begin
if FAT 16 then
Item :» Fat.wtj] else begin
n := Item; {Старое значение Item для проверки четности} Item := Fat.b[j]+Fat.b[j+l] shi 8;
if odd(n) than
Item :~ Item shr 4 else
Item :" Item and $FFF;
if Item > $FF6 then
Item :-- $FOOO+Item end;
GetFatItem := Item end end end end; {GetFATItemf /———————————————;
procedure GetIOCTLInfo(Disk: Byte; var 10: IOCTL__Type);
{Получает информацию об устройстве согласно общему вызову IOCTL}