ID Number: Q51981
3.20 3.21 3.30 3.30a 4.00 4.01
MS-DOS
Question:
If a user references a logical drive (e.g. "B:") on a system with one
physical drive and that drive is not current, MS-DOS displays the
message "Insert disk in drive B and press any key when ready." This
message comes from within any of the INT 21H functions where the
logical drive has to be changed. Is there any way to tell beforehand
that MS-DOS will generate this message before the function is actually
called?
The problem is that to hide the cursor within our product, we place it
one line below the last line on the screen. If MS-DOS has to change
the current logical drive, the message is displayed on this line and
MS-DOS then waits for the user to press a key. Of course, since the
message is not visible, the user has no idea of what is being
requested.
How can I detect this situation and display my own message when this
situation occurs?
Response:
There are MS-DOS services available to handle these types of
situations. However, they are only available for MS-DOS Versions 3.20
and later. Interrupt 21H, function 440EH will get the logical drive
status for a particular drive. Interrupt 21H, function 440FH will set
the logical drive status for a particular drive.
Using these two functions, your application can check to see if a
drive is acting as the drive the user has specified. If so, the
application can let the action go on to MS-DOS normally. If not, your
application can use service 440FH to set the logical drive status of a
physical drive and thus bypass the typical MS-DOS prompting message
"Insert disk in drive B and press any key when ready."