VDMAD_Scatter_Lock

include vdmad.inc

mov ebx, VMHandle
mov al, Flags
mov edi, OFFSET32 DDS
VxDcall VDMAD_Scatter_Lock
jc ErrorHandler
 

Attempts to lock all pages mapped to a DMA region and returns the addresses of those pages. Uses EDX, ESI, flags.

VMHandle
Handle of the virtual machine.
Flags
Operation flags. The parameter can be one of the following values:
0 Fills the DDS table with physical addresses and sizes of the physical regions that make up the DMA region.
1 Fills the DDS table with the actual page table entries.
2 Prevents not-present pages from being locked. This value is ignored if bit 0 is not set.

DDS
Address of the extended DDS (DMA Descriptor Structure) to receive the information.

Upon returning, the EDX register contains the number of table entries needed to describe whole region, and the DDS_size field specifies the number of bytes locked. If the request was for page table copy (AL set to 1 or 3), then The ESI register contains an offset into first page for start of the region.