Mail Archives: djgpp/1996/10/24/08:30:35
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.
- Raw text -