[comp.os.msdos.programmer] Find all drives

burleigh@ogre.cica.indiana.edu (Frank Burleigh) (05/02/91)

I've just written a short test program to find all the drives in
a system and report the characteristics of each drive.  The procedure
is simply to get the DOS list of lists (21h/52h) and walk along the
chain of disk param blocks (DPBs) until one has ffff:ffff in its
'next' field.  On stand-alone systems this has worked well.

Disaster struck when the test program was loosed on a workstation
attached to a Netware network.  The workstation has an A: and a B:
its own but nothing more; then come the server 'drives'.  My test
program stopped at B:.

The very useful book *Undocumented DOS* does say that there are no
current directory structures for network drives under Netware but
I don't believe it says there are no DPBs for those drives.

Two questions:

1. Will I really then have to try to setdisk() for each possible
drive up through LASTDRIVE (in the LoL)?

2. If so, what will I get back if I ask DOS for the DPB for each
disk I *can* change to (21h/32h)?

Any suggestions appreciated.

--
Frank Burleigh  burleigh@cica.cica.indiana.edu
USENET: ...rutgers!iuvax!cica!burleigh BITNET: BURLEIGH@IUBACS.BITNET
Department of Sociology, Indiana University, Bloomington, Indiana 47405

Ralf.Brown@B.GP.CS.CMU.EDU (05/02/91)

In article <1991May1.194041.17719@cica.indiana.edu>, burleigh@ogre.cica.indiana.edu (Frank Burleigh) wrote:
}The very useful book *Undocumented DOS* does say that there are no
}current directory structures for network drives under Netware but
}I don't believe it says there are no DPBs for those drives.

Since NetWare hooks INT 21 and handles all requests for access to network
drives itself, DOS never sees the network drives.  Thus I'm not surprised
that DOS doesn't have DPBs for NetWare drives, since it doesn't even know
they exist.

}2. If so, what will I get back if I ask DOS for the DPB for each
}disk I *can* change to (21h/32h)?

If NetWare properly supports that call, you should be able to get a DPB by
making the call for the NetWare drives.
--
{backbone}!cs.cmu.edu!ralf  ARPA: RALF@CS.CMU.EDU   FIDO: Ralf Brown 1:129/3.1
BITnet: RALF%CS.CMU.EDU@CARNEGIE   AT&Tnet: (412)268-3053 (school)   FAX: ask
DISCLAIMER?  Did  | It isn't what we don't know that gives us trouble, it's
I claim something?| what we know that ain't so.  --Will Rogers

mlf@comet.cis.ufl.edu (Mike Fisher) (05/03/91)

First you need to get a copy of Ralf Brown's Interrupt List. A new version was 
just posted on one of the msdos groups not to long ago I think.

Then look up int21 function 0x5F subfunction 0x02 (warning: these numbers are 
from memory, but the should be close) 'Get Redirection List Entry'.  The network
drives should have entries in this list.  I'd post some code, but it's at home
and I'm at work.

-------------------------------------------------------------------------------
Mike Fisher                               Real life:  There is no such thing...
mlf@cis.ufl.edu 
University of Florida CIS Dept.


--
-------------------------------------------------------------------------------
|  Real life:  There is no such thing...	       Mike Fisher	      |
|									      |
|  University of Florida CIS Dept.                     mlf@cis.ufl.edu        |
-------------------------------------------------------------------------------