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}