home *** CD-ROM | disk | FTP | other *** search
- DRIVE.PAS - Routine for classifying disk drives
- -----------------------------------------------
-
- TurboPower Software
- 10/88
- Version 1.0
- Released to the public domain
-
- Overview
- ------------------------------------------------------------------------------
-
- DRIVE.PAS contains a single routine, GetDiskClass, that attempts to classify
- the type of disk installed in a specified drive. It recognizes all of the most
- common disk types, and it has been tested on a variety of machines running
- virtually every major version of DOS from 2.0 to 4.0. Nevertheless, we feel
- obliged to warn you that it uses an undocumented DOS function ($32), and that
- it should therefore be used with some measure of caution.
-
- We developed this routine for use in our own commercial software, specifically
- an installation program that needs to know whether a particular drive contains
- a floppy disk or some other form of removable media. You may find other uses
- for it.
-
- Using DRIVE
- ------------------------------------------------------------------------------
-
- DRIVE.PAS contains the following type and procedure declarations:
-
- type
- DiskClass = (
- Floppy360, Floppy720, Floppy12, Floppy144, OtherFloppy, Bernoulli,
- HardDisk, RamDisk, SubstDrive, UnknownDisk, InvalidDrive);
-
- This type defines the eight disk types that can be identified by DRIVE,
- as well as several types indicating that a particular error occurred. The
- meaning of each value is described briefly below:
-
- Floppy360 A 360K, 5 1/4 floppy disk
- Floppy720 A 720K, 3 1/2 floppy disk
- Floppy12 A 1.2 meg, 5 1/4 floppy disk
- Floppy144 A 1.44 meg, 3 1/2 floppy disk
- OtherFloppy Another kind of floppy disk (e.g. a single-sided disk)
- Bernoulli A Bernoulli drive
- HardDisk Any hard disk
- RamDisk A RAM disk created with VDISK.SYS, RAMDRIVE.SYS, etc.
- SubstDrive A logical drive created by SUBST or ASSIGN
- UnknownDisk Indicates that the drive could not be classified
- InvalidDrive Indicates that the drive does not exist or isn't ready
-
- function GetDiskClass(Drive : Char; var SubstDriveChar : Char) : DiskClass;
- {-Return the disk class for the drive with the specified letter}
-
- Given a drive letter ('A'..'Z'), this routine returns a value indicating
- what kind of disk is installed in the specified drive. The possible return
- values are described in the documentation for DiskClass.
-
- There are two special cases that you should be aware of. First, the DOS
- ASSIGN program allows you to treat one existing drive as another. For
- example
-
- ASSIGN B=C
-
- would cause all disk I/O pertaining to drive B to be routed to drive C.
- Similarly, the DOS SUBST program allows you to create a new logical drive
- from an existing drive or directory. For example,
-
- SUBST H: C:\TURBO
-
- would allow you to refer to the directory "C:\TURBO" as drive H.
-
- GetDiskClass is able to recognize both of these situations (though it
- cannot distinguish between them). When it does, it will return 'SubstDrive'
- as its function result, and it will pass back the letter of the actual
- drive being used for the specified Drive in SubstDriveChar. In the case of
- the second example above (involving SUBST), SubstDriveChar would be set to
- 'C' if the drive parameter were 'H'. Note that SubstDriveChar will always
- be equal to Drive if the function result is something other than
- SubstDrive.
-
- Limitations
- ------------------------------------------------------------------------------
-
- GetDiskClass cannot recognize the type of a floppy drive, only the type of the
- disk that is in it (if any). For example, a 1.2 meg floppy drive will be
- classified as Floppy360 if it has a 360K disk in it.
-
- GetDiskClass does not currently recognize optical drives, nor does it
- identify several rarely-used floppy disk types (single-sided floppies), for
- example.
-
- Credits
- ------------------------------------------------------------------------------
-
- Thanks go to our many friends on the Borland Programmer's Forum A on CompuServe
- who helped in the testing of this routine. There were too many testers to name
- them all here. You know who you are, and so do we. We appreciate your help.