delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp-workers/1997/10/16/17:32:35

Date: Fri, 17 Oct 1997 10:30:37 +1100
From: Bill Currie <billc AT blackmagic DOT tait DOT co DOT nz>
Subject: Detecting fat32 drives.
To: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>, djgpp-workers AT delorie DOT com
Cc: ralf AT pobox DOT com
Message-id: <199710162127.KAA25018@teleng1.tait.co.nz gatekeeper.tait.co.nz>
Organization: Tait Electronics Limited
MIME-version: 1.0
Comments: Authenticated sender is <billc AT blackmagic DOT tait DOT co DOT nz>

I don't know how reliable this is, but I just found out how to detect 
fat32 drives: attempt to read sector 0 (or any other, I imagine) 
using int 25,cx=0xffff. This will return with carry set and ax==1 
(invalid function) if the drive/partition is fat32.  This function 
works as normal for non-fat32 drives (floppies, anyway).

For those interested, I found this out while testing some of my lfn 
driver code (I'm busy writing lfn support for non-windows dos with 
fat32 support built in) and a function I'ld already tested and 
debugged suddenly failed to read the disk.

I haven't tried this in dos mode yet, but I can't imagine dos mode 
allowing this function to work either.  I think M$ actually did 
something right here: it's denied fat32 unaware programs access to 
fat32 drives; programs HAVE to use the fat32 version of the disk 
read/write functions (-D-217305CXFFFF in the interrupt list).  

(for Ralf) Yes, the docs for int 25/26 say to use 217305 if the drive 
is fat32, but it doesn't mention the returned error code (ax=0x0001) 
nor does it say that 217305 MUST be used (I had the fealing of a 
recomendation rather than a requirement).  Also, I think the use of 
int 25 for detecting fat32 should be mentioned.

I just went off and tried this in dos mode and got different results. 
int 25 didn't work at all (cf=0, ax=0x0207) for both c: and a: (I 
also tried locking c:, no change).

I have to modify my code to use 217305 and I'll report back on the 
results when I get them.  It seems W95 (IFSMGR?) remaps int 25/26 to 
int 21/7305 when accessing floppy drives (or non-fat32 drives??) or 
does the access itself, but msdos 7.1 doesn't work at all with int 25 
(and 26 I imagine).

Bill
--
Leave others their otherness.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019