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}