Date: Thu, 24 Oct 1996 14:04:44 +0200 (IST) From: Eli Zaretskii To: "Ilya P. Ryzhenkov" Cc: djgpp AT delorie DOT com Subject: Re: Drive Help In-Reply-To: Message-Id: Mime-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On Thu, 24 Oct 1996, Ilya P. Ryzhenkov wrote: > IMHO that's not always as you've written. Consider using SUBST and > network drive mapping. If I boot from a floppy (on a diskless > station) and connect to a network file server (like Novell) and > issue MAP ROOT C:=SERVER\SYS:\SOMEDIR then I'll not have B:, however > A: & C: will be present. That is incorrect AFAIK: a PC, even with a single floppy, always thinks there are both A: and B:, as far as DOS is concerned. Didn't you ever have to say "copy a: b:" on a single-floppy PC? The real problem here is in the interpretation of the word ``present''. The way DOS works, if it knows about, say, drive F:, then all the drive letters between A: and F: (at least) *must* be also ``present'', i.e. DOS has allocated all its internal structures to handle all these drives, and when you call some file-oriented function which references, say, drive E:, DOS will try to access that drive. If the drive happens to be physically absent, the attempt to access it will of course fail, but DOS has no way to know if it failed because the drive is absent or just ``not ready''. You must go to lower levels (IOCTL, BIOS, network interrupts etc.) to know better than DOS. Unfortunately, there is no single set of standard calls to do this for all kinds of drives. > There is also other soft which creates it's > own drives regardles of what is actually present on a machine and in > DOS mind ;-) (Examples : mscdex, norton utilities diskreet, > ramdisk...) As long as that software abides by the rules of DOS block devices, they will all present the above behavior. For example recall that if Novell Netware wants to create drive R:, you are told to put LASTDRIVE = R into CONFIG.SYS. That command tells DOS to allocate all the drives from A: to R:. As another example, recall that MSCDEX always defines the first drive letter beyond all the real disk drives, it never leaves a drive letter in between.