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}