Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!sol.ctr.columbia.edu!ira.uka.de!news From: S_ASCHMIDT@iravcl.ira.uka.de (|S| Angela Schmidt) Newsgroups: comp.sys.amiga.programmer Subject: Re: Device List Message-ID: <1991Jun25.131549.25837@ira.uka.de> Date: 25 Jun 91 14:04:34 GMT References: Sender: news@ira.uka.de (USENET News System) Organization: University of Karlsruhe, FRG (Informatik Rechnerabteilung) Lines: 77 In-Reply-To: ad99s461@sycom.UUCP's message of 19 Jun 91 07: 47:45 GMT X-News-Reader: VMS NEWS 1.10 In ad99s461@sycom.UUCP writes: > Help! I am desperate need of information on scanning the Device List. > [...] I've included a part of my program which scans the devicelist for DLT_DEVICE (DF0:, DF1:, DH0:, RAD:,...) Try to change DLT_DEVICE to DLT_VOLUMES (= Disk names) or DLT_DIRECTORY (= ASSIGNS) and leave "if (fssm!=0)" out. Remember that RAM: is no device, so you won't find it using DLT_DEVICE! struct DeviceInfos { char devname[MAX_DEVICE]; /* Devicename (e.g. DF0:) */ ULONG devunit; /* Unit */ ULONG devflags; /* Memory-Flags */ char devdriver[MAX_TREIBER]; /* Drivername */ long entries[MAX_ENTRIES]; /* entrees */ }; void DeviceList () { register long i, j=0; struct DeviceInfos *di[MAXDEVS]; register struct DeviceInfos **devinf=di; Forbid (); for (i=0; idl_Root))->rn_Info))->di_DevInfo); while (dev != 0 && idl_Type==DLT_DEVICE) { /* Disks only */ /* DLT_VOLUMES Volumes */ /* DLT_DIRECTORY Assigns */ dn=(struct DeviceNode *) dev; if (dn->dn_Task) { fssm=(struct FileSysStartupMsg *) (dn->dn_Startup<<2); if (fssm!=0) { /* StartupMessage for disks */ for (j=0; j<*((char *) BADDR(dn->dn_Name)); j++) devinf[i]->devname[j]=*((char *) BADDR(dn->dn_Name)+1+j); devinf[i]->devname[j]=':'; devinf[i]->devname[j+1]=0; devinf[i]->devunit=fssm->fssm_Unit; devinf[i]->devflags=fssm->fssm_Flags; fenv=(ULONG *) (fssm->fssm_Environ<<2); for (j=0; j<*((char *) BADDR(fssm->fssm_Device)); j++) devinf[i]->devdriver[j]=*((char *) BADDR(fssm->fssm_Device)+1+j); devinf[i]->devdriver[j]=0; for (j=0; j<=fenv[DE_TABLESIZE]; j++) devinf[i]->entries[j]=fenv[j]; devinf[i]->entries[DE_MEMBUFTYPE]|=MEMF_PUBLIC; } } } dev=(struct DeviceList *) BADDR(dev->dl_Next); } Permit (); } > > -- Alex Deburie Hope this helps Angela ---------------------------------------------------------+--------------------- Angela Schmidt Internet: S_ASchmidt@iravcl.ira.uka.de | // (Nessy in IRC) BITNET: UK8B@DKAUNI2.BITNET | Amiga // Phone: +49 731 712316 & 721 6904-263 | \\ // only 1000 MEZ: (10am-9pm) (12pm-10pm) | \X/ the real one! ---------------------------------------------------------+---------------------