Int 4B Fn 8103 - Virtual Dma Specification - Lock Dma Region [d]

AX = 8103h
DX = flags (see #2891)
ES:DI -> DMA descriptor structure (see #2892,#2893,#2894)

Return: CF clear if successful
DDS physical address field filled in
DDS buffer ID field filled (0000h if no buffer allocated)
CF set on error
AL = error code (see #2889)
DDS region size field filled wth maximum contiguous length in bytes
BUGS: Windows 3.0 does not correctly support automatic remapping or copying
in enhanced mode
Windows 3.0 in enhanced mode does not return a correct code on error

See Also: AX=8104h,AX=8105h

Bitfields for VDS flags:
Bit(s) Description (Table 2891)
0 reserved (zero)
1 data should be copied into buffer (ignored if 2 set)
2 buffer should not be allocated if region noncontiguous or crosses
physical alignment boundary specified by 4-5
3 don't attempt automatic remap
4 region must not cross 64K physical alignment boundary
5 region must not cross 128K physical alignment boundary
6-15 reserved (zero)

Format of DMA descriptor structure (DDS):
Offset Size Description (Table 2892)
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD buffer ID
0Ch DWORD physical address

Format of Extended DMA descriptor structure (EDDS):
Offset Size Description (Table 2893)
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD region 0 physical address
14h DWORD region 0 size in bytes
18h DWORD region 1 physical address
1Ch DWORD region 1 size in bytes
...

Format of Extended DMA descriptor structure (EDDS) with page table entries:
Offset Size Description (Table 2894)
00h DWORD region size
04h DWORD offset
08h WORD segment/selector
0Ah WORD reserved
0Ch WORD number available
0Eh WORD number used
10h DWORD page table entry 0 (same as 80386 page table entry)
14h DWORD page table entry 1
...

Note: bits 1-11 of the page table entries should be zero; bit 0 set if page
is present and locked