Rozhraní mezi MOU a driverem virtuálního disku verze 6-05-90 3:07:04 pm ============================================== Rozšíření funkcí INT13: Dodání adresy tabulky přiřazení virtuálních jednotek ---------------------------------------------------- vstup: AX = 0A5C0H výstup: AL = 5AH => rozšíření INT13 je funkční ES:BX => adresa tabulky přiřazení tabulka : +0 => počet položek tabulky (pro lokálně používané jednotky - přes dos) - další položky až do 7FH používá jen disc server +1 => 0. položka - přísluší jednotce 0 (A) +17 => 1. položka - přísluší jednotce 1 (B) +n*16+1 => n. položka - přísluší jednotce n položka : 16 byte +0 => "typ" virtuální jednotky (co je připojeno) 0 - virtuální jednotka není připojena 1 - lokální disketa 2 - lokální oblast harddisku 3 - lokální virtualní disk 4 - vzdálený disk ( oblast nebo virtuální) 5 - vzdálená disketa +1 => číslo fyzické jednotky ( 0,1,80H,81H) - pro 1,2,3 pro 4,5 - číslo vzdálené jednotky +2 => adresa serveru - číslo uzlu - pro 4,5 pro 2,3 - nižší byte počtu speciálně rezervovaných stop +3 => adresa serveru - číslo sítě - pro 4,5 pro 2,3 - vyšší byte počtu speciálně rezervovaných stop +4 => počet speciálně rezervovaných sektorů - jen 2,3 +6 => velikost disku v sektorech - jen 2,3 +8 => 0 -> R/O 1 -> R/W (Boot block R/O) 2 -> R/W +9 => přístupový kód disku 0 => disk smí současně používat jen jeden "uživatel" 1 => n x R/O nebo 1 x R/W 2 => n x R/O a současně 1 x R/W 0EDH => bez kontroly (pro print server) +10 => počet sektorů fyzické jednotky - 2,3 (vyplňuje pista) +12 => počet hlav fyzické jednotky - 2,3 (vyplňuje pista) +14 => číslo oblasti na hard disku - 2 +15 => typ FATu - jen pro 2 1 => 12 bit. FAT 4 => 16 bit. FAT Připojení virtuální jednotky ---------------------------- vstup: AX = 0A5C1H DL = číslo virtuální jednotky (0-7FH) ES:BX => adresa položky - viz funkce 0A5C0H pozor ! celá položka musí být správně vyplněna ! výstup: AL = 5AH => rozšíření INT13 je funkční AH = 0 => O.K. AH = 1 => virtuální jednotka daného čísla je obsazena AH = 2 => jednotka neexistuje AH = 3 => nelze přečíst boot blok AH = 4 => nedovolený vícenásobný přístup AH = 5 => nesouhlasí přístupový kód disku (zadaný s již připojeným diskem) ES:BX => adresa tabulky přiřazení Odpojení virtuální jednotky --------------------------- vstup: AX = 0A5C2H DL = číslo virtuální jednotky (0-7FH) výstup: AL = 5AH => rozšíření INT13 je funkční AH = 0 => O.K. AH = 1 => jednotka není přiřazena AH = 2 => jednotka neexistuje ES:BX => adresa tabulky přiřazení Výměna média virtuální jednotky ------------------------------- vstup: AX = 0A5C3H DL = číslo virtuální jednotky (0-7FH) výstup: AL = 5AH => rozšíření INT13 je funkční AH = 0 => O.K. AH = 1 => jednotka není přiřazena AH = 2 => jednotka neexistuje ES:BX => adresa tabulky přiřazení Ovládání CACHE disku - rozšíření funkcí INT13 ============================================= Zápis "pozdržených sektorů" na disk a zapomenutí dat v bufferech ---------------------------------------------------------------- vstup: AH = 0A1H BX = počáteční stopa oblasti CX = koncová stopa oblasti Zrušení CACHE disku ------------------- vstup: AH = 0A0H Formát zpráv používaných BOOT a DISC SERVERY ============================================ Požadavek na vzdálenou diskovou operaci --------------------------------------- +0: 2 požadavek na disk server +1: AH číslo funkce INT13 (2 nebo 3) +2: AL počet sektorů +3: CL číslo sektoru +4: CH číslo stopy +5: DL číslo vzdálené jednotky (na serveru - pro daný uzel od 1 do x) +6: DH číslo hlavy +7: buffer 512 byte (při zápisu) Odpověď - operace provedena --------------------------- +0: 4 odpověď disk serveru +1: AH číslo funkce INT13 (2 nebo 3) +2: AH nové slovo odpovědi INT13 +3: CL číslo sektoru +4: CH číslo stopy +5: DL číslo vzdálené jednotky (na serveru - pro daný uzel od 1 do x) +6: DH číslo hlavy +7: buffer 512 byte (při čtení) Dodej seznam vzdálených jednotek -------------------------------- +0: 3 zpráva pro disk server +1: 0 +3: číslo sítě +4: číslo uzlu - o kterém žádám informace Odpověď - seznam vzdálených jednotek ------------------------------------- +0: 5 odpověď disk serveru +1: 0 +2: +3: číslo sítě +4: číslo uzlu +5: max. počet vzdálených jednotek uzlu, který je server schopen obsluhovat +6 až max+5: tabulka "typů" vzdálených jednotek daného uzlu položka tabulky může nabývat hodnot: 0 - jednotka není připojena 1 - disketa 2 - oblast hard disku 3 - virtualní disk Dotaz na vzdálenou jednotku --------------------------- +0: 3 zpráva pro disk server +1: 1 +2: číslo vzdálené jednotky (1..x) nebo 0 => dotaz na všechny vzdálené jednotky daného uzlu +3: číslo sítě +4: číslo uzlu - o kterém žádám informace Odpověď - popis vzdálené jednotky --------------------------------- +0: 5 odpověď disk serveru +1: 1 +2: číslo vzdálené jednotky (1..x) +3: číslo sítě +4: číslo uzlu +5: počet vzdálených jednotek uzlu +6: => "typ" vzdálené jednotky daného uzlu 0 - jednotka není připojena 1 - disketa 2 - oblast harddisku 3 - virtuální disk +7: číslo virtuální jednotky na uzlu +8: přístupová práva uživatele 0 - R/O 1 - R/W (Boot block R/O) 2 - R/W +9: přístupový kód jednotky 0 => disk smí současně používat jen jeden "uživatel" 1 => n x R/O nebo 1 x R/W 2 => n x R/O a současně 1 x R/W +10: UIC vlastníka disku - číslo člena +11: UIC vlastníka disku - číslo skupiny +12: max. 40 znaků identifikace jednotky - tj. symbolické jméno pro fyz. diskety a pro oblasti hard disku a jméno, příp. cesta a jméno pro virtuální disk. Řetězec je ukončen mezerou. +52: číslo fyzické jednotky +53: počet spec. rezervovaných stop +55: počet spec.rezervovaných sektorů +57: velikost disku v sektorech +59: typ FATu - 1 => 12 bit. 4 => 16 bit Připojení vzdálené jednotky --------------------------- +0: 3 zpráva pro disk server +1: 2 +2: číslo vzdálené jednotky (1..x) +7: číslo virtuální jednotky na uzlu (0-max. počet dosových jednotek) +8: požadovaná přístupová práva 0 - R/O 1 - R/W (Boot block R/O) 2 - R/W +12: max. 40 znaků identifikace jednotky - tj. symbolické jméno pro fyz. diskety a pro oblasti hard disku a jméno, příp. cesta a jméno pro virtuální disk. Řetězec je ukončen mezerou. +52: heslo pro přístup k mediu (8 byte) +60 UIC člen +61 UIC skupina +52 2 byty náhodná informace, pomocí které je zakódováno heslo a UIC Odpověď - jednotka (ne)připojena -------------------------------- +0: 5 odpověď disk serveru +1: 2 +2: číslo vzdálené jednotky (1..x) +3: číslo sítě +4: číslo uzlu +5: => odpověď na požadavek 0 - O.K. 1 - nesouhlasí tabulky serveru s tabulkami virt. driveru - neměla by nastávat 2 - jednotka neexistuje 3 - chyba při diskové operaci 4 - neoprávněný přístup (nedovolený vícenásobný přístup) 5 - nesouhlasí přístupový kód disku v tabulkách serveru s IC v tabulce driveru 6 - virtuální disk není souvislý 7 - neoprávněný přístup k zařízení (uživatel nemá povolen požadovaný přístup) 8 - neplatné číslo vzdálené jednotky nebo je číslo obsazeno 9 - příliš mnoho připojených jednotek na serveru (pro všechny) +6: a dále jako u odpovědi na funkci 1 Odpojení vzdálené jednotky -------------------------- +0: 3 zpráva pro disk server +1: 3 +2: číslo vzdálené jednotky (1..x) Odpověď - jednotka odpojena --------------------------- +0: 5 odpověď disk serveru +1: 3 +2: číslo vzdálené jednotky (1..x) +3: číslo sítě +4: číslo uzlu Připojení disku na tisk ----------------------- +0: 3 zpráva pro disk server +1: 0F2H +2: číslo požadavku (pro potřeby print serveru) +3: číslo vzdálené jednotky (x..y) +4: 16 byte - položka Pištovy tabulky Odpověď - jednotka připojena --------------------------- +0: 6 zpráva pro print server +1: 0F2H +2: číslo požadavku (pro potřeby print serveru) +3: číslo vzdálené jednotky (x..y) nebo 0 - chyba Odpojení disku připojeného na tisk ---------------------------------- +0: 3 zpráva pro disk server +1: 0F3H +2: číslo požadavku (pro potřeby print serveru) +3: číslo vzdálené jednotky (x..y) Odpověď - jednotka odpojena --------------------------- +0: 6 zpráva pro print server +1: 0F3H +2: číslo požadavku (pro potřeby print serveru) +3: číslo vzdálené jednotky (x..y) nebo 0 - chyba Dodej seznam veřejných (síťových) zařízení ------------------------------------------ +0: 3 zpráva pro disk server +1: 4 Odpověď - seznam veřejných (síťových) zařízení ----------------------------------------------- +0: 5 odpověď disk serveru +1: 4 +2: max. počet veřejných zařízení, který je server schopen obsluhovat +3: počet veřejných zařízení +4: síťové jméno serveru (9 byte) +13 až max+12: tabulka "typů" veřejných zařízení položka tabulky může nabývat hodnot: 0 - pod tímto číslem není dostupné žádné zařízení 1 - disketa 2 - oblast hard disku 3 - virtuální disk Dotaz na veřejné zařízení (síťové zařízení) -------------------------------------- +0: 3 zpráva pro disk server +1: 5 +2: číslo veřejného zařízení (1..y) nebo 0 => dotaz na všechny zařízení Odpověď - popis veřejného zařízení ---------------------------------- +0: 5 odpověď disk serveru +1: 5 +2: číslo veřejného zařízení (1..y) +3: počet veřejných zařízení +4: => 0 - pod tímto číslem není dostupné žádné zařízení 1 - disketa 2 - oblast harddisku 3 - virtualní disk +5: přístupový kód zařízení 0 => zařízení smí současně používat jen jeden "uživatel" 1 => n x R/O nebo 1 x R/W 2 => n x R/O a současně 1 x R/W +6: UIC vlastníka zařízení - číslo člena +7: UIC vlastníka zařízení - číslo skupiny +8: přístupová práva vlastníka zařízení 0 - R/O 1 - R/W (Boot block R/O) 2 - R/W 0FFH - žádná práva +9: přístupová práva skupiny +10: přístupová práva ostatních +11: nejvyšší přístupová práva pomocí hesla (žádná práva - přístup pomocí hesla je zakázán) +12: 12 znaků - síťové jméno zařízení +24: číslo fyzické jednotky +25: počet spec. rezervovaných stop +27: počet spec.rezervovaných sektorů +29: velikost disku v sektorech Zveřejnění zařízení do sítě --------------------------- +0: 3 zpráva pro disk server +1: 6 +3: číslo virtuální jednotky (0-7FH) +5: přístupový kód zařízení 0 => zařízení smí současně používat jen jeden "uživatel" 1 => n x R/O nebo 1 x R/W 2 => n x R/O a současně 1 x R/W +6: UIC vlastníka zařízení - číslo člena +7: UIC vlastníka zařízení - číslo skupiny +8: přístupová práva vlastníka zařízení 0 - R/O 1 - R/W (Boot block R/O) 2 - R/W 0FFH - žádná práva +9: přístupová práva skupiny +10: přístupová práva ostatních +11: nejvyšší přístupová práva pomocí hesla (žádná práva - přístup pomocí hesla je zakázán) +12: 12 znaků - síťové jméno zařízení Odpověď - zařízení (ne)zveřejněno --------------------------------- +0: 5 odpověď disk serveru +1: 6 +2: číslo zveřejňovaného zařízení (1..y) - přidělí disc server nebo 0 => chyba +3: číslo virtuální jednotky (0-7FH) +4: a dále jako u odpovědi na službu 5. Utajení veřejné jednotky ------------------------ +0: 3 zpráva pro disk server +1: 7 +2: číslo veřejného zařízení (1..y) Odpověď - jednotka utajena -------------------------- +0: 5 odpověď disk serveru +1: 7 +2: číslo veřejného zařízení (1..y) Žádost o tabulku cest pro přístup k virtuálním diskům ----------------------------------------------------- +0: 3 zpráva pro disk server +1: 8 Odpověď - tabulka cest pro přístup k virtuálním diskům ------------------------------------------------------ +0: 5 odpověď disk serveru +1: 8 +3: max. počet položek tabulky +4: počet využitých položek tabulky +5: začátek 1. položky tabulky +46: začátek 2. položky tabulky položka je dlouhá 41 byte +0: číslo virtuální jednotky nebo 0FFH +1: až +40: cesta ve tvaru "xxxx\yyyyy" ukončená mezerou Zadání nové cesty pro přístup k virtuálním diskům ------------------------------------------------- +0: 3 zpráva pro disk server +1: 9 +5: číslo virtuální jednotky +6: až +45: cesta ve tvaru "xxxx\yyyyy" ukončená mezerou Odpověď - aktuální tabulka cest pro přístup k virtuálním diskům --------------------------------------------------------------- +0: 5 odpověď disk serveru +1: 9 +2: číslo přidělené cesty 0 => chyba - příliš mnoho cest nebo jednotka či adresář neexistuje +3: a dále stejně jako u odpovědi č. 8 Zrušení cesty pro přístup k virtuálním diskům --------------------------------------------- +0: 3 zpráva pro disk server +1: 10 +5: číslo virtuální jednotky +6: až +45: cesta ve tvaru "xxxx\yyyyy" ukončená mezerou Odpověď - aktuální tabulka cest pro přístup k virtuálním diskům --------------------------------------------------------------- +0: 5 odpověď disk serveru +1: 10 +2: číslo zrušené cesty 0 => zadaná cesta neexistuje Dodej seznam obsluhovaných klientů ---------------------------------- +0 3 +1 11 Odpověď ------- +0 5 +1 11 +2 počet klientů +3 seznam adres klientů v pořadí číslo sítě, adresa uzlu Odpojení cizího disku --------------------- +0 3 +1 12 +2 číslo vzdálené jednotky +3 číslo sítě klienta, jemuž bude odpojeno +4 adresa uzlu Cizí disk odpojen ----------------- +0 3 +1 12 +2 číslo vzdálené jednotky +3 číslo sítě klienta, jemuž bylo odpojeno +4 adresa uzlu Popis FELAN boot bloku ====================== 0-FFH: - standardní struktura boot bloku +3 až +7: "FELAN" - tvůrce média +8 až +10: "xxx" - verze FELANu 100H: UIC vlastníka media - číslo člena 101H: UIC vlastníka media - číslo skupiny 102H: přístupová práva vlastníka 103H: přístupová práva skupiny 104H: přístupová práva ostatních 105H: nejvyšší přístupová práva pomocí hesla 106H-10EH: rezerva 10FH: kód přístupu média 0 => disk smí současně používat jen jeden "uživatel" 1 => n x R/O nebo 1 x R/W 2 => n x R/O a současně 1 x R/W 110H: počet položek tabulky hesel - max 26 111H: začátek tabulky hesel položka tabulky je dlouhá 9 byte 0.až 7. byte - zakódované heslo 8. byte přístupová práva