INT 2F - MS WINDOWS - "DOSMGR" VIRTUAL DEVICE API
AX = 1607h
BX = 0015h (VxD identifier of "DOSMGR")
CX = function
0000h query instance processing
Return: CX = state
0000h not instanced
other instanced (DOS 5.0 kernel returns 0001h)
DX = segment of DOS drivers
(unchanged if call handled by DOS 5.0)
ES:BX -> patch table (see below)
0001h set patches in DOS
DX = bit mask of patch requests
bit 0 enable critical sections
bit 1 NOP setting/checking user ID
bit 2 turn INT 21/AH=3Fh on STDIN into polling loop
bit 3 trap stack fault in "SYSINIT" to WIN386
bit 4 BIOS patch to trap "Insert disk X:" to WIN386
Return: AX = B97Ch
BX = bit mask of patches applied
DX = A2ABh
0002h remove patches in DOS (ignored by DOS 5.0 kernel)
DX = bit mask of patch requests (see function 0001h)
0003h get size of DOS data structures
DX = bit mask of request (only one bit can be set)
bit 0: Current Directory Structure size
Return: if supported request:
AX = B97Ch
CX = size in bytes of requested structure
DX = A2ABh
else:
all registers preserved
0004h determine instanced data structures
Return: AX = B97Ch if supported
DX = A2ABh if supported (DOS 5.0 kernel returns 0000h)
BX = bit mask of instanced items
bit 0: CDS
bit 1: SFT
bit 2: device list
bit 3: DOS swappable data area
0005h get device driver size
ES = segment of device driver
Return: DX:AX = 0000h:0000h on error (not dev. driver segment)
DX:AX = A2ABh:B97Ch if successful
BX:CX = size of device driver in bytes
Notes:  the DOS 5.0 kernel provides these calls; earlier versions require a
separate driver
DOSMGR (DOS Manager) will check whether the OEM DOS/BIOS data has
been instanced via INT 2F/AX=1605h and will not perform its own
instancing of the normal DOS/BIOS data if so
SeeAlso: AX=1607h/BX=000Ch,AX=1607h/BX=0014h,AX=1684h

Format of patch table:
Offset  Size    Description
00h    WORD    number of items in patch table
02h  N WORDs   offsets of ??? to be patched

See also: 2F1605

2F1607BX0015 - MS WINDOWS - "DOSMGR" VIRTUAL DEVICE API