Posted By: janecek (janecek) on 'CZmsdos' Title: Re: Jednotky C: a D: - jak na to v ASM Date: Tue Nov 5 11:01:23 1996 Ahoj, diky za rady, ta utilitka z JAMu asi bude delat presne to, co chci. Ale take jsem na to uz prisel sam, je to velmi jednoduche. Kdo by chtel zdrojak v ASM, at mi napise sem na Lianu (jsou toho asi 2 KB). Funguje to od DOSu verze 4.0+, dokonce i ve Win95. Jak to funguje ? DOS si pro kazdou jednotku udrzuje tabulku informaci, zvanou CDS (Current Directory Structure). Ta (mimo jine) obsahuje aktualni adresarovou cestu tak, jak je nastavena pro dany disk. Zvlastnosti je, ze tato cesta zacina jmenem disku (takze v tabulce pro disk C: je ulozena adresarova cesta napr. ve tvaru 'C:DOS'). Chceme-li disk C: vydavat za disk D:, staci prepsat cestu z 'C:DOS' na 'D:DOS'. Stejnym principem zmenime nazev disku v tabulce pro disk D: (Napr. z 'D:BORLANDC' na 'C:BORLANDC'). A mame oba disky vzajemne prohozeny. Mimochodem, podobnym zpusobem pracuje prikaz SUBST. Struktura CDS je popsana v INTRLISTu, ja jsem cerpal z verze 41. Dulezite je, ze se tato struktura od DOSu 4.0 nezmenila. Adresu CDS v pameti je mozno ziskat pomoci DOSovske funkce INT 21h/AH=52h (vrati adresu pole vnitrnich struktur DOSu, jednou z polozek je prave adresa CDS). Blizsi podrobnosti viz INTRLIST, ja si je z hlavy nepamatuji. Pozn: Ve Win95 to funguje jen tehdy, je-li zamena disku provedena jeste pred startem vlastnich Windows, tj. napr. v AUTOEXEC.BAT. Zdrojak zaslu na pozadani. Janik