| Title | [lDOS] DOS dereferences IFS pointers in CDS and SFT, which may not be set by MS-DOS v5 compatible redirectors |
|---|---|
| Author | E. C. Masloch |
| Created | 2026-06-08 19:52:51 +0200 Jun Mon |
| State | closed |
These pointers were used to distinguish a true network redirected drive from one that's a "local" IFS drive it seems. However, all redirected drives are apparently handled as network/remote by MS-DOS v3 and v5. A user reported that int 21h function 4409h did incorrectly report a Microsoft Network Client drive H: and an shsucdx drive as local.
The problem is that most redirectors don't set up the IFS pointer so it is random what memory it accesses, typically a null pointer.
Interestingly, the interrupt list for this function indicates:
Notes: on local drives, DX bits not listed above are the attribute word from the device driver header (see #01646 at AH=52h); for remote drives, the other bits appear to be undefined for MS-DOS versions prior to 5.0 (they are all cleared in DOS 5+)
I commented on the IFS pointers on the os2museum.com blog:
I independently came across the IFS pointer problem in MS-DOS v4.01, as a user recently (2026 March) reported to me that 21.4409 did report some redirector drives as local incorrectly on my lDOS kernel (the lMS-DOS branch largely based on the 2024 April free software release of MS-DOS v4). I described this some in the changeset message: https://hg.pushbx.org/ecm/msdos4/rev/b95f8c921319
As an added data point you may notice that this source text patch also disables IFS pointer reads from SFT entries, although I didn’t investigate when exactly these would be used. So perhaps Phantom should write the IFS pointer to SFTs as well for even better compatibility. (I didn’t find anywhere in the lDOS kernel that writes the IFS pointers in either CDS or SFT.)
I also documented the CDS IFS pointer problem in the updated interrupt list entry for 21.4409 at https://github.com/LoopZ/TheList/blob/ee642c12/source/Interrupt%20List/INT%2021%20DOS%20Function%20Calls/INT%20214409%20DOS%2031%20IOCTL%20CHECK%20IF%20BLOCK%20DEVICE%20REMOTE.txt#L34
Fixed in hg b95f8c921319 on 2026-03-25.