INT 2fH 4a11H BX=0005H: Mount Dblspace Drive
Compatibility: 6.0+
Expects: AX 4a11H (mux number)
BX 0005H (DoubleSpace fn code)
DL drive number to assign to CVF (0=A, 1=B, etc)
ES:SI addr of DsActivateRec (undocumented; see below)
──────────────────────────────────────────────────────────────────
Returns: ES:SI bErrCode field is DoubleSpace API Error Code (00H=success)
──────────────────────────────────────────────────────────────────
Info: The documentation for this fn is incomplete--Microsoft explains
that it is "very, very complicated." It involves constructing a
file fragment list, recomputing the BitFAT, and checking for
MDFAT crosslinks.
We are told that the best way to mount a drive is to spawn a copy
of DBLSPACE.EXE, using a command line with the following syntax:
DBLSPACE.EXE /MOUNT[=seq] host_drv [/NEWDRIVE=new_drv]
For instance...
DBLSPACE.EXE /MOUNT=1 C: /NEWDRIVE=H
...will mount the CVF named C:\DBLSPACE.001 as drive H. Keep in
mind the exception Dblspace makes when mounting a .000 volume; in
that case, it automatically swaps the host ID with the compressed
volume ID.
ES:DI on entry, ES:DI must point to a local activation record. The
available documentation describes only the first few fields of
this structure, as follows:
DsActivateRec
Offset Size Contents
▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
+0 2 abSig must be 444dH ('M','D')
+2 1 bCmdCode must be 4dH ('M') Mount command
+3 1 bResult returns a DoubleSpace API Error Code
+4 1 bHostDrvNo host drive number (0=A, 1=B, etc.)
+5 ? rDiskUnit undocumented structure goes here
(different for DOS 6.0 and DOS 6.2)
5+? length of DsActivateRec (undocumented)
We don't have documentation on the rDiskUnit structure (and we
are told it is complicated and changed with DOS 6.2), so we can't
use this call. We do know that DBLSPACE.BIN allocates a number
of them, depending upon the MaxRemovableDrives setting in
DBLSPACE.INI (see INT 2fH 4a11H 0009H).
On entry, the bHostDrvNo field contains the drive number of the
host drive and (presumably), something in rDiskUnit identifies
the CVF▲ name (or sequence number).
On return, the bResult field contains 00H if the operation was
successful or a DoubleSpace API Error Code if the volume could
not be mounted.
Note: This looks like a wrapper for an undocumented IOCTL call.
Compare to DS IOCTL 'F' and DS IOCTL 'I'.
See Also: DoubleSpace Overview
DoubleSpace API
INT 2fH: Multiplex Interrupt
DOS Functions
-♦-