ID Number: Q40434
2.x 3.x 4.00 4.01
MS-DOS
Question:
We need to find a way to determine the value of the FILES command
contained in the CONFIG.SYS file at system boot time. We need to
ensure that the system has been booted with a certain minimum value.
Is there a method of calling MS-DOS or examining the MS-DOS memory
space to determine what this parameter was set at?
Response:
There is no MS-DOS system call for an application to determine the
number of file handles (in the FILES statement in the CONFIG.SYS) that
were available at boot-up, or are available at the current moment.
An application can look for the file CONFIG.SYS in the boot drive, but
the application should not rely on its presence. A feature new to
MS-DOS Version 4.00 is the ability to obtain the drive letter the
system was booted from. Calling interrupt 21H, with AH=33H and AL=05H,
will return the boot drive (A=1, B=2, etc.) in the DL register, if the
CF is not set. Refer to the "Microsoft MS-DOS Programmer's Reference"
for more information on this system call. This boot drive information
could be useful, but if the drive is a removable drive (there is an
IOCtl service that can be made to determine if a drive is removable or
fixed), the application cannot be sure that the boot disk is in the
drive; the user may have changed the disk.
Examining the MS-DOS memory space is a very nonportable thing to do.
The safest and easiest method to determine the number of file handles
that are currently available to an application is to open a dummy file
multiple times, until the application runs out of handles. The most
convenient handle is something that you are SURE exists, such as the
console I/O device "CON." For each dummy file that is successfully
opened, increment a count. Then, close all of these dummy file
handles.
Related to this discussion is a system service introduced with MS-DOS
Version 3.30 that will allow an application to set the maximum upper
limit of file handles that the application can open. The default is
20, but this service can be called to allow up to 64K file handles to
be made available. For more information on this service, interrupt
21H, AH=67H, refer to the "Microsoft MS-DOS Programmer's Reference."